{"version":3,"file":"app716c36e1bb197c150334.js?3.11.5.0f839ec2e.1741817639695","mappings":"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AO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KAAO,uBAAuB,KA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","sources":["webpack://mono-repo/./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack://mono-repo/./node_modules/@fortawesome/pro-solid-svg-icons/index.es.js","webpack://mono-repo/./node_modules/ajv/lib/ajv.js","webpack://mono-repo/./node_modules/ajv/lib/cache.js","webpack://mono-repo/./node_modules/ajv/lib/compile/async.js","webpack://mono-repo/./node_modules/ajv/lib/compile/error_classes.js","webpack://mono-repo/./node_modules/ajv/lib/compile/formats.js","webpack://mono-repo/./node_modules/ajv/lib/compile/index.js","webpack://mono-repo/./node_modules/ajv/lib/compile/resolve.js","webpack://mono-repo/./node_modules/ajv/lib/compile/rules.js","webpack://mono-repo/./node_modules/ajv/lib/compile/schema_obj.js","webpack://mono-repo/./node_modules/ajv/lib/compile/ucs2length.js","webpack://mono-repo/./node_modules/ajv/lib/compile/util.js","webpack://mono-repo/./node_modules/ajv/lib/data.js","webpack://mono-repo/./node_modules/ajv/lib/definition_schema.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/_limit.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/_limitItems.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/_limitLength.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/_limitProperties.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/allOf.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/anyOf.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/comment.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/const.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/contains.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/custom.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/dependencies.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/enum.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/format.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/if.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/index.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/items.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/multipleOf.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/not.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/oneOf.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/pattern.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/properties.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/propertyNames.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/ref.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/required.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/uniqueItems.js","webpack://mono-repo/./node_modules/ajv/lib/dotjs/validate.js","webpack://mono-repo/./node_modules/ajv/lib/keyword.js","webpack://mono-repo/./node_modules/axios/index.js","webpack://mono-repo/./node_modules/axios/lib/adapters/xhr.js","webpack://mono-repo/./node_modules/axios/lib/axios.js","webpack://mono-repo/./node_modules/axios/lib/cancel/Cancel.js","webpack://mono-repo/./node_modules/axios/lib/cancel/CancelToken.js","webpack://mono-repo/./node_modules/axios/lib/cancel/isCancel.js","webpack://mono-repo/./node_modules/axios/lib/core/Axios.js","webpack://mono-repo/./node_modules/axios/lib/core/InterceptorManager.js","webpack://mono-repo/./node_modules/axios/lib/core/buildFullPath.js","webpack://mono-repo/./node_modules/axios/lib/core/createError.js","webpack://mono-repo/./node_modules/axios/lib/core/dispatchRequest.js","webpack://mono-repo/./node_modules/axios/lib/core/enhanceError.js","webpack://mono-repo/./node_modules/axios/lib/core/mergeConfig.js","webpack://mono-repo/./node_modules/axios/lib/core/settle.js","webpack://mono-repo/./node_modules/axios/lib/core/transformData.js","webpack://mono-repo/./node_modules/axios/lib/defaults.js","webpack://mono-repo/./node_modules/axios/lib/env/data.js","webpack://mono-repo/./node_modules/axios/lib/helpers/bind.js","webpack://mono-repo/./node_modules/axios/lib/helpers/buildURL.js","webpack://mono-repo/./node_modules/axios/lib/helpers/combineURLs.js","webpack://mono-repo/./node_modules/axios/lib/helpers/cookies.js","webpack://mono-repo/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://mono-repo/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://mono-repo/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://mono-repo/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://mono-repo/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://mono-repo/./node_modules/axios/lib/helpers/spread.js","webpack://mono-repo/./node_modules/axios/lib/helpers/validator.js","webpack://mono-repo/./node_modules/axios/lib/utils.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://mono-repo/./node_modules/date-fns/esm/isValid/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://mono-repo/./node_modules/date-fns/esm/format/index.js","webpack://mono-repo/./node_modules/date-fns/esm/isBefore/index.js","webpack://mono-repo/./node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://mono-repo/./node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://mono-repo/./node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://mono-repo/./node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://mono-repo/./node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://mono-repo/./node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://mono-repo/./node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://mono-repo/./node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://mono-repo/./node_modules/date-fns/esm/locale/en-US/index.js","webpack://mono-repo/./node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/assign/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/setUTCDay/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/setUTCISODay/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","webpack://mono-repo/./node_modules/date-fns/esm/_lib/setUTCWeek/index.js","webpack://mono-repo/./node_modules/date-fns/esm/parse/_lib/parsers/index.js","webpack://mono-repo/./node_modules/date-fns/esm/parse/index.js","webpack://mono-repo/./node_modules/date-fns/esm/parseISO/index.js","webpack://mono-repo/./node_modules/date-fns/esm/addMilliseconds/index.js","webpack://mono-repo/./node_modules/date-fns/esm/subMilliseconds/index.js","webpack://mono-repo/./node_modules/date-fns/esm/toDate/index.js","webpack://mono-repo/./node_modules/jquery/dist/jquery-exposed.js","webpack://mono-repo/./src/js/lib/backbone-exposed.js","webpack://mono-repo/./src/js/lib/modernizr/modernizr-exposed.js","webpack://mono-repo/./src/js/lib/underscore-exposed.js","webpack://mono-repo/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://mono-repo/./node_modules/fast-deep-equal/index.js","webpack://mono-repo/./node_modules/fast-json-stable-stringify/index.js","webpack://mono-repo/./node_modules/global/document.js","webpack://mono-repo/./node_modules/global/window.js","webpack://mono-repo/./node_modules/hammerjs/hammer.js","webpack://mono-repo/./node_modules/jquery-i18next/dist/commonjs/index.js","webpack://mono-repo/./node_modules/jquery-i18next/index.js","webpack://mono-repo/./node_modules/jquery/dist/jquery.js","webpack://mono-repo/./node_modules/json-schema-traverse/index.js","webpack://mono-repo/./node_modules/locallyjs/dist/locally.js","webpack://mono-repo/./node_modules/lz-string/libs/lz-string.js","webpack://mono-repo/./node_modules/moment/locale/de-at.js","webpack://mono-repo/./node_modules/moment/locale/de-ch.js","webpack://mono-repo/./node_modules/moment/locale/de.js","webpack://mono-repo/./node_modules/moment/locale/en-au.js","webpack://mono-repo/./node_modules/moment/locale/en-ca.js","webpack://mono-repo/./node_modules/moment/locale/en-gb.js","webpack://mono-repo/./node_modules/moment/locale/en-ie.js","webpack://mono-repo/./node_modules/moment/locale/en-il.js","webpack://mono-repo/./node_modules/moment/locale/en-in.js","webpack://mono-repo/./node_modules/moment/locale/en-nz.js","webpack://mono-repo/./node_modules/moment/locale/en-sg.js","webpack://mono-repo/./node_modules/moment/locale/es-do.js","webpack://mono-repo/./node_modules/moment/locale/es-mx.js","webpack://mono-repo/./node_modules/moment/locale/es-us.js","webpack://mono-repo/./node_modules/moment/locale/es.js","webpack://mono-repo/./node_modules/moment/locale/fr-ca.js","webpack://mono-repo/./node_modules/moment/locale/fr-ch.js","webpack://mono-repo/./node_modules/moment/locale/fr.js","webpack://mono-repo/./node_modules/moment/locale/gom-deva.js","webpack://mono-repo/./node_modules/moment/locale/ja.js","webpack://mono-repo/./node_modules/moment/locale/ ./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://mono-repo/./node_modules/moment/moment.js","webpack://mono-repo/./node_modules/ms/index.js","webpack://mono-repo/./node_modules/react/cjs/react.production.min.js","webpack://mono-repo/./node_modules/react/index.js","webpack://mono-repo/./packages/core-app/src/config.ts","webpack://mono-repo/./build-targets/portal/packages/core-app/src/config.ts","webpack://mono-repo/./packages/core-asset/src/collections/assets.js","webpack://mono-repo/./build-targets/portal/packages/core-asset/src/collections/assets.js","webpack://mono-repo/./packages/core-asset/src/config.js","webpack://mono-repo/./build-targets/portal/packages/core-asset/src/config.js","webpack://mono-repo/./packages/core-auth/src/config.js","webpack://mono-repo/./build-targets/portal/packages/core-auth/src/config.js","webpack://mono-repo/./packages/core-cart/src/collections/cartAssets.js","webpack://mono-repo/./build-targets/portal/packages/core-cart/src/collections/cartAssets.js","webpack://mono-repo/./packages/core-cart/src/config.js","webpack://mono-repo/./build-targets/portal/packages/core-cart/src/config.js","webpack://mono-repo/./packages/core-category/src/collections/categories.js","webpack://mono-repo/./build-targets/portal/packages/core-category/src/collections/categories.js","webpack://mono-repo/./packages/core-category/src/config.js","webpack://mono-repo/./build-targets/portal/packages/core-category/src/config.js","webpack://mono-repo/./packages/core-category/src/models/categoryDetailsData.js","webpack://mono-repo/./packages/core-asset/src/models/attributeProfileAttribute.js","webpack://mono-repo/./packages/core-asset/src/collections/attributeProfileAttributes.js","webpack://mono-repo/./packages/core-asset/src/models/attributeProfile.js","webpack://mono-repo/./packages/core-attribute-profile/src/constants.ts","webpack://mono-repo/./packages/core-attribute-profile/src/locales.ts","webpack://mono-repo/./packages/core-attribute-profile/src/actions/constants.ts","webpack://mono-repo/./packages/core-asset/src/collections/attributeProfiles.js","webpack://mono-repo/./packages/core-category/src/models/category.js","webpack://mono-repo/./build-targets/portal/packages/core-category/src/models/category.js","webpack://mono-repo/./packages/core-cms/src/config.js","webpack://mono-repo/./build-targets/portal/packages/core-cms/src/config.js","webpack://mono-repo/./packages/core-cms/src/models/CMSAction.js","webpack://mono-repo/./build-targets/portal/packages/core-cms/src/models/CMSAction.js","webpack://mono-repo/./packages/core-cms/src/models/CMSBlock.js","webpack://mono-repo/./build-targets/portal/packages/core-cms/src/models/CMSBlock.js","webpack://mono-repo/./packages/core-cms/src/models/CMSPage.js","webpack://mono-repo/./build-targets/portal/packages/core-cms/src/models/CMSPage.js","webpack://mono-repo/./packages/core-next/src/config.ts","webpack://mono-repo/./build-targets/portal/packages/core-next/src/config.ts","webpack://mono-repo/./packages/core/src/lib/netx-enablers.js","webpack://mono-repo/./packages/core-app-next/src/utils/getPublicProperty.ts","webpack://mono-repo/./packages/core-app/src/collections/batchJobs.js","webpack://mono-repo/./packages/core-app/src/collections/singleton/batchJobs.ts","webpack://mono-repo/./packages/core-app/src/collections/labelValues.js","webpack://mono-repo/./packages/core-app/src/collections/publicProperties.js","webpack://mono-repo/./packages/core-app/src/collections/singleton/publicProperties.ts","webpack://mono-repo/./packages/core-app/src/models/socket.js","webpack://mono-repo/./packages/core-app/src/collections/singleton/websocket.ts","webpack://mono-repo/./packages/core-app/src/models/batchJob.js","webpack://mono-repo/./packages/core-app/src/models/labelValue.js","webpack://mono-repo/./packages/core-app/src/models/pager.js","webpack://mono-repo/./packages/core-app/src/models/progress.js","webpack://mono-repo/./packages/core-app/src/models/sorter.js","webpack://mono-repo/./packages/core-app/src/properties/autocomplete.ts","webpack://mono-repo/./packages/core-asset-expiration/src/constants.ts","webpack://mono-repo/./packages/core-asset-expiration/src/enablers/assetExpirationEnabled.ts","webpack://mono-repo/./packages/core-asset-expiration/src/enablers/canExpireAsset.ts","webpack://mono-repo/./packages/core-asset-expiration/src/enablers/canModifyAssetExpiration.ts","webpack://mono-repo/./packages/core-asset-expiration/src/enablers/canUnexpireAsset.ts","webpack://mono-repo/./packages/core-asset-expiration/src/utils/assetExpirationToDateString.ts","webpack://mono-repo/./packages/core-asset-expiration/src/utils/assetExpires.ts","webpack://mono-repo/./packages/core-asset-expiration/src/utils/userInputToExpirationTime.ts","webpack://mono-repo/./packages/core-asset-next/src/constants.ts","webpack://mono-repo/./packages/core-asset-next/src/defaults.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/assetIsPresent.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canResyncAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canZoomAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/assetNotCheckedOut.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canCheckin.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canCheckout.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canCreateShareLinkFromAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canCreateEmbedLinkFromAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canCreatePdfFromAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canDeleteAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canDownloadAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canLockAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canOrganizeAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canPublishAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canReimportAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/canUnlockAsset.ts","webpack://mono-repo/./packages/core-asset-next/src/enablers/checksumEnabled.ts","webpack://mono-repo/./packages/core-asset-next/src/schema/asset/assetSchema.ts","webpack://mono-repo/./packages/core-asset-next/src/schema/assetAutoListItem/assetAutoListItemSchema.ts","webpack://mono-repo/./packages/core-asset-next/src/schema/assetTask/assetTaskSchema.ts","webpack://mono-repo/./packages/core-asset-project/src/constants.ts","webpack://mono-repo/./packages/core-asset-project/src/enablers.ts","webpack://mono-repo/./packages/core-asset-version/src/actions/constants.ts","webpack://mono-repo/./packages/core-asset-views/src/api/getViewObjectsForAsset.ts","webpack://mono-repo/./packages/core-asset-views/src/api/setViewData.ts","webpack://mono-repo/./packages/core-asset-views/src/api/react-query/getViewObjectsForAsset.ts","webpack://mono-repo/./packages/core-asset-views/src/schema/assetViews/assetViewsSchema.ts","webpack://mono-repo/./packages/core-asset-views/src/utils/getViewPath.ts","webpack://mono-repo/./packages/core-asset/src/collections/attributeDatum.js","webpack://mono-repo/./packages/core-asset/src/models/assetAttributeData.js","webpack://mono-repo/./packages/core-asset/src/collections/assetAttributeDatum.js","webpack://mono-repo/./packages/core-asset/src/models/attribute_date.js","webpack://mono-repo/./packages/core-asset/src/models/attribute_number.js","webpack://mono-repo/./packages/core-asset/src/models/attribute_select.js","webpack://mono-repo/./packages/core-asset/src/models/attribute_tag.js","webpack://mono-repo/./packages/core-asset/src/models/attribute_semantic.js","webpack://mono-repo/./packages/core-asset/src/models/attribute_text.js","webpack://mono-repo/./packages/core-asset/src/models/attribute_textarea.js","webpack://mono-repo/./packages/core-asset/src/collections/attributes.js","webpack://mono-repo/./packages/core-asset/src/models/pendingAsset.js","webpack://mono-repo/./packages/core-asset/src/collections/pendingAssets.js","webpack://mono-repo/./packages/core-asset/src/collections/singleton/pendingAssets.ts","webpack://mono-repo/./packages/core-asset/src/constants.ts","webpack://mono-repo/./packages/core-asset/src/collections/assetConstituents_.js","webpack://mono-repo/./packages/core-asset/src/collections/assetConstituents_clips.js","webpack://mono-repo/./packages/core-asset/src/models/assetConstituent_keyframe.js","webpack://mono-repo/./packages/core-asset/src/collections/assetConstituents_keyframes.js","webpack://mono-repo/./packages/core-asset/src/models/assetConstituent_layer.js","webpack://mono-repo/./packages/core-asset/src/collections/assetConstituents_layers.js","webpack://mono-repo/./packages/core-asset/src/models/assetConstituent_page.js","webpack://mono-repo/./packages/core-asset/src/collections/assetConstituents_pages.js","webpack://mono-repo/./packages/core-asset/src/collections/assetConstituents.js","webpack://mono-repo/./packages/core-asset/src/models/asset.js","webpack://mono-repo/./packages/core-asset/src/models/assetConstituent.js","webpack://mono-repo/./packages/core-asset/src/models/assetConstituent_clip.js","webpack://mono-repo/./packages/core-asset/src/models/assetSet.js","webpack://mono-repo/./packages/core-asset/src/models/assetVersion.js","webpack://mono-repo/./packages/core-asset/src/models/attribute.js","webpack://mono-repo/./packages/core-asset/src/models/attributeData.js","webpack://mono-repo/./packages/core-asset/src/properties/asset.js","webpack://mono-repo/./packages/core-asset/src/properties/assetSets.js","webpack://mono-repo/./packages/core-asset/src/properties/attributes.js","webpack://mono-repo/./packages/core-asset/src/utils/assetHasAudio.ts","webpack://mono-repo/./packages/core-asset/src/utils/assetHasPdf.ts","webpack://mono-repo/./packages/core-asset/src/utils/assetHasVideo.ts","webpack://mono-repo/./packages/core-asset/src/utils/assetIsPresent.ts","webpack://mono-repo/./packages/core-asset/src/utils/getAssetFileSizeLabel.ts","webpack://mono-repo/./packages/core-asset/src/utils/createAssetObject.ts","webpack://mono-repo/./packages/core-asset/src/utils/isDocumentFileTypeAsset.ts","webpack://mono-repo/./packages/core-asset/src/utils/isImageFileTypeAsset.ts","webpack://mono-repo/./packages/core-asset/src/utils/isVideoFileTypeAsset.ts","webpack://mono-repo/./packages/core-asset/src/utils/getGeneralAssetFileType.ts","webpack://mono-repo/./packages/core-asset/src/utils/getDocumentFileTypeAssetInfoLabel.ts","webpack://mono-repo/./packages/core-asset/src/utils/getMediaFileTypeAssetInfoLabel.ts","webpack://mono-repo/./packages/core-asset/src/utils/getImageFileTypeAssetInfoLabel.ts","webpack://mono-repo/./packages/core-asset/src/utils/getAssetFileTypeInfoLabel.ts","webpack://mono-repo/./packages/core-asset/src/utils/isDefaultIcon.ts","webpack://mono-repo/./packages/core-asset/src/utils/routeToAsset.ts","webpack://mono-repo/./packages/core-asset/src/utils/isAssetCheckedOut.ts","webpack://mono-repo/./packages/core-asset/src/utils/isMediaFileTypeAsset.ts","webpack://mono-repo/./packages/core-attribute-history/src/constants.ts","webpack://mono-repo/./packages/core-attribute-history/src/enablers/attributeHistoryEnabled.ts","webpack://mono-repo/./packages/core-attribute-history/src/enablers/canViewAttributeHistory.ts","webpack://mono-repo/./packages/core-attribute-smart-labels/src/enablers.ts","webpack://mono-repo/./packages/core-attribute/src/constants.ts","webpack://mono-repo/./packages/core-attribute/src/locales.ts","webpack://mono-repo/./packages/core-attribute/src/singletons/attributeTemplates.ts","webpack://mono-repo/./packages/core-attribute/src/utils/getLabel.ts","webpack://mono-repo/./packages/core-attribute/src/utils/getTypeLabel.ts","webpack://mono-repo/./packages/core-attribute/src/utils/getTypeName.ts","webpack://mono-repo/./packages/core-auth/src/models/samlService.js","webpack://mono-repo/./packages/core-auth/src/collections/samlServices.js","webpack://mono-repo/./packages/core/src/lib/netx-session.js","webpack://mono-repo/./build-targets/portal/packages/core/src/lib/netx-session.js","webpack://mono-repo/./packages/core-auth/src/collections/singleton/session.ts","webpack://mono-repo/./packages/core-cart/src/collections/savedCarts.js","webpack://mono-repo/./packages/core-cart/src/models/savedCart.js","webpack://mono-repo/./packages/core-cart/src/properties/cartAssetArchive.js","webpack://mono-repo/./packages/core-cart/src/singletons/savedCarts.ts","webpack://mono-repo/./packages/core-category/src/collections/categoryAssets.js","webpack://mono-repo/./packages/core-category/src/collections/categoryTreeNodes.js","webpack://mono-repo/./packages/core-cms-next/src/defaults.ts","webpack://mono-repo/./packages/core-cms-next/src/schema/brandPortalAction/brandPortalActionSchema.ts","webpack://mono-repo/./packages/core-cms-next/src/schema/brandPortal/brandPortalSchema.ts","webpack://mono-repo/./packages/core-cms-next/src/schema/brandPortal/brandPortalSort.ts","webpack://mono-repo/./packages/core-cms-next/src/schema/brandPortalMenu/brandPortalMenuSchema.ts","webpack://mono-repo/./packages/core-cms-next/src/schema/brandPortal/brandPortalFilter.ts","webpack://mono-repo/./packages/core-cms-next/src/schema/brandPortalPage/brandPortalPageSchema.ts","webpack://mono-repo/./packages/core-cms-next/src/schema/brandPortalPageAutoListItem/brandPortalPageAutoListItemSchema.ts","webpack://mono-repo/./packages/core-cms-next/src/utils/getCurrentPortal.ts","webpack://mono-repo/./packages/core-cms-next/src/utils/getCurrentPortalProp.ts","webpack://mono-repo/./packages/core-cms-next/src/utils/getPortalNameFromUrl.ts","webpack://mono-repo/./packages/core-cms-next/src/utils/isBrandPortal.ts","webpack://mono-repo/./packages/core-cms/src/collections/CMSBlocks.js","webpack://mono-repo/./packages/core-cms/src/models/CMSMenu.js","webpack://mono-repo/./packages/core-cms/src/properties/cms.js","webpack://mono-repo/./packages/core-cms/src/services/settings/constants.ts","webpack://mono-repo/./node_modules/tinycolor2/esm/tinycolor.js","webpack://mono-repo/./build-targets/portal/packages/core-cms/src/models/CMSPortal.js","webpack://mono-repo/./packages/core-cms/src/singletons/currentPortal.ts","webpack://mono-repo/./packages/core-cms/src/collections/CMSActions.js","webpack://mono-repo/./packages/core-cms/src/singletons/currentPortalActions.ts","webpack://mono-repo/./packages/core-cms/src/collections/CMSMenus.js","webpack://mono-repo/./packages/core-cms/src/singletons/currentPortalMenus.ts","webpack://mono-repo/./packages/core-cms/src/collections/CMSPages.js","webpack://mono-repo/./packages/core-cms/src/singletons/currentPortalPages.ts","webpack://mono-repo/./packages/core-cms/src/singletons/currentPortalPage.ts","webpack://mono-repo/./packages/core-components/Theme/constants.ts","webpack://mono-repo/./packages/core-components/Theme/utils/getBrowserPreferedThemeMode.ts","webpack://mono-repo/./packages/core-components/Theme/utils/netxThemeModeToThemeMode.ts","webpack://mono-repo/./packages/core-constituents/src/constants.ts","webpack://mono-repo/./packages/core-constituents/src/enablers/consituentClipsEnabled.ts","webpack://mono-repo/./packages/core-next/src/instance/dispatcher.ts","webpack://mono-repo/./packages/core-next/src/instance/localStore.ts","webpack://mono-repo/./node_modules/tslog/dist/esm/prettyLogStyles.js","webpack://mono-repo/./node_modules/tslog/dist/esm/formatTemplate.js","webpack://mono-repo/./node_modules/tslog/dist/esm/formatNumberAddZeros.js","webpack://mono-repo/./node_modules/tslog/dist/esm/urlToObj.js","webpack://mono-repo/./node_modules/tslog/dist/esm/runtime/browser/helper.jsonStringifyRecursive.js","webpack://mono-repo/./node_modules/tslog/dist/esm/runtime/browser/util.inspect.polyfil.js","webpack://mono-repo/./node_modules/tslog/dist/esm/runtime/browser/index.js","webpack://mono-repo/./node_modules/tslog/dist/esm/BaseLogger.js","webpack://mono-repo/./node_modules/tslog/dist/esm/index.js","webpack://mono-repo/./packages/core-next/src/instance/logger.ts","webpack://mono-repo/./packages/core-next/src/instance/router.ts","webpack://mono-repo/./packages/core-next/src/lib/queryClient.ts","webpack://mono-repo/./packages/core-next/src/locales/constants.ts","webpack://mono-repo/./packages/core-next/src/locales/i18n.ts","webpack://mono-repo/./node_modules/i18next/dist/esm/i18next.js","webpack://mono-repo/./node_modules/i18next-xhr-backend/dist/esm/i18nextXHRBackend.js","webpack://mono-repo/./node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","webpack://mono-repo/./packages/core-next/src/locales/backend.ts","webpack://mono-repo/./packages/core-next/src/locales/locales.ts","webpack://mono-repo/./packages/core-next/src/locales/utils/getAvailableLocales.ts","webpack://mono-repo/./packages/core-next/src/locales/utils/i18nLocaleCompare.ts","webpack://mono-repo/./packages/core-next/src/locales/utils/Locales.ts","webpack://mono-repo/./packages/core-next/src/schema/common/labelValueSchema.ts","webpack://mono-repo/./packages/core-next/src/schema/common/progressReportSchema.ts","webpack://mono-repo/./packages/core-next/src/schema/constants.ts","webpack://mono-repo/./packages/core-next/src/schema/locales.ts","webpack://mono-repo/./packages/core-next/src/schema/refiners/url.ts","webpack://mono-repo/./packages/core-next/src/schema/utils/createZodLiterals.ts","webpack://mono-repo/./packages/core-next/src/schema/utils/editEffectsSortOrder.ts","webpack://mono-repo/./packages/core/src/utils/caseInsensitiveStringIncludes.ts","webpack://mono-repo/./packages/core-next/src/schema/utils/editRemovesFromFilter.ts","webpack://mono-repo/./packages/core-next/src/schema/utils/getDefaultFilters.ts","webpack://mono-repo/./packages/core-next/src/schema/utils/getSortField.ts","webpack://mono-repo/./packages/core-next/src/schema/utils/getSortOrder.ts","webpack://mono-repo/./packages/core-next/src/schema/utils/makeOptionalPropsNullable.ts","webpack://mono-repo/./packages/core-next/src/schema/utils/stringToJSONSchema.ts","webpack://mono-repo/./packages/core-next/src/url.ts","webpack://mono-repo/./packages/core-next/src/utils/actions/actionsToOrderedActions.ts","webpack://mono-repo/./packages/core-next/src/utils/actions/performLegacyAction.ts","webpack://mono-repo/./packages/core-next/src/utils/api/getResponseResults.ts","webpack://mono-repo/./packages/core-next/src/utils/array/arrayToCsv.ts","webpack://mono-repo/./packages/core-next/src/utils/array/csvToArray.ts","webpack://mono-repo/./packages/core-next/src/utils/browser/preventDefault.ts","webpack://mono-repo/./packages/core-next/src/utils/browser/stopPropagation.ts","webpack://mono-repo/./packages/core-next/src/utils/browser/silenceEvent.ts","webpack://mono-repo/./packages/core-next/src/utils/browser/simulateClickBody.ts","webpack://mono-repo/./packages/core-next/src/utils/browser/spawnNewWindow.ts","webpack://mono-repo/./packages/core-next/src/utils/browser/isFirefox.ts","webpack://mono-repo/./packages/core-next/src/utils/browser/isMobile.ts","webpack://mono-repo/./packages/core-next/src/utils/browser/isSafari.ts","webpack://mono-repo/./packages/core-next/src/utils/browser/openDownloadLink.ts","webpack://mono-repo/./packages/core-next/src/utils/enum/enumToObject.ts","webpack://mono-repo/./packages/core-next/src/utils/enum/enumToValues.ts","webpack://mono-repo/./packages/core-next/src/utils/object/typedEntries.ts","webpack://mono-repo/./packages/core-next/src/utils/setGlobal.ts","webpack://mono-repo/./packages/core-next/src/utils/time/isDateInThePast.ts","webpack://mono-repo/./packages/core-next/src/utils/time/secondsToHms.ts","webpack://mono-repo/./packages/core-next/src/utils/time/timeToPTFormat.ts","webpack://mono-repo/./packages/core-permissions/src/collections/participants.js","webpack://mono-repo/./packages/core-permissions/src/constants.ts","webpack://mono-repo/./packages/core-permissions/src/models/participant.js","webpack://mono-repo/./packages/core-permissions/src/models/permission.js","webpack://mono-repo/./packages/core-permissions/src/models/permissionParticipant.js","webpack://mono-repo/./packages/core-permissions/src/collections/permissionsParticipants.js","webpack://mono-repo/./packages/core-permissions/src/collections/permissions.js","webpack://mono-repo/./packages/core-permissions/src/models/permissionResource.js","webpack://mono-repo/./packages/core-permissions/src/properties/assetPermissions.ts","webpack://mono-repo/./packages/core-permissions/src/properties/permissions.ts","webpack://mono-repo/./packages/core-permissions/src/schema/permissionMatrixSchema.ts","webpack://mono-repo/./packages/core-permissions/src/utils/allows.ts","webpack://mono-repo/./packages/core-search/src/collections/searchRules.js","webpack://mono-repo/./packages/core-search/src/models/searchRule_asset.js","webpack://mono-repo/./packages/core-search/src/models/searchFacetOption.js","webpack://mono-repo/./packages/core-search/src/collections/searchFacetOptions.js","webpack://mono-repo/./packages/core-search/src/models/searchFacet.js","webpack://mono-repo/./packages/core-search/src/collections/searchFacetsSelected.js","webpack://mono-repo/./packages/core-search/src/collections/searchFacets.js","webpack://mono-repo/./build-targets/portal/packages/core-search/src/collections/searchFacets.js","webpack://mono-repo/./packages/core-search/src/collections/searchRules_assets.js","webpack://mono-repo/./packages/core-search/src/collections/savedSearches.js","webpack://mono-repo/./packages/core-search/src/collections/singleton/savedSearch.ts","webpack://mono-repo/./packages/core-search/src/models/savedSearch.js","webpack://mono-repo/./packages/core-search/src/models/searchRule.js","webpack://mono-repo/./packages/core-search/src/properties/search.js","webpack://mono-repo/./packages/core-share-media-service/src/constants.ts","webpack://mono-repo/./packages/core-share-media-service/src/enablers/mediaServiceIsAuthenticated.ts","webpack://mono-repo/./packages/core-share-media-service/src/enablers/mediaServicesAvailable.ts","webpack://mono-repo/./packages/core-share/src/models/downloadOption.js","webpack://mono-repo/./packages/core-share/src/collections/downloadOptions.js","webpack://mono-repo/./packages/core-share/src/collections/sharedResources.js","webpack://mono-repo/./packages/core-share/src/models/shareable.js","webpack://mono-repo/./packages/core-share/src/models/sharedResource.js","webpack://mono-repo/./packages/core-share/src/properties/downloadOptions.js","webpack://mono-repo/./packages/core-user-next/src/constants.ts","webpack://mono-repo/./packages/core-user-next/src/utils/currentUserMeetsUserLevel.ts","webpack://mono-repo/./packages/core-user-next/src/utils/getPreference.ts","webpack://mono-repo/./packages/core-user-next/src/utils/getUserLevel.ts","webpack://mono-repo/./packages/core-user-next/src/utils/getUserId.ts","webpack://mono-repo/./packages/core-user-next/src/utils/isPublicUser.ts","webpack://mono-repo/./packages/core-user-next/src/utils/setPreference.ts","webpack://mono-repo/./packages/core-user/src/models/group.js","webpack://mono-repo/./packages/core-user/src/collections/groups.js","webpack://mono-repo/./packages/core-next/src/utils/object/deepObjectExtend.ts","webpack://mono-repo/./packages/core-user/src/models/userPrefs.js","webpack://mono-repo/./packages/core-user/src/collections/singletons/userPreferences.ts","webpack://mono-repo/./packages/core-user/src/collections/singletons/userProfile.ts","webpack://mono-repo/./packages/core-user/src/collections/users.js","webpack://mono-repo/./packages/core-user/src/constants.ts","webpack://mono-repo/./packages/core-user/src/models/userProfile.js","webpack://mono-repo/./packages/core-user/src/properties/user.js","webpack://mono-repo/./packages/core/src/lib/backbone-netx.js","webpack://mono-repo/./packages/core/src/lib/jquery-netx.js","webpack://mono-repo/./packages/core/src/bootstrap.js","webpack://mono-repo/./packages/core/src/css.ts","webpack://mono-repo/./packages/core/src/legacyActionManager.ts","webpack://mono-repo/./packages/core/src/lib/netx-collection.js","webpack://mono-repo/./packages/core/src/lib/netx-menu.js","webpack://mono-repo/./packages/core/src/utils/protectObjectProxy.ts","webpack://mono-repo/./packages/core/src/lib/netx-model.js","webpack://mono-repo/./packages/core/src/lib/netx-moment.ts","webpack://mono-repo/./packages/core/src/lib/netx-routers-app.js","webpack://mono-repo/./packages/core/src/lib/underscore-netx.js","webpack://mono-repo/./packages/core/src/lib/utils.ts","webpack://mono-repo/./packages/core/src/utils/escapeURI.ts","webpack://mono-repo/./packages/core/src/utils/normalizeFileType.ts","webpack://mono-repo/./packages/core/src/utils/getGenericIconUrl.ts","webpack://mono-repo/./packages/core/src/utils/dateToHtml.ts","webpack://mono-repo/./packages/core/src/utils/getIsoLongDateFromIsoShortDate.ts","webpack://mono-repo/./packages/core/src/utils/getIsoShortDateFromIsoLongDate.ts","webpack://mono-repo/./packages/core/src/utils/getNormalizedHexColor.ts","webpack://mono-repo/./packages/core/src/utils/registerBackboneEvent.ts","webpack://mono-repo/./packages/core/src/utils/isEmptyValue.ts","webpack://mono-repo/./packages/core/src/utils/purgeEls.ts","webpack://mono-repo/./packages/core/src/utils/randomChars.ts","webpack://mono-repo/./packages/core/src/utils/unescapeAttributeName.ts","webpack://mono-repo/./packages/core/src/utils/unescapeURI.ts","webpack://mono-repo/./node_modules/uri-js/dist/es5/uri.all.js","webpack://mono-repo/./node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","webpack://mono-repo/./node_modules/use-sync-external-store/shim/index.js","webpack://mono-repo/./src/js/lib/backbone.js","webpack://mono-repo/./src/js/lib/backbone.rpc.js","webpack://mono-repo/./src/js/lib/base64.js","webpack://mono-repo/./src/js/lib/modernizr/modernizr.js","webpack://mono-repo/./src/js/lib/polyfills/polyfills-netx.js","webpack://mono-repo/./src/js/lib/underscore.js","webpack://mono-repo/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://mono-repo/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://mono-repo/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://mono-repo/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://mono-repo/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://mono-repo/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/focusManager.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/infiniteQueryBehavior.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/logger.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/mutation.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/notifyManager.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/onlineManager.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/query.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/queryCache.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/mutationCache.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/queryClient.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/queryObserver.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/removable.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/retryer.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/subscribable.mjs","webpack://mono-repo/./node_modules/@tanstack/query-core/build/lib/utils.mjs","webpack://mono-repo/./node_modules/@tanstack/react-query/build/lib/QueryClientProvider.mjs","webpack://mono-repo/./node_modules/@tanstack/react-query/build/lib/QueryErrorResetBoundary.mjs","webpack://mono-repo/./node_modules/@tanstack/react-query/build/lib/isRestoring.mjs","webpack://mono-repo/./node_modules/@tanstack/react-query/build/lib/errorBoundaryUtils.mjs","webpack://mono-repo/./node_modules/@tanstack/react-query/build/lib/suspense.mjs","webpack://mono-repo/./node_modules/@tanstack/react-query/build/lib/useBaseQuery.mjs","webpack://mono-repo/./node_modules/@tanstack/react-query/build/lib/useQuery.mjs","webpack://mono-repo/./node_modules/@tanstack/react-query/build/lib/useSyncExternalStore.mjs","webpack://mono-repo/./node_modules/@tanstack/react-query/build/lib/utils.mjs","webpack://mono-repo/./node_modules/zod/lib/index.mjs","webpack://mono-repo/webpack/bootstrap","webpack://mono-repo/webpack/runtime/amd options","webpack://mono-repo/webpack/runtime/compat get default export","webpack://mono-repo/webpack/runtime/create fake namespace object","webpack://mono-repo/webpack/runtime/define property getters","webpack://mono-repo/webpack/runtime/ensure chunk","webpack://mono-repo/webpack/runtime/get javascript chunk filename","webpack://mono-repo/webpack/runtime/get mini-css chunk filename","webpack://mono-repo/webpack/runtime/global","webpack://mono-repo/webpack/runtime/harmony module decorator","webpack://mono-repo/webpack/runtime/hasOwnProperty shorthand","webpack://mono-repo/webpack/runtime/load script","webpack://mono-repo/webpack/runtime/make namespace object","webpack://mono-repo/webpack/runtime/node module decorator","webpack://mono-repo/webpack/runtime/publicPath","webpack://mono-repo/webpack/runtime/css loading","webpack://mono-repo/webpack/runtime/jsonp chunk loading","webpack://mono-repo/webpack/runtime/nonce","webpack://mono-repo/./packages/core/src/app.js"],"sourcesContent":["function _typeof(obj) {\n\tif (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n\t\t_typeof = function (obj) {\n\t\t\treturn typeof obj;\n\t\t};\n\t} else {\n\t\t_typeof = function (obj) {\n\t\t\treturn obj &&\n\t\t\t\ttypeof Symbol === 'function' &&\n\t\t\t\tobj.constructor === Symbol &&\n\t\t\t\tobj !== Symbol.prototype\n\t\t\t\t? 'symbol'\n\t\t\t\t: typeof obj;\n\t\t};\n\t}\n\n\treturn _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n\tif (!(instance instanceof Constructor)) {\n\t\tthrow new TypeError('Cannot call a class as a function');\n\t}\n}\n\nfunction _defineProperties(target, props) {\n\tfor (var i = 0; i < props.length; i++) {\n\t\tvar descriptor = props[i];\n\t\tdescriptor.enumerable = descriptor.enumerable || false;\n\t\tdescriptor.configurable = true;\n\t\tif ('value' in descriptor) descriptor.writable = true;\n\t\tObject.defineProperty(target, descriptor.key, descriptor);\n\t}\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n\tif (protoProps) _defineProperties(Constructor.prototype, protoProps);\n\tif (staticProps) _defineProperties(Constructor, staticProps);\n\treturn Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n\tif (key in obj) {\n\t\tObject.defineProperty(obj, key, {\n\t\t\tvalue: value,\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\twritable: true,\n\t\t});\n\t} else {\n\t\tobj[key] = value;\n\t}\n\n\treturn obj;\n}\n\nfunction _objectSpread(target) {\n\tfor (var i = 1; i < arguments.length; i++) {\n\t\tvar source = arguments[i] != null ? arguments[i] : {};\n\t\tvar ownKeys = Object.keys(source);\n\n\t\tif (typeof Object.getOwnPropertySymbols === 'function') {\n\t\t\townKeys = ownKeys.concat(\n\t\t\t\tObject.getOwnPropertySymbols(source).filter(function (sym) {\n\t\t\t\t\treturn Object.getOwnPropertyDescriptor(source, sym).enumerable;\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\townKeys.forEach(function (key) {\n\t\t\t_defineProperty(target, key, source[key]);\n\t\t});\n\t}\n\n\treturn target;\n}\n\nfunction _slicedToArray(arr, i) {\n\treturn (\n\t\t_arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest()\n\t);\n}\n\nfunction _toConsumableArray(arr) {\n\treturn (\n\t\t_arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread()\n\t);\n}\n\nfunction _arrayWithoutHoles(arr) {\n\tif (Array.isArray(arr)) {\n\t\tfor (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++)\n\t\t\tarr2[i] = arr[i];\n\n\t\treturn arr2;\n\t}\n}\n\nfunction _arrayWithHoles(arr) {\n\tif (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n\tif (\n\t\tSymbol.iterator in Object(iter) ||\n\t\tObject.prototype.toString.call(iter) === '[object Arguments]'\n\t)\n\t\treturn Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n\tvar _arr = [];\n\tvar _n = true;\n\tvar _d = false;\n\tvar _e = undefined;\n\n\ttry {\n\t\tfor (\n\t\t\tvar _i = arr[Symbol.iterator](), _s;\n\t\t\t!(_n = (_s = _i.next()).done);\n\t\t\t_n = true\n\t\t) {\n\t\t\t_arr.push(_s.value);\n\n\t\t\tif (i && _arr.length === i) break;\n\t\t}\n\t} catch (err) {\n\t\t_d = true;\n\t\t_e = err;\n\t} finally {\n\t\ttry {\n\t\t\tif (!_n && _i['return'] != null) _i['return']();\n\t\t} finally {\n\t\t\tif (_d) throw _e;\n\t\t}\n\t}\n\n\treturn _arr;\n}\n\nfunction _nonIterableSpread() {\n\tthrow new TypeError('Invalid attempt to spread non-iterable instance');\n}\n\nfunction _nonIterableRest() {\n\tthrow new TypeError('Invalid attempt to destructure non-iterable instance');\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n\tmark: noop,\n\tmeasure: noop,\n};\n\ntry {\n\tif (typeof window !== 'undefined') _WINDOW = window;\n\tif (typeof document !== 'undefined') _DOCUMENT = document;\n\tif (typeof MutationObserver !== 'undefined')\n\t\t_MUTATION_OBSERVER = MutationObserver;\n\tif (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n\t_ref$userAgent = _ref.userAgent,\n\tuserAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM =\n\t!!DOCUMENT.documentElement &&\n\t!!DOCUMENT.head &&\n\ttypeof DOCUMENT.addEventListener === 'function' &&\n\ttypeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = (function () {\n\ttry {\n\t\treturn process.env.NODE_ENV === 'production';\n\t} catch (e) {\n\t\treturn false;\n\t}\n})();\nvar PREFIX_TO_STYLE = {\n\tfas: 'solid',\n\tfar: 'regular',\n\tfal: 'light',\n\tfad: 'duotone',\n\tfab: 'brands',\n\tfa: 'solid',\n};\nvar STYLE_TO_PREFIX = {\n\tsolid: 'fas',\n\tregular: 'far',\n\tlight: 'fal',\n\tduotone: 'fad',\n\tbrands: 'fab',\n};\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome 5 (Solid|Regular|Light|Duotone|Brands|Free|Pro)/;\nvar FONT_WEIGHT_TO_PREFIX = {\n\t'900': 'fas',\n\t'400': 'far',\n\tnormal: 'far',\n\t'300': 'fal',\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = [\n\t'class',\n\t'data-prefix',\n\t'data-icon',\n\t'data-fa-transform',\n\t'data-fa-mask',\n];\nvar DUOTONE_CLASSES = {\n\tGROUP: 'group',\n\tSWAP_OPACITY: 'swap-opacity',\n\tPRIMARY: 'primary',\n\tSECONDARY: 'secondary',\n};\nvar RESERVED_CLASSES = [\n\t'xs',\n\t'sm',\n\t'lg',\n\t'fw',\n\t'ul',\n\t'li',\n\t'border',\n\t'pull-left',\n\t'pull-right',\n\t'spin',\n\t'pulse',\n\t'rotate-90',\n\t'rotate-180',\n\t'rotate-270',\n\t'flip-horizontal',\n\t'flip-vertical',\n\t'flip-both',\n\t'stack',\n\t'stack-1x',\n\t'stack-2x',\n\t'inverse',\n\t'layers',\n\t'layers-text',\n\t'layers-counter',\n\tDUOTONE_CLASSES.GROUP,\n\tDUOTONE_CLASSES.SWAP_OPACITY,\n\tDUOTONE_CLASSES.PRIMARY,\n\tDUOTONE_CLASSES.SECONDARY,\n]\n\t.concat(\n\t\toneToTen.map(function (n) {\n\t\t\treturn ''.concat(n, 'x');\n\t\t}),\n\t)\n\t.concat(\n\t\toneToTwenty.map(function (n) {\n\t\t\treturn 'w-'.concat(n);\n\t\t}),\n\t);\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n\tvar element = DOCUMENT.querySelector('script[' + attr + ']');\n\n\tif (element) {\n\t\treturn element.getAttribute(attr);\n\t}\n}\n\nfunction coerce(val) {\n\t// Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n\t// We'll assume that this is an indication that it should be toggled to true\n\t// For example <script data-search-pseudo-elements src=\"...\"></script>\n\tif (val === '') return true;\n\tif (val === 'false') return false;\n\tif (val === 'true') return true;\n\treturn val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n\tvar attrs = [\n\t\t['data-family-prefix', 'familyPrefix'],\n\t\t['data-replacement-class', 'replacementClass'],\n\t\t['data-auto-replace-svg', 'autoReplaceSvg'],\n\t\t['data-auto-add-css', 'autoAddCss'],\n\t\t['data-auto-a11y', 'autoA11y'],\n\t\t['data-search-pseudo-elements', 'searchPseudoElements'],\n\t\t['data-observe-mutations', 'observeMutations'],\n\t\t['data-mutate-approach', 'mutateApproach'],\n\t\t['data-keep-original-source', 'keepOriginalSource'],\n\t\t['data-measure-performance', 'measurePerformance'],\n\t\t['data-show-missing-icons', 'showMissingIcons'],\n\t];\n\tattrs.forEach(function (_ref) {\n\t\tvar _ref2 = _slicedToArray(_ref, 2),\n\t\t\tattr = _ref2[0],\n\t\t\tkey = _ref2[1];\n\n\t\tvar val = coerce(getAttrConfig(attr));\n\n\t\tif (val !== undefined && val !== null) {\n\t\t\tinitial[key] = val;\n\t\t}\n\t});\n}\n\nvar _default = {\n\tfamilyPrefix: DEFAULT_FAMILY_PREFIX,\n\treplacementClass: DEFAULT_REPLACEMENT_CLASS,\n\tautoReplaceSvg: true,\n\tautoAddCss: true,\n\tautoA11y: true,\n\tsearchPseudoElements: false,\n\tobserveMutations: true,\n\tmutateApproach: 'async',\n\tkeepOriginalSource: true,\n\tmeasurePerformance: false,\n\tshowMissingIcons: true,\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n\tDOCUMENT.removeEventListener('DOMContentLoaded', listener);\n\tloaded = 1;\n\tfunctions.map(function (fn) {\n\t\treturn fn();\n\t});\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n\tloaded = (DOCUMENT.documentElement.doScroll\n\t\t? /^loaded|^c/\n\t\t: /^loaded|^i|^c/\n\t).test(DOCUMENT.readyState);\n\tif (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready(fn) {\n\tif (!IS_DOM) return;\n\tloaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode =\n\ttypeof global !== 'undefined' &&\n\ttypeof global.process !== 'undefined' &&\n\ttypeof global.process.emit === 'function';\nvar asyncSetTimer =\n\ttypeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n\t// run promise callbacks\n\tfor (var i = 0; i < asyncQueue.length; i++) {\n\t\tasyncQueue[i][0](asyncQueue[i][1]);\n\t} // reset async asyncQueue\n\n\tasyncQueue = [];\n\tasyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n\tasyncQueue.push([callback, arg]);\n\n\tif (!asyncTimer) {\n\t\tasyncTimer = true;\n\t\tasyncSetTimer(asyncFlush, 0);\n\t}\n}\n\nfunction invokeResolver(resolver, promise) {\n\tfunction resolvePromise(value) {\n\t\tresolve(promise, value);\n\t}\n\n\tfunction rejectPromise(reason) {\n\t\treject(promise, reason);\n\t}\n\n\ttry {\n\t\tresolver(resolvePromise, rejectPromise);\n\t} catch (e) {\n\t\trejectPromise(e);\n\t}\n}\n\nfunction invokeCallback(subscriber) {\n\tvar owner = subscriber.owner;\n\tvar settled = owner._state;\n\tvar value = owner._data;\n\tvar callback = subscriber[settled];\n\tvar promise = subscriber.then;\n\n\tif (typeof callback === 'function') {\n\t\tsettled = FULFILLED;\n\n\t\ttry {\n\t\t\tvalue = callback(value);\n\t\t} catch (e) {\n\t\t\treject(promise, e);\n\t\t}\n\t}\n\n\tif (!handleThenable(promise, value)) {\n\t\tif (settled === FULFILLED) {\n\t\t\tresolve(promise, value);\n\t\t}\n\n\t\tif (settled === REJECTED) {\n\t\t\treject(promise, value);\n\t\t}\n\t}\n}\n\nfunction handleThenable(promise, value) {\n\tvar resolved;\n\n\ttry {\n\t\tif (promise === value) {\n\t\t\tthrow new TypeError(\n\t\t\t\t'A promises callback cannot return that same promise.',\n\t\t\t);\n\t\t}\n\n\t\tif (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n\t\t\t// then should be retrieved only once\n\t\t\tvar then = value.then;\n\n\t\t\tif (typeof then === 'function') {\n\t\t\t\tthen.call(\n\t\t\t\t\tvalue,\n\t\t\t\t\tfunction (val) {\n\t\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\t\tresolved = true;\n\n\t\t\t\t\t\t\tif (value === val) {\n\t\t\t\t\t\t\t\tfulfill(promise, val);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresolve(promise, val);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\tfunction (reason) {\n\t\t\t\t\t\tif (!resolved) {\n\t\t\t\t\t\t\tresolved = true;\n\t\t\t\t\t\t\treject(promise, reason);\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t} catch (e) {\n\t\tif (!resolved) {\n\t\t\treject(promise, e);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nfunction resolve(promise, value) {\n\tif (promise === value || !handleThenable(promise, value)) {\n\t\tfulfill(promise, value);\n\t}\n}\n\nfunction fulfill(promise, value) {\n\tif (promise._state === PENDING) {\n\t\tpromise._state = SETTLED;\n\t\tpromise._data = value;\n\t\tasyncCall(publishFulfillment, promise);\n\t}\n}\n\nfunction reject(promise, reason) {\n\tif (promise._state === PENDING) {\n\t\tpromise._state = SETTLED;\n\t\tpromise._data = reason;\n\t\tasyncCall(publishRejection, promise);\n\t}\n}\n\nfunction publish(promise) {\n\tpromise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n\tpromise._state = FULFILLED;\n\tpublish(promise);\n}\n\nfunction publishRejection(promise) {\n\tpromise._state = REJECTED;\n\tpublish(promise);\n\n\tif (!promise._handled && isNode) {\n\t\tglobal.process.emit('unhandledRejection', promise._data, promise);\n\t}\n}\n\nfunction notifyRejectionHandled(promise) {\n\tglobal.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\nfunction P(resolver) {\n\tif (typeof resolver !== 'function') {\n\t\tthrow new TypeError('Promise resolver ' + resolver + ' is not a function');\n\t}\n\n\tif (this instanceof P === false) {\n\t\tthrow new TypeError(\n\t\t\t\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\",\n\t\t);\n\t}\n\n\tthis._then = [];\n\tinvokeResolver(resolver, this);\n}\n\nP.prototype = {\n\tconstructor: P,\n\t_state: PENDING,\n\t_then: null,\n\t_data: undefined,\n\t_handled: false,\n\tthen: function then(onFulfillment, onRejection) {\n\t\tvar subscriber = {\n\t\t\towner: this,\n\t\t\tthen: new this.constructor(NOOP),\n\t\t\tfulfilled: onFulfillment,\n\t\t\trejected: onRejection,\n\t\t};\n\n\t\tif ((onRejection || onFulfillment) && !this._handled) {\n\t\t\tthis._handled = true;\n\n\t\t\tif (this._state === REJECTED && isNode) {\n\t\t\t\tasyncCall(notifyRejectionHandled, this);\n\t\t\t}\n\t\t}\n\n\t\tif (this._state === FULFILLED || this._state === REJECTED) {\n\t\t\t// already resolved, call callback async\n\t\t\tasyncCall(invokeCallback, subscriber);\n\t\t} else {\n\t\t\t// subscribe\n\t\t\tthis._then.push(subscriber);\n\t\t}\n\n\t\treturn subscriber.then;\n\t},\n\tcatch: function _catch(onRejection) {\n\t\treturn this.then(null, onRejection);\n\t},\n};\n\nP.all = function (promises) {\n\tif (!Array.isArray(promises)) {\n\t\tthrow new TypeError('You must pass an array to Promise.all().');\n\t}\n\n\treturn new P(function (resolve, reject) {\n\t\tvar results = [];\n\t\tvar remaining = 0;\n\n\t\tfunction resolver(index) {\n\t\t\tremaining++;\n\t\t\treturn function (value) {\n\t\t\t\tresults[index] = value;\n\n\t\t\t\tif (!--remaining) {\n\t\t\t\t\tresolve(results);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tfor (var i = 0, promise; i < promises.length; i++) {\n\t\t\tpromise = promises[i];\n\n\t\t\tif (promise && typeof promise.then === 'function') {\n\t\t\t\tpromise.then(resolver(i), reject);\n\t\t\t} else {\n\t\t\t\tresults[i] = promise;\n\t\t\t}\n\t\t}\n\n\t\tif (!remaining) {\n\t\t\tresolve(results);\n\t\t}\n\t});\n};\n\nP.race = function (promises) {\n\tif (!Array.isArray(promises)) {\n\t\tthrow new TypeError('You must pass an array to Promise.race().');\n\t}\n\n\treturn new P(function (resolve, reject) {\n\t\tfor (var i = 0, promise; i < promises.length; i++) {\n\t\t\tpromise = promises[i];\n\n\t\t\tif (promise && typeof promise.then === 'function') {\n\t\t\t\tpromise.then(resolve, reject);\n\t\t\t} else {\n\t\t\t\tresolve(promise);\n\t\t\t}\n\t\t}\n\t});\n};\n\nP.resolve = function (value) {\n\tif (value && _typeof(value) === 'object' && value.constructor === P) {\n\t\treturn value;\n\t}\n\n\treturn new P(function (resolve) {\n\t\tresolve(value);\n\t});\n};\n\nP.reject = function (reason) {\n\treturn new P(function (resolve, reject) {\n\t\treject(reason);\n\t});\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n\tsize: 16,\n\tx: 0,\n\ty: 0,\n\trotate: 0,\n\tflipX: false,\n\tflipY: false,\n};\n\nfunction isReserved(name) {\n\treturn ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n\tif (!css || !IS_DOM) {\n\t\treturn;\n\t}\n\n\tvar style = DOCUMENT.createElement('style');\n\tstyle.setAttribute('type', 'text/css');\n\tstyle.innerHTML = css;\n\tvar headChildren = DOCUMENT.head.childNodes;\n\tvar beforeChild = null;\n\n\tfor (var i = headChildren.length - 1; i > -1; i--) {\n\t\tvar child = headChildren[i];\n\t\tvar tagName = (child.tagName || '').toUpperCase();\n\n\t\tif (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n\t\t\tbeforeChild = child;\n\t\t}\n\t}\n\n\tDOCUMENT.head.insertBefore(style, beforeChild);\n\treturn css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n\tvar size = 12;\n\tvar id = '';\n\n\twhile (size-- > 0) {\n\t\tid += idPool[(Math.random() * 62) | 0];\n\t}\n\n\treturn id;\n}\nfunction toArray(obj) {\n\tvar array = [];\n\n\tfor (var i = (obj || []).length >>> 0; i--; ) {\n\t\tarray[i] = obj[i];\n\t}\n\n\treturn array;\n}\nfunction classArray(node) {\n\tif (node.classList) {\n\t\treturn toArray(node.classList);\n\t} else {\n\t\treturn (node.getAttribute('class') || '').split(' ').filter(function (i) {\n\t\t\treturn i;\n\t\t});\n\t}\n}\nfunction getIconName(familyPrefix, cls) {\n\tvar parts = cls.split('-');\n\tvar prefix = parts[0];\n\tvar iconName = parts.slice(1).join('-');\n\n\tif (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n\t\treturn iconName;\n\t} else {\n\t\treturn null;\n\t}\n}\nfunction htmlEscape(str) {\n\treturn ''\n\t\t.concat(str)\n\t\t.replace(/&/g, '&')\n\t\t.replace(/\"/g, '"')\n\t\t.replace(/'/g, ''')\n\t\t.replace(/</g, '<')\n\t\t.replace(/>/g, '>');\n}\nfunction joinAttributes(attributes) {\n\treturn Object.keys(attributes || {})\n\t\t.reduce(function (acc, attributeName) {\n\t\t\treturn (\n\t\t\t\tacc +\n\t\t\t\t''\n\t\t\t\t\t.concat(attributeName, '=\"')\n\t\t\t\t\t.concat(htmlEscape(attributes[attributeName]), '\" ')\n\t\t\t);\n\t\t}, '')\n\t\t.trim();\n}\nfunction joinStyles(styles) {\n\treturn Object.keys(styles || {}).reduce(function (acc, styleName) {\n\t\treturn acc + ''.concat(styleName, ': ').concat(styles[styleName], ';');\n\t}, '');\n}\nfunction transformIsMeaningful(transform) {\n\treturn (\n\t\ttransform.size !== meaninglessTransform.size ||\n\t\ttransform.x !== meaninglessTransform.x ||\n\t\ttransform.y !== meaninglessTransform.y ||\n\t\ttransform.rotate !== meaninglessTransform.rotate ||\n\t\ttransform.flipX ||\n\t\ttransform.flipY\n\t);\n}\nfunction transformForSvg(_ref) {\n\tvar transform = _ref.transform,\n\t\tcontainerWidth = _ref.containerWidth,\n\t\ticonWidth = _ref.iconWidth;\n\tvar outer = {\n\t\ttransform: 'translate('.concat(containerWidth / 2, ' 256)'),\n\t};\n\tvar innerTranslate = 'translate('\n\t\t.concat(transform.x * 32, ', ')\n\t\t.concat(transform.y * 32, ') ');\n\tvar innerScale = 'scale('\n\t\t.concat((transform.size / 16) * (transform.flipX ? -1 : 1), ', ')\n\t\t.concat((transform.size / 16) * (transform.flipY ? -1 : 1), ') ');\n\tvar innerRotate = 'rotate('.concat(transform.rotate, ' 0 0)');\n\tvar inner = {\n\t\ttransform: ''\n\t\t\t.concat(innerTranslate, ' ')\n\t\t\t.concat(innerScale, ' ')\n\t\t\t.concat(innerRotate),\n\t};\n\tvar path = {\n\t\ttransform: 'translate('.concat((iconWidth / 2) * -1, ' -256)'),\n\t};\n\treturn {\n\t\touter: outer,\n\t\tinner: inner,\n\t\tpath: path,\n\t};\n}\nfunction transformForCss(_ref2) {\n\tvar transform = _ref2.transform,\n\t\t_ref2$width = _ref2.width,\n\t\twidth = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n\t\t_ref2$height = _ref2.height,\n\t\theight = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n\t\t_ref2$startCentered = _ref2.startCentered,\n\t\tstartCentered =\n\t\t\t_ref2$startCentered === void 0 ? false : _ref2$startCentered;\n\tvar val = '';\n\n\tif (startCentered && IS_IE) {\n\t\tval += 'translate('\n\t\t\t.concat(transform.x / d - width / 2, 'em, ')\n\t\t\t.concat(transform.y / d - height / 2, 'em) ');\n\t} else if (startCentered) {\n\t\tval += 'translate(calc(-50% + '\n\t\t\t.concat(transform.x / d, 'em), calc(-50% + ')\n\t\t\t.concat(transform.y / d, 'em)) ');\n\t} else {\n\t\tval += 'translate('\n\t\t\t.concat(transform.x / d, 'em, ')\n\t\t\t.concat(transform.y / d, 'em) ');\n\t}\n\n\tval += 'scale('\n\t\t.concat((transform.size / d) * (transform.flipX ? -1 : 1), ', ')\n\t\t.concat((transform.size / d) * (transform.flipY ? -1 : 1), ') ');\n\tval += 'rotate('.concat(transform.rotate, 'deg) ');\n\treturn val;\n}\n\nvar ALL_SPACE = {\n\tx: 0,\n\ty: 0,\n\twidth: '100%',\n\theight: '100%',\n};\n\nfunction fillBlack(abstract) {\n\tvar force =\n\t\targuments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\tif (abstract.attributes && (abstract.attributes.fill || force)) {\n\t\tabstract.attributes.fill = 'black';\n\t}\n\n\treturn abstract;\n}\n\nfunction deGroup(abstract) {\n\tif (abstract.tag === 'g') {\n\t\treturn abstract.children;\n\t} else {\n\t\treturn [abstract];\n\t}\n}\n\nfunction makeIconMasking(_ref) {\n\tvar children = _ref.children,\n\t\tattributes = _ref.attributes,\n\t\tmain = _ref.main,\n\t\tmask = _ref.mask,\n\t\ttransform = _ref.transform;\n\tvar mainWidth = main.width,\n\t\tmainPath = main.icon;\n\tvar maskWidth = mask.width,\n\t\tmaskPath = mask.icon;\n\tvar trans = transformForSvg({\n\t\ttransform: transform,\n\t\tcontainerWidth: maskWidth,\n\t\ticonWidth: mainWidth,\n\t});\n\tvar maskRect = {\n\t\ttag: 'rect',\n\t\tattributes: _objectSpread({}, ALL_SPACE, {\n\t\t\tfill: 'white',\n\t\t}),\n\t};\n\tvar maskInnerGroupChildrenMixin = mainPath.children\n\t\t? {\n\t\t\t\tchildren: mainPath.children.map(fillBlack),\n\t\t }\n\t\t: {};\n\tvar maskInnerGroup = {\n\t\ttag: 'g',\n\t\tattributes: _objectSpread({}, trans.inner),\n\t\tchildren: [\n\t\t\tfillBlack(\n\t\t\t\t_objectSpread(\n\t\t\t\t\t{\n\t\t\t\t\t\ttag: mainPath.tag,\n\t\t\t\t\t\tattributes: _objectSpread({}, mainPath.attributes, trans.path),\n\t\t\t\t\t},\n\t\t\t\t\tmaskInnerGroupChildrenMixin,\n\t\t\t\t),\n\t\t\t),\n\t\t],\n\t};\n\tvar maskOuterGroup = {\n\t\ttag: 'g',\n\t\tattributes: _objectSpread({}, trans.outer),\n\t\tchildren: [maskInnerGroup],\n\t};\n\tvar maskId = 'mask-'.concat(nextUniqueId());\n\tvar clipId = 'clip-'.concat(nextUniqueId());\n\tvar maskTag = {\n\t\ttag: 'mask',\n\t\tattributes: _objectSpread({}, ALL_SPACE, {\n\t\t\tid: maskId,\n\t\t\tmaskUnits: 'userSpaceOnUse',\n\t\t\tmaskContentUnits: 'userSpaceOnUse',\n\t\t}),\n\t\tchildren: [maskRect, maskOuterGroup],\n\t};\n\tvar defs = {\n\t\ttag: 'defs',\n\t\tchildren: [\n\t\t\t{\n\t\t\t\ttag: 'clipPath',\n\t\t\t\tattributes: {\n\t\t\t\t\tid: clipId,\n\t\t\t\t},\n\t\t\t\tchildren: deGroup(maskPath),\n\t\t\t},\n\t\t\tmaskTag,\n\t\t],\n\t};\n\tchildren.push(defs, {\n\t\ttag: 'rect',\n\t\tattributes: _objectSpread(\n\t\t\t{\n\t\t\t\tfill: 'currentColor',\n\t\t\t\t'clip-path': 'url(#'.concat(clipId, ')'),\n\t\t\t\tmask: 'url(#'.concat(maskId, ')'),\n\t\t\t},\n\t\t\tALL_SPACE,\n\t\t),\n\t});\n\treturn {\n\t\tchildren: children,\n\t\tattributes: attributes,\n\t};\n}\n\nfunction makeIconStandard(_ref) {\n\tvar children = _ref.children,\n\t\tattributes = _ref.attributes,\n\t\tmain = _ref.main,\n\t\ttransform = _ref.transform,\n\t\tstyles = _ref.styles;\n\tvar styleString = joinStyles(styles);\n\n\tif (styleString.length > 0) {\n\t\tattributes['style'] = styleString;\n\t}\n\n\tif (transformIsMeaningful(transform)) {\n\t\tvar trans = transformForSvg({\n\t\t\ttransform: transform,\n\t\t\tcontainerWidth: main.width,\n\t\t\ticonWidth: main.width,\n\t\t});\n\t\tchildren.push({\n\t\t\ttag: 'g',\n\t\t\tattributes: _objectSpread({}, trans.outer),\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'g',\n\t\t\t\t\tattributes: _objectSpread({}, trans.inner),\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttag: main.icon.tag,\n\t\t\t\t\t\t\tchildren: main.icon.children,\n\t\t\t\t\t\t\tattributes: _objectSpread({}, main.icon.attributes, trans.path),\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t],\n\t\t});\n\t} else {\n\t\tchildren.push(main.icon);\n\t}\n\n\treturn {\n\t\tchildren: children,\n\t\tattributes: attributes,\n\t};\n}\n\nfunction asIcon(_ref) {\n\tvar children = _ref.children,\n\t\tmain = _ref.main,\n\t\tmask = _ref.mask,\n\t\tattributes = _ref.attributes,\n\t\tstyles = _ref.styles,\n\t\ttransform = _ref.transform;\n\n\tif (transformIsMeaningful(transform) && main.found && !mask.found) {\n\t\tvar width = main.width,\n\t\t\theight = main.height;\n\t\tvar offset = {\n\t\t\tx: width / height / 2,\n\t\t\ty: 0.5,\n\t\t};\n\t\tattributes['style'] = joinStyles(\n\t\t\t_objectSpread({}, styles, {\n\t\t\t\t'transform-origin': ''\n\t\t\t\t\t.concat(offset.x + transform.x / 16, 'em ')\n\t\t\t\t\t.concat(offset.y + transform.y / 16, 'em'),\n\t\t\t}),\n\t\t);\n\t}\n\n\treturn [\n\t\t{\n\t\t\ttag: 'svg',\n\t\t\tattributes: attributes,\n\t\t\tchildren: children,\n\t\t},\n\t];\n}\n\nfunction asSymbol(_ref) {\n\tvar prefix = _ref.prefix,\n\t\ticonName = _ref.iconName,\n\t\tchildren = _ref.children,\n\t\tattributes = _ref.attributes,\n\t\tsymbol = _ref.symbol;\n\tvar id =\n\t\tsymbol === true\n\t\t\t? ''.concat(prefix, '-').concat(config.familyPrefix, '-').concat(iconName)\n\t\t\t: symbol;\n\treturn [\n\t\t{\n\t\t\ttag: 'svg',\n\t\t\tattributes: {\n\t\t\t\tstyle: 'display: none;',\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'symbol',\n\t\t\t\t\tattributes: _objectSpread({}, attributes, {\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t}),\n\t\t\t\t\tchildren: children,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t];\n}\n\nfunction makeInlineSvgAbstract(params) {\n\tvar _params$icons = params.icons,\n\t\tmain = _params$icons.main,\n\t\tmask = _params$icons.mask,\n\t\tprefix = params.prefix,\n\t\ticonName = params.iconName,\n\t\ttransform = params.transform,\n\t\tsymbol = params.symbol,\n\t\ttitle = params.title,\n\t\textra = params.extra,\n\t\t_params$watchable = params.watchable,\n\t\twatchable = _params$watchable === void 0 ? false : _params$watchable;\n\n\tvar _ref = mask.found ? mask : main,\n\t\twidth = _ref.width,\n\t\theight = _ref.height;\n\n\tvar widthClass = 'fa-w-'.concat(Math.ceil((width / height) * 16));\n\tvar attrClass = [\n\t\tconfig.replacementClass,\n\t\ticonName ? ''.concat(config.familyPrefix, '-').concat(iconName) : '',\n\t\twidthClass,\n\t]\n\t\t.filter(function (c) {\n\t\t\treturn extra.classes.indexOf(c) === -1;\n\t\t})\n\t\t.concat(extra.classes)\n\t\t.join(' ');\n\tvar content = {\n\t\tchildren: [],\n\t\tattributes: _objectSpread({}, extra.attributes, {\n\t\t\t'data-prefix': prefix,\n\t\t\t'data-icon': iconName,\n\t\t\tclass: attrClass,\n\t\t\trole: extra.attributes.role || 'img',\n\t\t\txmlns: 'http://www.w3.org/2000/svg',\n\t\t\tviewBox: '0 0 '.concat(width, ' ').concat(height),\n\t\t}),\n\t};\n\n\tif (watchable) {\n\t\tcontent.attributes[DATA_FA_I2SVG] = '';\n\t}\n\n\tif (title)\n\t\tcontent.children.push({\n\t\t\ttag: 'title',\n\t\t\tattributes: {\n\t\t\t\tid:\n\t\t\t\t\tcontent.attributes['aria-labelledby'] ||\n\t\t\t\t\t'title-'.concat(nextUniqueId()),\n\t\t\t},\n\t\t\tchildren: [title],\n\t\t});\n\n\tvar args = _objectSpread({}, content, {\n\t\tprefix: prefix,\n\t\ticonName: iconName,\n\t\tmain: main,\n\t\tmask: mask,\n\t\ttransform: transform,\n\t\tsymbol: symbol,\n\t\tstyles: extra.styles,\n\t});\n\n\tvar _ref2 =\n\t\t\tmask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n\t\tchildren = _ref2.children,\n\t\tattributes = _ref2.attributes;\n\n\targs.children = children;\n\targs.attributes = attributes;\n\n\tif (symbol) {\n\t\treturn asSymbol(args);\n\t} else {\n\t\treturn asIcon(args);\n\t}\n}\nfunction makeLayersTextAbstract(params) {\n\tvar content = params.content,\n\t\twidth = params.width,\n\t\theight = params.height,\n\t\ttransform = params.transform,\n\t\ttitle = params.title,\n\t\textra = params.extra,\n\t\t_params$watchable2 = params.watchable,\n\t\twatchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n\tvar attributes = _objectSpread(\n\t\t{},\n\t\textra.attributes,\n\t\ttitle\n\t\t\t? {\n\t\t\t\t\ttitle: title,\n\t\t\t }\n\t\t\t: {},\n\t\t{\n\t\t\tclass: extra.classes.join(' '),\n\t\t},\n\t);\n\n\tif (watchable) {\n\t\tattributes[DATA_FA_I2SVG] = '';\n\t}\n\n\tvar styles = _objectSpread({}, extra.styles);\n\n\tif (transformIsMeaningful(transform)) {\n\t\tstyles['transform'] = transformForCss({\n\t\t\ttransform: transform,\n\t\t\tstartCentered: true,\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t});\n\t\tstyles['-webkit-transform'] = styles['transform'];\n\t}\n\n\tvar styleString = joinStyles(styles);\n\n\tif (styleString.length > 0) {\n\t\tattributes['style'] = styleString;\n\t}\n\n\tvar val = [];\n\tval.push({\n\t\ttag: 'span',\n\t\tattributes: attributes,\n\t\tchildren: [content],\n\t});\n\n\tif (title) {\n\t\tval.push({\n\t\t\ttag: 'span',\n\t\t\tattributes: {\n\t\t\t\tclass: 'sr-only',\n\t\t\t},\n\t\t\tchildren: [title],\n\t\t});\n\t}\n\n\treturn val;\n}\nfunction makeLayersCounterAbstract(params) {\n\tvar content = params.content,\n\t\ttitle = params.title,\n\t\textra = params.extra;\n\n\tvar attributes = _objectSpread(\n\t\t{},\n\t\textra.attributes,\n\t\ttitle\n\t\t\t? {\n\t\t\t\t\ttitle: title,\n\t\t\t }\n\t\t\t: {},\n\t\t{\n\t\t\tclass: extra.classes.join(' '),\n\t\t},\n\t);\n\n\tvar styleString = joinStyles(extra.styles);\n\n\tif (styleString.length > 0) {\n\t\tattributes['style'] = styleString;\n\t}\n\n\tvar val = [];\n\tval.push({\n\t\ttag: 'span',\n\t\tattributes: attributes,\n\t\tchildren: [content],\n\t});\n\n\tif (title) {\n\t\tval.push({\n\t\t\ttag: 'span',\n\t\t\tattributes: {\n\t\t\t\tclass: 'sr-only',\n\t\t\t},\n\t\t\tchildren: [title],\n\t\t});\n\t}\n\n\treturn val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p =\n\tconfig.measurePerformance &&\n\tPERFORMANCE &&\n\tPERFORMANCE.mark &&\n\tPERFORMANCE.measure\n\t\t? PERFORMANCE\n\t\t: {\n\t\t\t\tmark: noop$1,\n\t\t\t\tmeasure: noop$1,\n\t\t };\nvar preamble = 'FA \"5.10.0\"';\n\nvar begin = function begin(name) {\n\tp.mark(''.concat(preamble, ' ').concat(name, ' begins'));\n\treturn function () {\n\t\treturn end(name);\n\t};\n};\n\nvar end = function end(name) {\n\tp.mark(''.concat(preamble, ' ').concat(name, ' ends'));\n\tp.measure(\n\t\t''.concat(preamble, ' ').concat(name),\n\t\t''.concat(preamble, ' ').concat(name, ' begins'),\n\t\t''.concat(preamble, ' ').concat(name, ' ends'),\n\t);\n};\n\nvar perf = {\n\tbegin: begin,\n\tend: end,\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n\treturn function (a, b, c, d) {\n\t\treturn func.call(thisContext, a, b, c, d);\n\t};\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n\tvar keys = Object.keys(subject),\n\t\tlength = keys.length,\n\t\titerator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n\t\ti,\n\t\tkey,\n\t\tresult;\n\n\tif (initialValue === undefined) {\n\t\ti = 1;\n\t\tresult = subject[keys[0]];\n\t} else {\n\t\ti = 0;\n\t\tresult = initialValue;\n\t}\n\n\tfor (; i < length; i++) {\n\t\tkey = keys[i];\n\t\tresult = iterator(result, subject[key], key, subject);\n\t}\n\n\treturn result;\n};\n\nfunction toHex(unicode) {\n\tvar result = '';\n\n\tfor (var i = 0; i < unicode.length; i++) {\n\t\tvar hex = unicode.charCodeAt(i).toString(16);\n\t\tresult += ('000' + hex).slice(-4);\n\t}\n\n\treturn result;\n}\n\nfunction defineIcons(prefix, icons) {\n\tvar params =\n\t\targuments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\tvar _params$skipHooks = params.skipHooks,\n\t\tskipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n\tvar normalized = Object.keys(icons).reduce(function (acc, iconName) {\n\t\tvar icon = icons[iconName];\n\t\tvar expanded = !!icon.icon;\n\n\t\tif (expanded) {\n\t\t\tacc[icon.iconName] = icon.icon;\n\t\t} else {\n\t\t\tacc[iconName] = icon;\n\t\t}\n\n\t\treturn acc;\n\t}, {});\n\n\tif (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n\t\tnamespace.hooks.addPack(prefix, normalized);\n\t} else {\n\t\tnamespace.styles[prefix] = _objectSpread(\n\t\t\t{},\n\t\t\tnamespace.styles[prefix] || {},\n\t\t\tnormalized,\n\t\t);\n\t}\n\t/**\n\t * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n\t * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n\t * for `fas` so we'll easy the upgrade process for our users by automatically defining\n\t * this as well.\n\t */\n\n\tif (prefix === 'fas') {\n\t\tdefineIcons('fa', icons);\n\t}\n}\n\nvar styles = namespace.styles,\n\tshims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n\tvar lookup = function lookup(reducer) {\n\t\treturn reduce(\n\t\t\tstyles,\n\t\t\tfunction (o, style, prefix) {\n\t\t\t\to[prefix] = reduce(style, reducer, {});\n\t\t\t\treturn o;\n\t\t\t},\n\t\t\t{},\n\t\t);\n\t};\n\n\t_byUnicode = lookup(function (acc, icon, iconName) {\n\t\tif (icon[3]) {\n\t\t\tacc[icon[3]] = iconName;\n\t\t}\n\n\t\treturn acc;\n\t});\n\t_byLigature = lookup(function (acc, icon, iconName) {\n\t\tvar ligatures = icon[2];\n\t\tacc[iconName] = iconName;\n\t\tligatures.forEach(function (ligature) {\n\t\t\tacc[ligature] = iconName;\n\t\t});\n\t\treturn acc;\n\t});\n\tvar hasRegular = 'far' in styles;\n\t_byOldName = reduce(\n\t\tshims,\n\t\tfunction (acc, shim) {\n\t\t\tvar oldName = shim[0];\n\t\t\tvar prefix = shim[1];\n\t\t\tvar iconName = shim[2];\n\n\t\t\tif (prefix === 'far' && !hasRegular) {\n\t\t\t\tprefix = 'fas';\n\t\t\t}\n\n\t\t\tacc[oldName] = {\n\t\t\t\tprefix: prefix,\n\t\t\t\ticonName: iconName,\n\t\t\t};\n\t\t\treturn acc;\n\t\t},\n\t\t{},\n\t);\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n\treturn (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n\treturn (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n\treturn (\n\t\t_byOldName[name] || {\n\t\t\tprefix: null,\n\t\t\ticonName: null,\n\t\t}\n\t);\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n\treturn {\n\t\tprefix: null,\n\t\ticonName: null,\n\t\trest: [],\n\t};\n};\nfunction getCanonicalIcon(values) {\n\treturn values.reduce(function (acc, cls) {\n\t\tvar iconName = getIconName(config.familyPrefix, cls);\n\n\t\tif (styles$1[cls]) {\n\t\t\tacc.prefix = cls;\n\t\t} else if (\n\t\t\tconfig.autoFetchSvg &&\n\t\t\t['fas', 'far', 'fal', 'fad', 'fab', 'fa'].indexOf(cls) > -1\n\t\t) {\n\t\t\tacc.prefix = cls;\n\t\t} else if (iconName) {\n\t\t\tvar shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n\t\t\tacc.iconName = shim.iconName || iconName;\n\t\t\tacc.prefix = shim.prefix || acc.prefix;\n\t\t} else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n\t\t\tacc.rest.push(cls);\n\t\t}\n\n\t\treturn acc;\n\t}, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n\tif (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n\t\treturn {\n\t\t\tprefix: prefix,\n\t\t\ticonName: iconName,\n\t\t\ticon: mapping[prefix][iconName],\n\t\t};\n\t}\n}\n\nfunction toHtml(abstractNodes) {\n\tvar tag = abstractNodes.tag,\n\t\t_abstractNodes$attrib = abstractNodes.attributes,\n\t\tattributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n\t\t_abstractNodes$childr = abstractNodes.children,\n\t\tchildren = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n\tif (typeof abstractNodes === 'string') {\n\t\treturn htmlEscape(abstractNodes);\n\t} else {\n\t\treturn '<'\n\t\t\t.concat(tag, ' ')\n\t\t\t.concat(joinAttributes(attributes), '>')\n\t\t\t.concat(children.map(toHtml).join(''), '</')\n\t\t\t.concat(tag, '>');\n\t}\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n\tvar i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n\treturn typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n\tif (config.autoReplaceSvg === true) {\n\t\treturn mutators.replace;\n\t}\n\n\tvar mutator = mutators[config.autoReplaceSvg];\n\treturn mutator || mutators.replace;\n}\n\nvar mutators = {\n\treplace: function replace(mutation) {\n\t\tvar node = mutation[0];\n\t\tvar abstract = mutation[1];\n\t\tvar newOuterHTML = abstract\n\t\t\t.map(function (a) {\n\t\t\t\treturn toHtml(a);\n\t\t\t})\n\t\t\t.join('\\n');\n\n\t\tif (node.parentNode && node.outerHTML) {\n\t\t\tnode.outerHTML =\n\t\t\t\tnewOuterHTML +\n\t\t\t\t(config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg'\n\t\t\t\t\t? '<!-- '.concat(node.outerHTML, ' -->')\n\t\t\t\t\t: '');\n\t\t} else if (node.parentNode) {\n\t\t\tvar newNode = document.createElement('span');\n\t\t\tnode.parentNode.replaceChild(newNode, node);\n\t\t\tnewNode.outerHTML = newOuterHTML;\n\t\t}\n\t},\n\tnest: function nest(mutation) {\n\t\tvar node = mutation[0];\n\t\tvar abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n\t\t// Short-circuit to the standard replacement\n\n\t\tif (~classArray(node).indexOf(config.replacementClass)) {\n\t\t\treturn mutators.replace(mutation);\n\t\t}\n\n\t\tvar forSvg = new RegExp(''.concat(config.familyPrefix, '-.*'));\n\t\tdelete abstract[0].attributes.style;\n\t\tvar splitClasses = abstract[0].attributes.class.split(' ').reduce(\n\t\t\tfunction (acc, cls) {\n\t\t\t\tif (cls === config.replacementClass || cls.match(forSvg)) {\n\t\t\t\t\tacc.toSvg.push(cls);\n\t\t\t\t} else {\n\t\t\t\t\tacc.toNode.push(cls);\n\t\t\t\t}\n\n\t\t\t\treturn acc;\n\t\t\t},\n\t\t\t{\n\t\t\t\ttoNode: [],\n\t\t\t\ttoSvg: [],\n\t\t\t},\n\t\t);\n\t\tabstract[0].attributes.class = splitClasses.toSvg.join(' ');\n\t\tvar newInnerHTML = abstract\n\t\t\t.map(function (a) {\n\t\t\t\treturn toHtml(a);\n\t\t\t})\n\t\t\t.join('\\n');\n\t\tnode.setAttribute('class', splitClasses.toNode.join(' '));\n\t\tnode.setAttribute(DATA_FA_I2SVG, '');\n\t\tnode.innerHTML = newInnerHTML;\n\t},\n};\n\nfunction performOperationSync(op) {\n\top();\n}\n\nfunction perform(mutations, callback) {\n\tvar callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n\tif (mutations.length === 0) {\n\t\tcallbackFunction();\n\t} else {\n\t\tvar frame = performOperationSync;\n\n\t\tif (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n\t\t\tframe = WINDOW.requestAnimationFrame || performOperationSync;\n\t\t}\n\n\t\tframe(function () {\n\t\t\tvar mutator = getMutator();\n\t\t\tvar mark = perf.begin('mutate');\n\t\t\tmutations.map(mutator);\n\t\t\tmark();\n\t\t\tcallbackFunction();\n\t\t});\n\t}\n}\nvar disabled = false;\nfunction disableObservation() {\n\tdisabled = true;\n}\nfunction enableObservation() {\n\tdisabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n\tif (!MUTATION_OBSERVER) {\n\t\treturn;\n\t}\n\n\tif (!config.observeMutations) {\n\t\treturn;\n\t}\n\n\tvar treeCallback = options.treeCallback,\n\t\tnodeCallback = options.nodeCallback,\n\t\tpseudoElementsCallback = options.pseudoElementsCallback,\n\t\t_options$observeMutat = options.observeMutationsRoot,\n\t\tobserveMutationsRoot =\n\t\t\t_options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n\tmo = new MUTATION_OBSERVER(function (objects) {\n\t\tif (disabled) return;\n\t\ttoArray(objects).forEach(function (mutationRecord) {\n\t\t\tif (\n\t\t\t\tmutationRecord.type === 'childList' &&\n\t\t\t\tmutationRecord.addedNodes.length > 0 &&\n\t\t\t\t!isWatched(mutationRecord.addedNodes[0])\n\t\t\t) {\n\t\t\t\tif (config.searchPseudoElements) {\n\t\t\t\t\tpseudoElementsCallback(mutationRecord.target);\n\t\t\t\t}\n\n\t\t\t\ttreeCallback(mutationRecord.target);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tmutationRecord.type === 'attributes' &&\n\t\t\t\tmutationRecord.target.parentNode &&\n\t\t\t\tconfig.searchPseudoElements\n\t\t\t) {\n\t\t\t\tpseudoElementsCallback(mutationRecord.target.parentNode);\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tmutationRecord.type === 'attributes' &&\n\t\t\t\tisWatched(mutationRecord.target) &&\n\t\t\t\t~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)\n\t\t\t) {\n\t\t\t\tif (mutationRecord.attributeName === 'class') {\n\t\t\t\t\tvar _getCanonicalIcon = getCanonicalIcon(\n\t\t\t\t\t\t\tclassArray(mutationRecord.target),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tprefix = _getCanonicalIcon.prefix,\n\t\t\t\t\t\ticonName = _getCanonicalIcon.iconName;\n\n\t\t\t\t\tif (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n\t\t\t\t\tif (iconName)\n\t\t\t\t\t\tmutationRecord.target.setAttribute('data-icon', iconName);\n\t\t\t\t} else {\n\t\t\t\t\tnodeCallback(mutationRecord.target);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n\tif (!IS_DOM) return;\n\tmo.observe(observeMutationsRoot, {\n\t\tchildList: true,\n\t\tattributes: true,\n\t\tcharacterData: true,\n\t\tsubtree: true,\n\t});\n}\nfunction disconnect() {\n\tif (!mo) return;\n\tmo.disconnect();\n}\n\nfunction styleParser(node) {\n\tvar style = node.getAttribute('style');\n\tvar val = [];\n\n\tif (style) {\n\t\tval = style.split(';').reduce(function (acc, style) {\n\t\t\tvar styles = style.split(':');\n\t\t\tvar prop = styles[0];\n\t\t\tvar value = styles.slice(1);\n\n\t\t\tif (prop && value.length > 0) {\n\t\t\t\tacc[prop] = value.join(':').trim();\n\t\t\t}\n\n\t\t\treturn acc;\n\t\t}, {});\n\t}\n\n\treturn val;\n}\n\nfunction classParser(node) {\n\tvar existingPrefix = node.getAttribute('data-prefix');\n\tvar existingIconName = node.getAttribute('data-icon');\n\tvar innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n\tvar val = getCanonicalIcon(classArray(node));\n\n\tif (existingPrefix && existingIconName) {\n\t\tval.prefix = existingPrefix;\n\t\tval.iconName = existingIconName;\n\t}\n\n\tif (val.prefix && innerText.length > 1) {\n\t\tval.iconName = byLigature(val.prefix, node.innerText);\n\t} else if (val.prefix && innerText.length === 1) {\n\t\tval.iconName = byUnicode(val.prefix, toHex(node.innerText));\n\t}\n\n\treturn val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n\tvar transform = {\n\t\tsize: 16,\n\t\tx: 0,\n\t\ty: 0,\n\t\tflipX: false,\n\t\tflipY: false,\n\t\trotate: 0,\n\t};\n\n\tif (!transformString) {\n\t\treturn transform;\n\t} else {\n\t\treturn transformString\n\t\t\t.toLowerCase()\n\t\t\t.split(' ')\n\t\t\t.reduce(function (acc, n) {\n\t\t\t\tvar parts = n.toLowerCase().split('-');\n\t\t\t\tvar first = parts[0];\n\t\t\t\tvar rest = parts.slice(1).join('-');\n\n\t\t\t\tif (first && rest === 'h') {\n\t\t\t\t\tacc.flipX = true;\n\t\t\t\t\treturn acc;\n\t\t\t\t}\n\n\t\t\t\tif (first && rest === 'v') {\n\t\t\t\t\tacc.flipY = true;\n\t\t\t\t\treturn acc;\n\t\t\t\t}\n\n\t\t\t\trest = parseFloat(rest);\n\n\t\t\t\tif (isNaN(rest)) {\n\t\t\t\t\treturn acc;\n\t\t\t\t}\n\n\t\t\t\tswitch (first) {\n\t\t\t\t\tcase 'grow':\n\t\t\t\t\t\tacc.size = acc.size + rest;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'shrink':\n\t\t\t\t\t\tacc.size = acc.size - rest;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'left':\n\t\t\t\t\t\tacc.x = acc.x - rest;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\tacc.x = acc.x + rest;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'up':\n\t\t\t\t\t\tacc.y = acc.y - rest;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'down':\n\t\t\t\t\t\tacc.y = acc.y + rest;\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase 'rotate':\n\t\t\t\t\t\tacc.rotate = acc.rotate + rest;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\treturn acc;\n\t\t\t}, transform);\n\t}\n};\nfunction transformParser(node) {\n\treturn parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser(node) {\n\tvar symbol = node.getAttribute('data-fa-symbol');\n\treturn symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser(node) {\n\tvar extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n\t\tif (acc.name !== 'class' && acc.name !== 'style') {\n\t\t\tacc[attr.name] = attr.value;\n\t\t}\n\n\t\treturn acc;\n\t}, {});\n\tvar title = node.getAttribute('title');\n\n\tif (config.autoA11y) {\n\t\tif (title) {\n\t\t\textraAttributes['aria-labelledby'] = ''\n\t\t\t\t.concat(config.replacementClass, '-title-')\n\t\t\t\t.concat(nextUniqueId());\n\t\t} else {\n\t\t\textraAttributes['aria-hidden'] = 'true';\n\t\t\textraAttributes['focusable'] = 'false';\n\t\t}\n\t}\n\n\treturn extraAttributes;\n}\n\nfunction maskParser(node) {\n\tvar mask = node.getAttribute('data-fa-mask');\n\n\tif (!mask) {\n\t\treturn emptyCanonicalIcon();\n\t} else {\n\t\treturn getCanonicalIcon(\n\t\t\tmask.split(' ').map(function (i) {\n\t\t\t\treturn i.trim();\n\t\t\t}),\n\t\t);\n\t}\n}\n\nfunction blankMeta() {\n\treturn {\n\t\ticonName: null,\n\t\ttitle: null,\n\t\tprefix: null,\n\t\ttransform: meaninglessTransform,\n\t\tsymbol: false,\n\t\tmask: null,\n\t\textra: {\n\t\t\tclasses: [],\n\t\t\tstyles: {},\n\t\t\tattributes: {},\n\t\t},\n\t};\n}\nfunction parseMeta(node) {\n\tvar _classParser = classParser(node),\n\t\ticonName = _classParser.iconName,\n\t\tprefix = _classParser.prefix,\n\t\textraClasses = _classParser.rest;\n\n\tvar extraStyles = styleParser(node);\n\tvar transform = transformParser(node);\n\tvar symbol = symbolParser(node);\n\tvar extraAttributes = attributesParser(node);\n\tvar mask = maskParser(node);\n\treturn {\n\t\ticonName: iconName,\n\t\ttitle: node.getAttribute('title'),\n\t\tprefix: prefix,\n\t\ttransform: transform,\n\t\tsymbol: symbol,\n\t\tmask: mask,\n\t\textra: {\n\t\t\tclasses: extraClasses,\n\t\t\tstyles: extraStyles,\n\t\t\tattributes: extraAttributes,\n\t\t},\n\t};\n}\n\nfunction MissingIcon(error) {\n\tthis.name = 'MissingIcon';\n\tthis.message = error || 'Icon unavailable';\n\tthis.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n\tfill: 'currentColor',\n};\nvar ANIMATION_BASE = {\n\tattributeType: 'XML',\n\trepeatCount: 'indefinite',\n\tdur: '2s',\n};\nvar RING = {\n\ttag: 'path',\n\tattributes: _objectSpread({}, FILL, {\n\t\td:\n\t\t\t'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z',\n\t}),\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n\tattributeName: 'opacity',\n});\n\nvar DOT = {\n\ttag: 'circle',\n\tattributes: _objectSpread({}, FILL, {\n\t\tcx: '256',\n\t\tcy: '364',\n\t\tr: '28',\n\t}),\n\tchildren: [\n\t\t{\n\t\t\ttag: 'animate',\n\t\t\tattributes: _objectSpread({}, ANIMATION_BASE, {\n\t\t\t\tattributeName: 'r',\n\t\t\t\tvalues: '28;14;28;28;14;28;',\n\t\t\t}),\n\t\t},\n\t\t{\n\t\t\ttag: 'animate',\n\t\t\tattributes: _objectSpread({}, OPACITY_ANIMATE, {\n\t\t\t\tvalues: '1;0;1;1;0;1;',\n\t\t\t}),\n\t\t},\n\t],\n};\nvar QUESTION = {\n\ttag: 'path',\n\tattributes: _objectSpread({}, FILL, {\n\t\topacity: '1',\n\t\td:\n\t\t\t'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z',\n\t}),\n\tchildren: [\n\t\t{\n\t\t\ttag: 'animate',\n\t\t\tattributes: _objectSpread({}, OPACITY_ANIMATE, {\n\t\t\t\tvalues: '1;0;0;0;0;1;',\n\t\t\t}),\n\t\t},\n\t],\n};\nvar EXCLAMATION = {\n\ttag: 'path',\n\tattributes: _objectSpread({}, FILL, {\n\t\topacity: '0',\n\t\td:\n\t\t\t'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z',\n\t}),\n\tchildren: [\n\t\t{\n\t\t\ttag: 'animate',\n\t\t\tattributes: _objectSpread({}, OPACITY_ANIMATE, {\n\t\t\t\tvalues: '0;0;1;1;0;0;',\n\t\t\t}),\n\t\t},\n\t],\n};\nvar missing = {\n\ttag: 'g',\n\tchildren: [RING, DOT, QUESTION, EXCLAMATION],\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n\tvar width = icon[0];\n\tvar height = icon[1];\n\n\tvar _icon$slice = icon.slice(4),\n\t\t_icon$slice2 = _slicedToArray(_icon$slice, 1),\n\t\tvectorData = _icon$slice2[0];\n\n\tvar element = null;\n\n\tif (Array.isArray(vectorData)) {\n\t\telement = {\n\t\t\ttag: 'g',\n\t\t\tattributes: {\n\t\t\t\tclass: ''\n\t\t\t\t\t.concat(config.familyPrefix, '-')\n\t\t\t\t\t.concat(DUOTONE_CLASSES.GROUP),\n\t\t\t},\n\t\t\tchildren: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'path',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: ''\n\t\t\t\t\t\t\t.concat(config.familyPrefix, '-')\n\t\t\t\t\t\t\t.concat(DUOTONE_CLASSES.SECONDARY),\n\t\t\t\t\t\tfill: 'currentColor',\n\t\t\t\t\t\td: vectorData[0],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\ttag: 'path',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: ''\n\t\t\t\t\t\t\t.concat(config.familyPrefix, '-')\n\t\t\t\t\t\t\t.concat(DUOTONE_CLASSES.PRIMARY),\n\t\t\t\t\t\tfill: 'currentColor',\n\t\t\t\t\t\td: vectorData[1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t};\n\t} else {\n\t\telement = {\n\t\t\ttag: 'path',\n\t\t\tattributes: {\n\t\t\t\tfill: 'currentColor',\n\t\t\t\td: vectorData,\n\t\t\t},\n\t\t};\n\t}\n\n\treturn {\n\t\tfound: true,\n\t\twidth: width,\n\t\theight: height,\n\t\ticon: element,\n\t};\n}\nfunction findIcon(iconName, prefix) {\n\treturn new picked(function (resolve, reject) {\n\t\tvar val = {\n\t\t\tfound: false,\n\t\t\twidth: 512,\n\t\t\theight: 512,\n\t\t\ticon: missing,\n\t\t};\n\n\t\tif (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n\t\t\tvar icon = styles$2[prefix][iconName];\n\t\t\treturn resolve(asFoundIcon(icon));\n\t\t}\n\n\t\tif (iconName && prefix && !config.showMissingIcons) {\n\t\t\treject(\n\t\t\t\tnew MissingIcon(\n\t\t\t\t\t'Icon is missing for prefix '\n\t\t\t\t\t\t.concat(prefix, ' with icon name ')\n\t\t\t\t\t\t.concat(iconName),\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\tresolve(val);\n\t\t}\n\t});\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n\tvar iconName = nodeMeta.iconName,\n\t\ttitle = nodeMeta.title,\n\t\tprefix = nodeMeta.prefix,\n\t\ttransform = nodeMeta.transform,\n\t\tsymbol = nodeMeta.symbol,\n\t\tmask = nodeMeta.mask,\n\t\textra = nodeMeta.extra;\n\treturn new picked(function (resolve, reject) {\n\t\tpicked\n\t\t\t.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)])\n\t\t\t.then(function (_ref) {\n\t\t\t\tvar _ref2 = _slicedToArray(_ref, 2),\n\t\t\t\t\tmain = _ref2[0],\n\t\t\t\t\tmask = _ref2[1];\n\n\t\t\t\tresolve([\n\t\t\t\t\tnode,\n\t\t\t\t\tmakeInlineSvgAbstract({\n\t\t\t\t\t\ticons: {\n\t\t\t\t\t\t\tmain: main,\n\t\t\t\t\t\t\tmask: mask,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprefix: prefix,\n\t\t\t\t\t\ticonName: iconName,\n\t\t\t\t\t\ttransform: transform,\n\t\t\t\t\t\tsymbol: symbol,\n\t\t\t\t\t\tmask: mask,\n\t\t\t\t\t\ttitle: title,\n\t\t\t\t\t\textra: extra,\n\t\t\t\t\t\twatchable: true,\n\t\t\t\t\t}),\n\t\t\t\t]);\n\t\t\t});\n\t});\n}\n\nfunction generateLayersText(node, nodeMeta) {\n\tvar title = nodeMeta.title,\n\t\ttransform = nodeMeta.transform,\n\t\textra = nodeMeta.extra;\n\tvar width = null;\n\tvar height = null;\n\n\tif (IS_IE) {\n\t\tvar computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n\t\tvar boundingClientRect = node.getBoundingClientRect();\n\t\twidth = boundingClientRect.width / computedFontSize;\n\t\theight = boundingClientRect.height / computedFontSize;\n\t}\n\n\tif (config.autoA11y && !title) {\n\t\textra.attributes['aria-hidden'] = 'true';\n\t}\n\n\treturn picked.resolve([\n\t\tnode,\n\t\tmakeLayersTextAbstract({\n\t\t\tcontent: node.innerHTML,\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t\ttransform: transform,\n\t\t\ttitle: title,\n\t\t\textra: extra,\n\t\t\twatchable: true,\n\t\t}),\n\t]);\n}\n\nfunction generateMutation(node) {\n\tvar nodeMeta = parseMeta(node);\n\n\tif (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n\t\treturn generateLayersText(node, nodeMeta);\n\t} else {\n\t\treturn generateSvgReplacementMutation(node, nodeMeta);\n\t}\n}\n\nfunction onTree(root) {\n\tvar callback =\n\t\targuments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\tif (!IS_DOM) return;\n\tvar htmlClassList = DOCUMENT.documentElement.classList;\n\n\tvar hclAdd = function hclAdd(suffix) {\n\t\treturn htmlClassList.add(\n\t\t\t''.concat(HTML_CLASS_I2SVG_BASE_CLASS, '-').concat(suffix),\n\t\t);\n\t};\n\n\tvar hclRemove = function hclRemove(suffix) {\n\t\treturn htmlClassList.remove(\n\t\t\t''.concat(HTML_CLASS_I2SVG_BASE_CLASS, '-').concat(suffix),\n\t\t);\n\t};\n\n\tvar prefixes = config.autoFetchSvg\n\t\t? Object.keys(PREFIX_TO_STYLE)\n\t\t: Object.keys(styles$3);\n\tvar prefixesDomQuery = [\n\t\t'.'.concat(LAYERS_TEXT_CLASSNAME, ':not([').concat(DATA_FA_I2SVG, '])'),\n\t]\n\t\t.concat(\n\t\t\tprefixes.map(function (p) {\n\t\t\t\treturn '.'.concat(p, ':not([').concat(DATA_FA_I2SVG, '])');\n\t\t\t}),\n\t\t)\n\t\t.join(', ');\n\n\tif (prefixesDomQuery.length === 0) {\n\t\treturn;\n\t}\n\n\tvar candidates = [];\n\n\ttry {\n\t\tcandidates = toArray(root.querySelectorAll(prefixesDomQuery));\n\t} catch (e) {\n\t\t// noop\n\t}\n\n\tif (candidates.length > 0) {\n\t\thclAdd('pending');\n\t\thclRemove('complete');\n\t} else {\n\t\treturn;\n\t}\n\n\tvar mark = perf.begin('onTree');\n\tvar mutations = candidates.reduce(function (acc, node) {\n\t\ttry {\n\t\t\tvar mutation = generateMutation(node);\n\n\t\t\tif (mutation) {\n\t\t\t\tacc.push(mutation);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tif (!PRODUCTION) {\n\t\t\t\tif (e instanceof MissingIcon) {\n\t\t\t\t\tconsole.error(e);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn acc;\n\t}, []);\n\treturn new picked(function (resolve, reject) {\n\t\tpicked\n\t\t\t.all(mutations)\n\t\t\t.then(function (resolvedMutations) {\n\t\t\t\tperform(resolvedMutations, function () {\n\t\t\t\t\thclAdd('active');\n\t\t\t\t\thclAdd('complete');\n\t\t\t\t\thclRemove('pending');\n\t\t\t\t\tif (typeof callback === 'function') callback();\n\t\t\t\t\tmark();\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(function () {\n\t\t\t\tmark();\n\t\t\t\treject();\n\t\t\t});\n\t});\n}\nfunction onNode(node) {\n\tvar callback =\n\t\targuments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\tgenerateMutation(node).then(function (mutation) {\n\t\tif (mutation) {\n\t\t\tperform([mutation], callback);\n\t\t}\n\t});\n}\n\nfunction replaceForPosition(node, position) {\n\tvar pendingAttribute = ''\n\t\t.concat(DATA_FA_PSEUDO_ELEMENT_PENDING)\n\t\t.concat(position.replace(':', '-'));\n\treturn new picked(function (resolve, reject) {\n\t\tif (node.getAttribute(pendingAttribute) !== null) {\n\t\t\t// This node is already being processed\n\t\t\treturn resolve();\n\t\t}\n\n\t\tvar children = toArray(node.children);\n\t\tvar alreadyProcessedPseudoElement = children.filter(function (c) {\n\t\t\treturn c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n\t\t})[0];\n\t\tvar styles = WINDOW.getComputedStyle(node, position);\n\t\tvar fontFamily = styles\n\t\t\t.getPropertyValue('font-family')\n\t\t\t.match(FONT_FAMILY_PATTERN);\n\t\tvar fontWeight = styles.getPropertyValue('font-weight');\n\n\t\tif (alreadyProcessedPseudoElement && !fontFamily) {\n\t\t\t// If we've already processed it but the current computed style does not result in a font-family,\n\t\t\t// that probably means that a class name that was previously present to make the icon has been\n\t\t\t// removed. So we now should delete the icon.\n\t\t\tnode.removeChild(alreadyProcessedPseudoElement);\n\t\t\treturn resolve();\n\t\t} else if (fontFamily) {\n\t\t\tvar content = styles.getPropertyValue('content');\n\t\t\tvar prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands'].indexOf(\n\t\t\t\tfontFamily[1],\n\t\t\t)\n\t\t\t\t? STYLE_TO_PREFIX[fontFamily[1].toLowerCase()]\n\t\t\t\t: FONT_WEIGHT_TO_PREFIX[fontWeight];\n\t\t\tvar hexValue = toHex(\n\t\t\t\tcontent.length === 3 ? content.substr(1, 1) : content,\n\t\t\t);\n\t\t\tvar iconName = byUnicode(prefix, hexValue);\n\t\t\tvar iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n\t\t\t// already done so with the same prefix and iconName\n\n\t\t\tif (\n\t\t\t\ticonName &&\n\t\t\t\t(!alreadyProcessedPseudoElement ||\n\t\t\t\t\talreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix ||\n\t\t\t\t\talreadyProcessedPseudoElement.getAttribute(DATA_ICON) !==\n\t\t\t\t\t\ticonIdentifier)\n\t\t\t) {\n\t\t\t\tnode.setAttribute(pendingAttribute, iconIdentifier);\n\n\t\t\t\tif (alreadyProcessedPseudoElement) {\n\t\t\t\t\t// Delete the old one, since we're replacing it with a new one\n\t\t\t\t\tnode.removeChild(alreadyProcessedPseudoElement);\n\t\t\t\t}\n\n\t\t\t\tvar meta = blankMeta();\n\t\t\t\tvar extra = meta.extra;\n\t\t\t\textra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n\t\t\t\tfindIcon(iconName, prefix)\n\t\t\t\t\t.then(function (main) {\n\t\t\t\t\t\tvar abstract = makeInlineSvgAbstract(\n\t\t\t\t\t\t\t_objectSpread({}, meta, {\n\t\t\t\t\t\t\t\ticons: {\n\t\t\t\t\t\t\t\t\tmain: main,\n\t\t\t\t\t\t\t\t\tmask: emptyCanonicalIcon(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tprefix: prefix,\n\t\t\t\t\t\t\t\ticonName: iconIdentifier,\n\t\t\t\t\t\t\t\textra: extra,\n\t\t\t\t\t\t\t\twatchable: true,\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tvar element = DOCUMENT.createElement('svg');\n\n\t\t\t\t\t\tif (position === ':before') {\n\t\t\t\t\t\t\tnode.insertBefore(element, node.firstChild);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.appendChild(element);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\telement.outerHTML = abstract\n\t\t\t\t\t\t\t.map(function (a) {\n\t\t\t\t\t\t\t\treturn toHtml(a);\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.join('\\n');\n\t\t\t\t\t\tnode.removeAttribute(pendingAttribute);\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t})\n\t\t\t\t\t.catch(reject);\n\t\t\t} else {\n\t\t\t\tresolve();\n\t\t\t}\n\t\t} else {\n\t\t\tresolve();\n\t\t}\n\t});\n}\n\nfunction replace(node) {\n\treturn picked.all([\n\t\treplaceForPosition(node, ':before'),\n\t\treplaceForPosition(node, ':after'),\n\t]);\n}\n\nfunction processable(node) {\n\treturn (\n\t\tnode.parentNode !== document.head &&\n\t\t!~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) &&\n\t\t!node.getAttribute(DATA_FA_PSEUDO_ELEMENT) &&\n\t\t(!node.parentNode || node.parentNode.tagName !== 'svg')\n\t);\n}\n\nfunction searchPseudoElements(root) {\n\tif (!IS_DOM) return;\n\treturn new picked(function (resolve, reject) {\n\t\tvar operations = toArray(root.querySelectorAll('*'))\n\t\t\t.filter(processable)\n\t\t\t.map(replace);\n\t\tvar end = perf.begin('searchPseudoElements');\n\t\tdisableObservation();\n\t\tpicked\n\t\t\t.all(operations)\n\t\t\t.then(function () {\n\t\t\t\tend();\n\t\t\t\tenableObservation();\n\t\t\t\tresolve();\n\t\t\t})\n\t\t\t.catch(function () {\n\t\t\t\tend();\n\t\t\t\tenableObservation();\n\t\t\t\treject();\n\t\t\t});\n\t});\n}\n\nvar baseStyles =\n\t'svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}';\n\nfunction css() {\n\tvar dfp = DEFAULT_FAMILY_PREFIX;\n\tvar drc = DEFAULT_REPLACEMENT_CLASS;\n\tvar fp = config.familyPrefix;\n\tvar rc = config.replacementClass;\n\tvar s = baseStyles;\n\n\tif (fp !== dfp || rc !== drc) {\n\t\tvar dPatt = new RegExp('\\\\.'.concat(dfp, '\\\\-'), 'g');\n\t\tvar customPropPatt = new RegExp('\\\\--'.concat(dfp, '\\\\-'), 'g');\n\t\tvar rPatt = new RegExp('\\\\.'.concat(drc), 'g');\n\t\ts = s\n\t\t\t.replace(dPatt, '.'.concat(fp, '-'))\n\t\t\t.replace(customPropPatt, '--'.concat(fp, '-'))\n\t\t\t.replace(rPatt, '.'.concat(rc));\n\t}\n\n\treturn s;\n}\n\nvar Library =\n\t/*#__PURE__*/\n\t(function () {\n\t\tfunction Library() {\n\t\t\t_classCallCheck(this, Library);\n\n\t\t\tthis.definitions = {};\n\t\t}\n\n\t\t_createClass(Library, [\n\t\t\t{\n\t\t\t\tkey: 'add',\n\t\t\t\tvalue: function add() {\n\t\t\t\t\tvar _this = this;\n\n\t\t\t\t\tfor (\n\t\t\t\t\t\tvar _len = arguments.length,\n\t\t\t\t\t\t\tdefinitions = new Array(_len),\n\t\t\t\t\t\t\t_key = 0;\n\t\t\t\t\t\t_key < _len;\n\t\t\t\t\t\t_key++\n\t\t\t\t\t) {\n\t\t\t\t\t\tdefinitions[_key] = arguments[_key];\n\t\t\t\t\t}\n\n\t\t\t\t\tvar additions = definitions.reduce(this._pullDefinitions, {});\n\t\t\t\t\tObject.keys(additions).forEach(function (key) {\n\t\t\t\t\t\t_this.definitions[key] = _objectSpread(\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t_this.definitions[key] || {},\n\t\t\t\t\t\t\tadditions[key],\n\t\t\t\t\t\t);\n\t\t\t\t\t\tdefineIcons(key, additions[key]);\n\t\t\t\t\t\tbuild();\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'reset',\n\t\t\t\tvalue: function reset() {\n\t\t\t\t\tthis.definitions = {};\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: '_pullDefinitions',\n\t\t\t\tvalue: function _pullDefinitions(additions, definition) {\n\t\t\t\t\tvar normalized =\n\t\t\t\t\t\tdefinition.prefix && definition.iconName && definition.icon\n\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t0: definition,\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: definition;\n\t\t\t\t\tObject.keys(normalized).map(function (key) {\n\t\t\t\t\t\tvar _normalized$key = normalized[key],\n\t\t\t\t\t\t\tprefix = _normalized$key.prefix,\n\t\t\t\t\t\t\ticonName = _normalized$key.iconName,\n\t\t\t\t\t\t\ticon = _normalized$key.icon;\n\t\t\t\t\t\tif (!additions[prefix]) additions[prefix] = {};\n\t\t\t\t\t\tadditions[prefix][iconName] = icon;\n\t\t\t\t\t});\n\t\t\t\t\treturn additions;\n\t\t\t\t},\n\t\t\t},\n\t\t]);\n\n\t\treturn Library;\n\t})();\n\nfunction ensureCss() {\n\tif (config.autoAddCss && !_cssInserted) {\n\t\tinsertCss(css());\n\n\t\t_cssInserted = true;\n\t}\n}\n\nfunction apiObject(val, abstractCreator) {\n\tObject.defineProperty(val, 'abstract', {\n\t\tget: abstractCreator,\n\t});\n\tObject.defineProperty(val, 'html', {\n\t\tget: function get() {\n\t\t\treturn val.abstract.map(function (a) {\n\t\t\t\treturn toHtml(a);\n\t\t\t});\n\t\t},\n\t});\n\tObject.defineProperty(val, 'node', {\n\t\tget: function get() {\n\t\t\tif (!IS_DOM) return;\n\t\t\tvar container = DOCUMENT.createElement('div');\n\t\t\tcontainer.innerHTML = val.html;\n\t\t\treturn container.children;\n\t\t},\n\t});\n\treturn val;\n}\n\nfunction findIconDefinition(iconLookup) {\n\tvar _iconLookup$prefix = iconLookup.prefix,\n\t\tprefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n\t\ticonName = iconLookup.iconName;\n\tif (!iconName) return;\n\treturn (\n\t\ticonFromMapping(library.definitions, prefix, iconName) ||\n\t\ticonFromMapping(namespace.styles, prefix, iconName)\n\t);\n}\n\nfunction resolveIcons(next) {\n\treturn function (maybeIconDefinition) {\n\t\tvar params =\n\t\t\targuments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\tvar iconDefinition = (maybeIconDefinition || {}).icon\n\t\t\t? maybeIconDefinition\n\t\t\t: findIconDefinition(maybeIconDefinition || {});\n\t\tvar mask = params.mask;\n\n\t\tif (mask) {\n\t\t\tmask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n\t\t}\n\n\t\treturn next(\n\t\t\ticonDefinition,\n\t\t\t_objectSpread({}, params, {\n\t\t\t\tmask: mask,\n\t\t\t}),\n\t\t);\n\t};\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n\tconfig.autoReplaceSvg = false;\n\tconfig.observeMutations = false;\n\tdisconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n\ti2svg: function i2svg() {\n\t\tvar params =\n\t\t\targuments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n\t\tif (IS_DOM) {\n\t\t\tensureCss();\n\t\t\tvar _params$node = params.node,\n\t\t\t\tnode = _params$node === void 0 ? DOCUMENT : _params$node,\n\t\t\t\t_params$callback = params.callback,\n\t\t\t\tcallback =\n\t\t\t\t\t_params$callback === void 0 ? function () {} : _params$callback;\n\n\t\t\tif (config.searchPseudoElements) {\n\t\t\t\tsearchPseudoElements(node);\n\t\t\t}\n\n\t\t\treturn onTree(node, callback);\n\t\t} else {\n\t\t\treturn picked.reject('Operation requires a DOM of some kind.');\n\t\t}\n\t},\n\tcss: css,\n\tinsertCss: function insertCss$$1() {\n\t\tif (!_cssInserted) {\n\t\t\tinsertCss(css());\n\n\t\t\t_cssInserted = true;\n\t\t}\n\t},\n\twatch: function watch() {\n\t\tvar params =\n\t\t\targuments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\t\tvar autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n\t\t\tobserveMutationsRoot = params.observeMutationsRoot;\n\n\t\tif (config.autoReplaceSvg === false) {\n\t\t\tconfig.autoReplaceSvg = true;\n\t\t}\n\n\t\tconfig.observeMutations = true;\n\t\tdomready(function () {\n\t\t\tautoReplace({\n\t\t\t\tautoReplaceSvgRoot: autoReplaceSvgRoot,\n\t\t\t});\n\t\t\tobserve({\n\t\t\t\ttreeCallback: onTree,\n\t\t\t\tnodeCallback: onNode,\n\t\t\t\tpseudoElementsCallback: searchPseudoElements,\n\t\t\t\tobserveMutationsRoot: observeMutationsRoot,\n\t\t\t});\n\t\t});\n\t},\n};\nvar parse = {\n\ttransform: function transform(transformString) {\n\t\treturn parseTransformString(transformString);\n\t},\n};\nvar icon = resolveIcons(function (iconDefinition) {\n\tvar params =\n\t\targuments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\tvar _params$transform = params.transform,\n\t\ttransform =\n\t\t\t_params$transform === void 0 ? meaninglessTransform : _params$transform,\n\t\t_params$symbol = params.symbol,\n\t\tsymbol = _params$symbol === void 0 ? false : _params$symbol,\n\t\t_params$mask = params.mask,\n\t\tmask = _params$mask === void 0 ? null : _params$mask,\n\t\t_params$title = params.title,\n\t\ttitle = _params$title === void 0 ? null : _params$title,\n\t\t_params$classes = params.classes,\n\t\tclasses = _params$classes === void 0 ? [] : _params$classes,\n\t\t_params$attributes = params.attributes,\n\t\tattributes = _params$attributes === void 0 ? {} : _params$attributes,\n\t\t_params$styles = params.styles,\n\t\tstyles = _params$styles === void 0 ? {} : _params$styles;\n\tif (!iconDefinition) return;\n\tvar prefix = iconDefinition.prefix,\n\t\ticonName = iconDefinition.iconName,\n\t\ticon = iconDefinition.icon;\n\treturn apiObject(\n\t\t_objectSpread(\n\t\t\t{\n\t\t\t\ttype: 'icon',\n\t\t\t},\n\t\t\ticonDefinition,\n\t\t),\n\t\tfunction () {\n\t\t\tensureCss();\n\n\t\t\tif (config.autoA11y) {\n\t\t\t\tif (title) {\n\t\t\t\t\tattributes['aria-labelledby'] = ''\n\t\t\t\t\t\t.concat(config.replacementClass, '-title-')\n\t\t\t\t\t\t.concat(nextUniqueId());\n\t\t\t\t} else {\n\t\t\t\t\tattributes['aria-hidden'] = 'true';\n\t\t\t\t\tattributes['focusable'] = 'false';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn makeInlineSvgAbstract({\n\t\t\t\ticons: {\n\t\t\t\t\tmain: asFoundIcon(icon),\n\t\t\t\t\tmask: mask\n\t\t\t\t\t\t? asFoundIcon(mask.icon)\n\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\tfound: false,\n\t\t\t\t\t\t\t\twidth: null,\n\t\t\t\t\t\t\t\theight: null,\n\t\t\t\t\t\t\t\ticon: {},\n\t\t\t\t\t\t },\n\t\t\t\t},\n\t\t\t\tprefix: prefix,\n\t\t\t\ticonName: iconName,\n\t\t\t\ttransform: _objectSpread({}, meaninglessTransform, transform),\n\t\t\t\tsymbol: symbol,\n\t\t\t\ttitle: title,\n\t\t\t\textra: {\n\t\t\t\t\tattributes: attributes,\n\t\t\t\t\tstyles: styles,\n\t\t\t\t\tclasses: classes,\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t);\n});\nvar text = function text(content) {\n\tvar params =\n\t\targuments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\tvar _params$transform2 = params.transform,\n\t\ttransform =\n\t\t\t_params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n\t\t_params$title2 = params.title,\n\t\ttitle = _params$title2 === void 0 ? null : _params$title2,\n\t\t_params$classes2 = params.classes,\n\t\tclasses = _params$classes2 === void 0 ? [] : _params$classes2,\n\t\t_params$attributes2 = params.attributes,\n\t\tattributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n\t\t_params$styles2 = params.styles,\n\t\tstyles = _params$styles2 === void 0 ? {} : _params$styles2;\n\treturn apiObject(\n\t\t{\n\t\t\ttype: 'text',\n\t\t\tcontent: content,\n\t\t},\n\t\tfunction () {\n\t\t\tensureCss();\n\t\t\treturn makeLayersTextAbstract({\n\t\t\t\tcontent: content,\n\t\t\t\ttransform: _objectSpread({}, meaninglessTransform, transform),\n\t\t\t\ttitle: title,\n\t\t\t\textra: {\n\t\t\t\t\tattributes: attributes,\n\t\t\t\t\tstyles: styles,\n\t\t\t\t\tclasses: [''.concat(config.familyPrefix, '-layers-text')].concat(\n\t\t\t\t\t\t_toConsumableArray(classes),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t);\n};\nvar counter = function counter(content) {\n\tvar params =\n\t\targuments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\tvar _params$title3 = params.title,\n\t\ttitle = _params$title3 === void 0 ? null : _params$title3,\n\t\t_params$classes3 = params.classes,\n\t\tclasses = _params$classes3 === void 0 ? [] : _params$classes3,\n\t\t_params$attributes3 = params.attributes,\n\t\tattributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n\t\t_params$styles3 = params.styles,\n\t\tstyles = _params$styles3 === void 0 ? {} : _params$styles3;\n\treturn apiObject(\n\t\t{\n\t\t\ttype: 'counter',\n\t\t\tcontent: content,\n\t\t},\n\t\tfunction () {\n\t\t\tensureCss();\n\t\t\treturn makeLayersCounterAbstract({\n\t\t\t\tcontent: content.toString(),\n\t\t\t\ttitle: title,\n\t\t\t\textra: {\n\t\t\t\t\tattributes: attributes,\n\t\t\t\t\tstyles: styles,\n\t\t\t\t\tclasses: [''.concat(config.familyPrefix, '-layers-counter')].concat(\n\t\t\t\t\t\t_toConsumableArray(classes),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t);\n};\nvar layer = function layer(assembler) {\n\treturn apiObject(\n\t\t{\n\t\t\ttype: 'layer',\n\t\t},\n\t\tfunction () {\n\t\t\tensureCss();\n\t\t\tvar children = [];\n\t\t\tassembler(function (args) {\n\t\t\t\tArray.isArray(args)\n\t\t\t\t\t? args.map(function (a) {\n\t\t\t\t\t\t\tchildren = children.concat(a.abstract);\n\t\t\t\t\t })\n\t\t\t\t\t: (children = children.concat(args.abstract));\n\t\t\t});\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\ttag: 'span',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tclass: ''.concat(config.familyPrefix, '-layers'),\n\t\t\t\t\t},\n\t\t\t\t\tchildren: children,\n\t\t\t\t},\n\t\t\t];\n\t\t},\n\t);\n};\nvar api = {\n\tnoAuto: noAuto,\n\tconfig: config,\n\tdom: dom,\n\tlibrary: library,\n\tparse: parse,\n\tfindIconDefinition: findIconDefinition,\n\ticon: icon,\n\ttext: text,\n\tcounter: counter,\n\tlayer: layer,\n\ttoHtml: toHtml,\n};\n\nvar autoReplace = function autoReplace() {\n\tvar params =\n\t\targuments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\tvar _params$autoReplaceSv = params.autoReplaceSvgRoot,\n\t\tautoReplaceSvgRoot =\n\t\t\t_params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n\tif (\n\t\t(Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) &&\n\t\tIS_DOM &&\n\t\tconfig.autoReplaceSvg\n\t)\n\t\tapi.dom.i2svg({\n\t\t\tnode: autoReplaceSvgRoot,\n\t\t});\n};\n\nexport {\n\ticon,\n\tnoAuto,\n\tconfig,\n\ttoHtml,\n\tlayer,\n\ttext,\n\tcounter,\n\tlibrary,\n\tdom,\n\tparse,\n\tfindIconDefinition,\n};\n","/*!\n * Font Awesome Pro 5.15.4 by @fontawesome - https://fontawesome.com\n * License - https://fontawesome.com/license (Commercial License)\n */\nvar prefix = \"fas\";\nvar faAbacus = {\n prefix: 'fas',\n iconName: 'abacus',\n icon: [576, 512, [], \"f640\", \"M32 0C14.33 0 0 14.33 0 32v464c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V32C64 14.33 49.67 0 32 0zm512 0c-17.67 0-32 14.33-32 32v464c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V32c0-17.67-14.33-32-32-32zm-80 32h-32c-8.84 0-16 7.16-16 16v24H256V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v24h-32V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-24h32v24c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-24h160v24c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16zM352 208c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v24h-32v-24c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v24h-32v-24c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-24h32v24c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-24h32v24c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-24h128v-48H352v-24zm112 144h-32c-8.84 0-16 7.16-16 16v24H256v-24c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v24h-32v-24c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-24h32v24c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-24h160v24c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16z\"]\n};\nvar faAcorn = {\n prefix: 'fas',\n iconName: 'acorn',\n icon: [448, 512, [], \"f6ae\", \"M175.11 487.55L224 512l48.89-24.45C360.6 443.7 416 354.06 416 256H32c0 98.06 55.4 187.7 143.11 231.55zM352 64H251.5c3.4-9.4 8.47-18.18 15.16-26.04 5.56-6.52 5.31-15.91-.62-21.86L254.69 4.78c-3.12-3.16-7.72-5.14-11.97-4.72-4.38.14-8.5 2.08-11.31 5.3-14.75 16.8-24.55 37.06-29.39 58.65H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32C448 106.98 405.02 64 352 64z\"]\n};\nvar faAd = {\n prefix: 'fas',\n iconName: 'ad',\n icon: [512, 512, [], \"f641\", \"M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faAdjust = {\n prefix: 'fas',\n iconName: 'adjust',\n icon: [512, 512, [], \"f042\", \"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\"]\n};\nvar faAirConditioner = {\n prefix: 'fas',\n iconName: 'air-conditioner',\n icon: [576, 512, [], \"f8f4\", \"M544,0H32A32,32,0,0,0,0,32V192a32,32,0,0,0,32,32H544a32,32,0,0,0,32-32V32A32,32,0,0,0,544,0ZM512,160H64V128H512ZM216,424a40,40,0,0,1-40,40h-6.22c-20,0-38.18-13.88-41.28-33.61-2.88-18.41,6.92-34.22,21.84-41.47,5.73-2.78,9.66-8.25,9.66-14.63V356.67a16.1,16.1,0,0,0-21.42-15.17A87.55,87.55,0,0,0,80.7,435.24C86.26,479.82,126.55,512,171.47,512H176a88,88,0,0,0,88-88V256H216ZM437.42,309.5A16.1,16.1,0,0,0,416,324.67v17.62c0,6.38,3.93,11.85,9.66,14.63,14.92,7.25,24.72,23.06,21.84,41.47C444.4,418.12,426.2,432,406.22,432H400a40,40,0,0,1-40-40V256H312V392a88,88,0,0,0,88,88h4.53c44.92,0,85.21-32.18,90.77-76.76A87.55,87.55,0,0,0,437.42,309.5Z\"]\n};\nvar faAirFreshener = {\n prefix: 'fas',\n iconName: 'air-freshener',\n icon: [512, 512, [], \"f5d0\", \"M224 160H96C43 160 0 203 0 256V480C0 497.625 14.375 512 32 512H288C305.625 512 320 497.625 320 480V256C320 203 277 160 224 160ZM160 416C115.875 416 80 380.125 80 336S115.875 256 160 256S240 291.875 240 336S204.125 416 160 416ZM224 32C224 14.375 209.625 0 192 0H128C110.375 0 96 14.375 96 32V128H224V32ZM381.781 51.578C383 50.969 384 49.359 384 48C384 46.625 383 45.031 381.781 44.422L352 32L339.562 2.219C338.969 1 337.375 0 336 0S333.031 1 332.406 2.219L320 32L290.219 44.422C289 45.031 288 46.625 288 48C288 49.359 289 50.969 290.219 51.578L320 64L332.406 93.781C333.031 95 334.625 96 336 96S338.969 95 339.562 93.781L352 64L381.781 51.578ZM448 64L460.406 93.781C461.031 95 462.625 96 464 96S466.969 95 467.562 93.781L480 64L509.781 51.578C511 50.969 512 49.359 512 48C512 46.625 511 45.031 509.781 44.422L480 32L467.562 2.219C466.969 1 465.375 0 464 0S461.031 1 460.406 2.219L448 32L418.219 44.422C417 45.031 416 46.625 416 48C416 49.359 417 50.969 418.219 51.578L448 64ZM480 224L467.562 194.219C466.969 193 465.375 192 464 192S461.031 193 460.406 194.219L448 224L418.219 236.422C417 237.031 416 238.625 416 240C416 241.359 417 242.969 418.219 243.578L448 256L460.406 285.781C461.031 287 462.625 288 464 288S466.969 287 467.562 285.781L480 256L509.781 243.578C511 242.969 512 241.359 512 240C512 238.625 511 237.031 509.781 236.422L480 224ZM445.781 147.578C447 146.969 448 145.359 448 144C448 142.625 447 141.031 445.781 140.422L416 128L403.562 98.219C402.969 97 401.375 96 400 96S397.031 97 396.406 98.219L384 128L354.219 140.422C353 141.031 352 142.625 352 144C352 145.359 353 146.969 354.219 147.578L384 160L396.406 189.781C397.031 191 398.625 192 400 192S402.969 191 403.562 189.781L416 160L445.781 147.578Z\"]\n};\nvar faAlarmClock = {\n prefix: 'fas',\n iconName: 'alarm-clock',\n icon: [512, 512, [], \"f34e\", \"M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm90 291.51l-20 25a16 16 0 0 1-22.49 2.5L239 331.39a40 40 0 0 1-15-31.23V176a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16v112.62l55.5 44.4a16 16 0 0 1 2.5 22.49z\"]\n};\nvar faAlarmExclamation = {\n prefix: 'fas',\n iconName: 'alarm-exclamation',\n icon: [512, 512, [], \"f843\", \"M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm0 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-128a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z\"]\n};\nvar faAlarmPlus = {\n prefix: 'fas',\n iconName: 'alarm-plus',\n icon: [512, 512, [], \"f844\", \"M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm112 232a16 16 0 0 1-16 16h-72v72a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-72h-72a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h72v-72a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16v72h72a16 16 0 0 1 16 16z\"]\n};\nvar faAlarmSnooze = {\n prefix: 'fas',\n iconName: 'alarm-snooze',\n icon: [512, 512, [], \"f845\", \"M96 0A96 96 0 0 0 0 96a94.81 94.81 0 0 0 15.3 51.26L161.2 25.68A95.63 95.63 0 0 0 96 0zm320 0a95.66 95.66 0 0 0-65.18 25.66l145.89 121.57A94.85 94.85 0 0 0 512 96a96 96 0 0 0-96-96zM256 64C132.3 64 32 164.29 32 288a222.7 222.7 0 0 0 44.79 134l-40.1 40.09a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0L122 467.22a222.82 222.82 0 0 0 268 0l40.1 40.09a16 16 0 0 0 22.62 0l22.63-22.62a16 16 0 0 0 0-22.63L435.25 422A222.69 222.69 0 0 0 480 288c0-123.71-100.26-224-224-224zm82.7 159l-96.8 121H320a16 16 0 0 1 16 16v16a16 16 0 0 1-16 16H192a24 24 0 0 1-18.74-39L270 232h-78a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h128a24 24 0 0 1 18.73 39z\"]\n};\nvar faAlbum = {\n prefix: 'fas',\n iconName: 'album',\n icon: [448, 512, [], \"f89f\", \"M224 224a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zM224 416a160 160 0 1 1 160-160 160 160 0 0 1-160 160z\"]\n};\nvar faAlbumCollection = {\n prefix: 'fas',\n iconName: 'album-collection',\n icon: [512, 512, [], \"f8a0\", \"M496 104a24 24 0 0 0-24-24H40a24 24 0 0 0-24 24v24h480zm-16-80a24 24 0 0 0-24-24H56a24 24 0 0 0-24 24v24h448zM256 325.65c-16.63 0-30 9.93-29.86 22.09s13.5 21.72 29.86 21.72 29.73-9.68 29.87-21.72-13.23-22.09-29.87-22.09zM480 160H32A32 32 0 0 0 .13 194.9l26.19 288A32 32 0 0 0 58.18 512h395.64a32 32 0 0 0 31.86-29.1l26.19-288A32 32 0 0 0 480 160zM256 472.89c-94.26 0-174.39-54.53-179.21-125.15C71.71 273.1 151.82 209.4 256 209.4s184.29 63.7 179.21 138.34c-4.82 70.63-84.95 125.15-179.21 125.15z\"]\n};\nvar faAlicorn = {\n prefix: 'fas',\n iconName: 'alicorn',\n icon: [640, 512, [], \"f6b0\", \"M631.98 32H531.73c5.93-6.14 10.4-13.63 12.18-22.36 1.01-4.96-2.88-9.64-7.94-9.64H416c-70.69 0-128 57.31-128 128h-.08c-63.92 0-104.2-36.78-127.66-90.27-3.22-7.35-13.61-7.76-17.04-.5C133.49 57.82 128 80.8 128 105.1c0 67.04 51.01 133.09 128 147.74v3.17c-76.89 0-133.8-49.67-152.67-108.99-5.58 4.17-10.75 8.86-15.33 14.1V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59 102.04 22.33V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74L544 83.3l92.42-36.65c6.59-4.38 3.48-14.65-4.44-14.65zM480 96c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faAlien = {\n prefix: 'fas',\n iconName: 'alien',\n icon: [448, 512, [], \"f8f5\", \"M224,0C100.28125,0,0,88.0293,0,232.45117,0,344.22852,134.21484,457.04883,194.86328,502.32422a48.70766,48.70766,0,0,0,58.27344,0C313.78516,457.04883,448,344.22852,448,232.45117,448,88.0293,347.71875,0,224,0ZM176,320H144a80.00021,80.00021,0,0,1-80-80,15.99954,15.99954,0,0,1,16-16h32a79.999,79.999,0,0,1,80,80A16.00079,16.00079,0,0,1,176,320Zm128,0H272a16.00079,16.00079,0,0,1-16-16,79.999,79.999,0,0,1,80-80h32a15.99954,15.99954,0,0,1,16,16A80.00021,80.00021,0,0,1,304,320Z\"]\n};\nvar faAlienMonster = {\n prefix: 'fas',\n iconName: 'alien-monster',\n icon: [576, 512, [], \"f8f6\", \"M560,128H528a15.99954,15.99954,0,0,0-16,16v80H480V176a15.99954,15.99954,0,0,0-16-16H416V96h48a16.00079,16.00079,0,0,0,16-16V48a15.99954,15.99954,0,0,0-16-16H432a15.99954,15.99954,0,0,0-16,16V64H368a15.99954,15.99954,0,0,0-16,16v48H224V80a15.99954,15.99954,0,0,0-16-16H160V48a15.99954,15.99954,0,0,0-16-16H112A15.99954,15.99954,0,0,0,96,48V80a16.00079,16.00079,0,0,0,16,16h48v64H112a15.99954,15.99954,0,0,0-16,16v48H64V144a15.99954,15.99954,0,0,0-16-16H16A15.99954,15.99954,0,0,0,0,144V272a16.00079,16.00079,0,0,0,16,16H64v80a16.00079,16.00079,0,0,0,16,16h48v80a16.00079,16.00079,0,0,0,16,16h96a16.00079,16.00079,0,0,0,16-16V432a15.99954,15.99954,0,0,0-16-16H192V384H384v32H336a15.99954,15.99954,0,0,0-16,16v32a16.00079,16.00079,0,0,0,16,16h96a16.00079,16.00079,0,0,0,16-16V384h48a16.00079,16.00079,0,0,0,16-16V288h48a16.00079,16.00079,0,0,0,16-16V144A15.99954,15.99954,0,0,0,560,128ZM224,320H160V224h64Zm192,0H352V224h64Z\"]\n};\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"]\n};\nvar faAlignSlash = {\n prefix: 'fas',\n iconName: 'align-slash',\n icon: [640, 512, [], \"f846\", \"M633.82 458.1L496.54 352H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H413.73l-82.81-64H528a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H248.12l-82.81-64H528a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a15.82 15.82 0 0 0-15 11.18L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM112 416a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h340.83L370 416zm0-64h175.21l-82.8-64H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16z\"]\n};\nvar faAllergies = {\n prefix: 'fas',\n iconName: 'allergies',\n icon: [448, 512, [], \"f461\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faAmbulance = {\n prefix: 'fas',\n iconName: 'ambulance',\n icon: [640, 512, [], \"f0f9\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n prefix: 'fas',\n iconName: 'american-sign-language-interpreting',\n icon: [640, 512, [], \"f2a3\", \"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\"]\n};\nvar faAmpGuitar = {\n prefix: 'fas',\n iconName: 'amp-guitar',\n icon: [512, 512, [], \"f8a1\", \"M120 224a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm272 0a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm72-144h-61.5C377.75 52.71 321.51 0 256 0S134.25 52.71 109.5 80H48a48 48 0 0 0-48 48v336a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V128a48 48 0 0 0-48-48zM256 48c26.9 0 54 14.79 76.25 32h-152.5C202 62.77 229.1 48 256 48zM96 400a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 48a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm-16-112a16 16 0 1 1 16 16 16 16 0 0 1-16-16zm48 64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 48a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm-16-112a16 16 0 1 1 16 16 16 16 0 0 1-16-16zm48 64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 48a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm-16-112a16 16 0 1 1 16 16 16 16 0 0 1-16-16zm48 64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 48a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm-16-112a16 16 0 1 1 16 16 16 16 0 0 1-16-16zm48 64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32 48a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm-16-112a16 16 0 1 1 16 16 16 16 0 0 1-16-16zm48 64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm32-144H64V144h384zm-248-32a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm112 0a24 24 0 1 0-24-24 24 24 0 0 0 24 24z\"]\n};\nvar faAnalytics = {\n prefix: 'fas',\n iconName: 'analytics',\n icon: [576, 512, [], \"f643\", \"M510.62 92.63C516.03 94.74 521.85 96 528 96c26.51 0 48-21.49 48-48S554.51 0 528 0s-48 21.49-48 48c0 2.43.37 4.76.71 7.09l-95.34 76.27c-5.4-2.11-11.23-3.37-17.38-3.37s-11.97 1.26-17.38 3.37L255.29 55.1c.35-2.33.71-4.67.71-7.1 0-26.51-21.49-48-48-48s-48 21.49-48 48c0 4.27.74 8.34 1.78 12.28l-101.5 101.5C56.34 160.74 52.27 160 48 160c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-4.27-.74-8.34-1.78-12.28l101.5-101.5C199.66 95.26 203.73 96 208 96c6.15 0 11.97-1.26 17.38-3.37l95.34 76.27c-.35 2.33-.71 4.67-.71 7.1 0 26.51 21.49 48 48 48s48-21.49 48-48c0-2.43-.37-4.76-.71-7.09l95.32-76.28zM400 320h-64c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V336c0-8.84-7.16-16-16-16zm160-128h-64c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm-320 0h-64c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zM80 352H16c-8.84 0-16 7.16-16 16v128c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V368c0-8.84-7.16-16-16-16z\"]\n};\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [], \"f13d\", \"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngel = {\n prefix: 'fas',\n iconName: 'angel',\n icon: [576, 512, [], \"f779\", \"M208 144c0 44.2 35.8 80 80 80s80-35.8 80-80-35.8-80-80-80-80 35.8-80 80zm-23.5-42.6c4.1-9.9 9.9-18.9 16.6-27.1-5.8-4.1-9.1-7.9-9.1-10.3 0-8 34-32 96-32s96 24 96 32c0 2.3-3.3 6.1-9.1 10.3 6.6 8.3 12.4 17.2 16.6 27.1C406.7 90.9 416 78 416 64c0-35.3-57.3-64-128-64S160 28.7 160 64c0 14 9.3 26.9 24.5 37.4zm387.3 351.7l-38.2-78.6c-6.6-13.5-6.6-29.6 0-43.1 4.8-9.8 8.7-16.7 11.9-22.1C555 292.7 560 282.8 560 256c0-51.1-46.9-96-100.4-96-24.8 0-49 10.3-66.3 28.1l-72.7 73.4c-10.3-3.4-21.2-5.4-32.5-5.4s-22.1 2-32.5 5.4L183 188.2c-17.5-18-41.7-28.2-66.5-28.2C63 160 16 204.9 16 256c0 26.8 5 36.7 14.5 53.2 3.2 5.5 7.1 12.3 11.9 22.1 6.6 13.5 6.6 29.6 0 43.1L4.2 453.1C-2.1 466-1.3 480.9 6.3 493c7.5 11.9 20.2 19 34.2 19h495.1c13.9 0 26.7-7.1 34.2-19 7.5-12.1 8.3-27.1 2-39.9zM195.4 313.2L120 464H52.2l33.4-68.6c13-26.6 13-58.5 0-85.1-5.4-11.2-9.9-18.9-13.5-25.1-7.2-12.4-8.1-14-8.1-29.2 0-24.7 25.5-48 52.4-48 12.1 0 23.5 4.9 32.2 13.9l65.1 65.6c-7.2 7.5-13.5 16.1-18.3 25.7zM456 464l-75.4-150.8c-4.8-9.6-11.1-18.2-18.4-25.7l65.3-65.8c8.6-8.8 20-13.7 32.1-13.7 27 0 52.4 23.3 52.4 48 0 15.2-.9 16.8-8.1 29.2-3.6 6.2-8 14-13.5 25.1-13 26.6-13 58.5 0 85.1l33.4 68.6H456z\"]\n};\nvar faAngleDoubleDown = {\n prefix: 'fas',\n iconName: 'angle-double-down',\n icon: [320, 512, [], \"f103\", \"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\"]\n};\nvar faAngleDoubleLeft = {\n prefix: 'fas',\n iconName: 'angle-double-left',\n icon: [448, 512, [], \"f100\", \"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"]\n};\nvar faAngleDoubleRight = {\n prefix: 'fas',\n iconName: 'angle-double-right',\n icon: [448, 512, [], \"f101\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"]\n};\nvar faAngleDoubleUp = {\n prefix: 'fas',\n iconName: 'angle-double-up',\n icon: [320, 512, [], \"f102\", \"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [320, 512, [], \"f107\", \"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [256, 512, [], \"f104\", \"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [256, 512, [], \"f105\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [320, 512, [], \"f106\", \"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\"]\n};\nvar faAngry = {\n prefix: 'fas',\n iconName: 'angry',\n icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\"]\n};\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [], \"f644\", \"M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z\"]\n};\nvar faAppleAlt = {\n prefix: 'fas',\n iconName: 'apple-alt',\n icon: [448, 512, [], \"f5d1\", \"M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z\"]\n};\nvar faAppleCrate = {\n prefix: 'fas',\n iconName: 'apple-crate',\n icon: [512, 512, [], \"f6b1\", \"M318.2 192h159.79c5.26-39.47-5.15-102.65-53.82-111.39-18.13-3.03-51.9 6.18-72.49 17.69-17.01-9.52-42.45-16.98-61.15-17.79 1.82 2.21 3.83 4.17 5.5 6.58 20.84 30.15 25.74 72.3 22.17 104.91zM210.53 50.47c11.29-12.19 14.43-32.03 13.22-50.22-12.88-.86-35.67-.12-50.02 13.28-16.53 16.6-13.77 46.36-13.22 50.22 18.47 1.23 37.77-1.85 50.02-13.28zm191.69 0c11.29-12.19 14.43-32.03 13.22-50.22-12.88-.86-35.67-.12-50.02 13.28-16.53 16.6-13.77 46.36-13.22 50.22 18.47 1.23 37.77-1.85 50.02-13.28zM286.3 192c5.26-39.47-5.15-102.65-53.82-111.39-18.13-3.03-51.9 6.18-72.48 17.69-20.66-11.56-54.43-20.71-72.48-17.69C38.91 89.34 28.53 152.88 33.7 192h252.6zM496 224H16c-8.84 0-16 7.16-16 16v112h512V240c0-8.84-7.16-16-16-16zM64 304c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm384 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM0 496c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16V384H0v112zm448-64c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm-384 0c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16z\"]\n};\nvar faArchive = {\n prefix: 'fas',\n iconName: 'archive',\n icon: [512, 512, [], \"f187\", \"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [576, 512, [], \"f557\", \"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faArrowAltCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-down',\n icon: [512, 512, [], \"f358\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-left',\n icon: [512, 512, [], \"f359\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-right',\n icon: [512, 512, [], \"f35a\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-up',\n icon: [512, 512, [], \"f35b\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowAltDown = {\n prefix: 'fas',\n iconName: 'arrow-alt-down',\n icon: [448, 512, [], \"f354\", \"M176 32h96c13.3 0 24 10.7 24 24v200h103.8c21.4 0 32.1 25.8 17 41L241 473c-9.4 9.4-24.6 9.4-34 0L31.3 297c-15.1-15.1-4.4-41 17-41H152V56c0-13.3 10.7-24 24-24z\"]\n};\nvar faArrowAltFromBottom = {\n prefix: 'fas',\n iconName: 'arrow-alt-from-bottom',\n icon: [384, 512, [], \"f346\", \"M360 480H24c-13.3 0-24-10.7-24-24v-24c0-13.3 10.7-24 24-24h336c13.3 0 24 10.7 24 24v24c0 13.3-10.7 24-24 24zM256 360V224h87.7c17.8 0 26.7-21.5 14.1-34.1L205.7 37.7c-7.5-7.5-19.8-7.5-27.3 0L26.1 189.9C13.5 202.5 22.5 224 40.3 224H128v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24z\"]\n};\nvar faArrowAltFromLeft = {\n prefix: 'fas',\n iconName: 'arrow-alt-from-left',\n icon: [448, 512, [], \"f347\", \"M0 424V88c0-13.3 10.7-24 24-24h24c13.3 0 24 10.7 24 24v336c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm120-104h136v87.7c0 17.8 21.5 26.7 34.1 14.1l152.2-152.2c7.5-7.5 7.5-19.8 0-27.3L290.1 90.1c-12.6-12.6-34.1-3.7-34.1 14.1V192H120c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24z\"]\n};\nvar faArrowAltFromRight = {\n prefix: 'fas',\n iconName: 'arrow-alt-from-right',\n icon: [448, 512, [], \"f348\", \"M448 88v336c0 13.3-10.7 24-24 24h-24c-13.3 0-24-10.7-24-24V88c0-13.3 10.7-24 24-24h24c13.3 0 24 10.7 24 24zM328 192H192v-87.7c0-17.8-21.5-26.7-34.1-14.1L5.7 242.3c-7.5 7.5-7.5 19.8 0 27.3l152.2 152.2c12.6 12.6 34.1 3.7 34.1-14.1V320h136c13.3 0 24-10.7 24-24v-80c0-13.3-10.7-24-24-24z\"]\n};\nvar faArrowAltFromTop = {\n prefix: 'fas',\n iconName: 'arrow-alt-from-top',\n icon: [384, 512, [], \"f349\", \"M24 32h336c13.3 0 24 10.7 24 24v24c0 13.3-10.7 24-24 24H24C10.7 104 0 93.3 0 80V56c0-13.3 10.7-24 24-24zm104 120v136H40.3c-17.8 0-26.7 21.5-14.1 34.1l152.2 152.2c7.5 7.5 19.8 7.5 27.3 0l152.2-152.2c12.6-12.6 3.7-34.1-14.1-34.1H256V152c0-13.3-10.7-24-24-24h-80c-13.3 0-24 10.7-24 24z\"]\n};\nvar faArrowAltLeft = {\n prefix: 'fas',\n iconName: 'arrow-alt-left',\n icon: [448, 512, [], \"f355\", \"M448 208v96c0 13.3-10.7 24-24 24H224v103.8c0 21.4-25.8 32.1-41 17L7 273c-9.4-9.4-9.4-24.6 0-34L183 63.3c15.1-15.1 41-4.4 41 17V184h200c13.3 0 24 10.7 24 24z\"]\n};\nvar faArrowAltRight = {\n prefix: 'fas',\n iconName: 'arrow-alt-right',\n icon: [448, 512, [], \"f356\", \"M0 304v-96c0-13.3 10.7-24 24-24h200V80.2c0-21.4 25.8-32.1 41-17L441 239c9.4 9.4 9.4 24.6 0 34L265 448.7c-15.1 15.1-41 4.4-41-17V328H24c-13.3 0-24-10.7-24-24z\"]\n};\nvar faArrowAltSquareDown = {\n prefix: 'fas',\n iconName: 'arrow-alt-square-down',\n icon: [448, 512, [], \"f350\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-268 60v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H268V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltSquareLeft = {\n prefix: 'fas',\n iconName: 'arrow-alt-square-left',\n icon: [448, 512, [], \"f351\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm-60-268H224v-70.9c0-10.7-13-16.1-20.5-8.5L89.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltSquareRight = {\n prefix: 'fas',\n iconName: 'arrow-alt-square-right',\n icon: [448, 512, [], \"f352\", \"M48 32h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm60 268h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H108c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltSquareUp = {\n prefix: 'fas',\n iconName: 'arrow-alt-square-up',\n icon: [448, 512, [], \"f353\", \"M0 432V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48zm268-60V256h70.9c10.7 0 16.1-13 8.5-20.5L232.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3C93 243 98.4 256 109.1 256H180v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowAltToBottom = {\n prefix: 'fas',\n iconName: 'arrow-alt-to-bottom',\n icon: [384, 512, [], \"f34a\", \"M360 480H24c-13.3 0-24-10.7-24-24v-24c0-13.3 10.7-24 24-24h336c13.3 0 24 10.7 24 24v24c0 13.3-10.7 24-24 24zM128 56v136H40.3c-17.8 0-26.7 21.5-14.1 34.1l152.2 152.2c7.5 7.5 19.8 7.5 27.3 0l152.2-152.2c12.6-12.6 3.7-34.1-14.1-34.1H256V56c0-13.3-10.7-24-24-24h-80c-13.3 0-24 10.7-24 24z\"]\n};\nvar faArrowAltToLeft = {\n prefix: 'fas',\n iconName: 'arrow-alt-to-left',\n icon: [448, 512, [], \"f34b\", \"M0 424V88c0-13.3 10.7-24 24-24h24c13.3 0 24 10.7 24 24v336c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm424-232H288v-87.7c0-17.8-21.5-26.7-34.1-14.1L101.7 242.3c-7.5 7.5-7.5 19.8 0 27.3l152.2 152.2c12.6 12.6 34.1 3.7 34.1-14.1V320h136c13.3 0 24-10.7 24-24v-80c0-13.3-10.7-24-24-24z\"]\n};\nvar faArrowAltToRight = {\n prefix: 'fas',\n iconName: 'arrow-alt-to-right',\n icon: [448, 512, [], \"f34c\", \"M448 88v336c0 13.3-10.7 24-24 24h-24c-13.3 0-24-10.7-24-24V88c0-13.3 10.7-24 24-24h24c13.3 0 24 10.7 24 24zM24 320h136v87.7c0 17.8 21.5 26.7 34.1 14.1l152.2-152.2c7.5-7.5 7.5-19.8 0-27.3L194.1 90.1c-12.6-12.6-34.1-3.7-34.1 14.1V192H24c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24z\"]\n};\nvar faArrowAltToTop = {\n prefix: 'fas',\n iconName: 'arrow-alt-to-top',\n icon: [384, 512, [], \"f34d\", \"M24 32h336c13.3 0 24 10.7 24 24v24c0 13.3-10.7 24-24 24H24C10.7 104 0 93.3 0 80V56c0-13.3 10.7-24 24-24zm232 424V320h87.7c17.8 0 26.7-21.5 14.1-34.1L205.7 133.7c-7.5-7.5-19.8-7.5-27.3 0L26.1 285.9C13.5 298.5 22.5 320 40.3 320H128v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24z\"]\n};\nvar faArrowAltUp = {\n prefix: 'fas',\n iconName: 'arrow-alt-up',\n icon: [448, 512, [], \"f357\", \"M272 480h-96c-13.3 0-24-10.7-24-24V256H48.2c-21.4 0-32.1-25.8-17-41L207 39c9.4-9.4 24.6-9.4 34 0l175.8 176c15.1 15.1 4.4 41-17 41H296v200c0 13.3-10.7 24-24 24z\"]\n};\nvar faArrowCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-circle-down',\n icon: [512, 512, [], \"f0ab\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-circle-left',\n icon: [512, 512, [], \"f0a8\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-circle-right',\n icon: [512, 512, [], \"f0a9\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-circle-up',\n icon: [512, 512, [], \"f0aa\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [448, 512, [], \"f063\", \"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"]\n};\nvar faArrowFromBottom = {\n prefix: 'fas',\n iconName: 'arrow-from-bottom',\n icon: [384, 512, [], \"f342\", \"M360 480H24c-13.3 0-24-10.7-24-24v-24c0-13.3 10.7-24 24-24h336c13.3 0 24 10.7 24 24v24c0 13.3-10.7 24-24 24zM90.4 216.5l65.6-65.6V360c0 13.3 10.7 24 24 24h24c13.3 0 24-10.7 24-24V150.9l65.6 65.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L209 30.1c-9.4-9.4-24.6-9.4-33.9 0L39.5 165.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0z\"]\n};\nvar faArrowFromLeft = {\n prefix: 'fas',\n iconName: 'arrow-from-left',\n icon: [448, 512, [], \"f343\", \"M0 424V88c0-13.3 10.7-24 24-24h24c13.3 0 24 10.7 24 24v336c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm254.5-269.6l65.6 65.6H120c-13.3 0-24 10.7-24 24v24c0 13.3 10.7 24 24 24h200.1l-65.6 65.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L441 273c9.4-9.4 9.4-24.6 0-33.9L305.5 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6-.1 33.9z\"]\n};\nvar faArrowFromRight = {\n prefix: 'fas',\n iconName: 'arrow-from-right',\n icon: [448, 512, [], \"f344\", \"M448 88v336c0 13.3-10.7 24-24 24h-24c-13.3 0-24-10.7-24-24V88c0-13.3 10.7-24 24-24h24c13.3 0 24 10.7 24 24zM193.5 357.6L127.9 292H328c13.3 0 24-10.7 24-24v-24c0-13.3-10.7-24-24-24H127.9l65.6-65.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L7 239c-9.4 9.4-9.4 24.6 0 33.9l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.3 9.4-24.5.1-33.8z\"]\n};\nvar faArrowFromTop = {\n prefix: 'fas',\n iconName: 'arrow-from-top',\n icon: [384, 512, [], \"f345\", \"M24 32h336c13.3 0 24 10.7 24 24v24c0 13.3-10.7 24-24 24H24C10.7 104 0 93.3 0 80V56c0-13.3 10.7-24 24-24zm269.6 263.5L228 361.1V152c0-13.3-10.7-24-24-24h-24c-13.3 0-24 10.7-24 24v209.1l-65.6-65.6c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L175 481.9c9.4 9.4 24.6 9.4 33.9 0l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.3-9.4-24.5-9.4-33.8 0z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [], \"f060\", \"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [], \"f061\", \"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"]\n};\nvar faArrowSquareDown = {\n prefix: 'fas',\n iconName: 'arrow-square-down',\n icon: [448, 512, [], \"f339\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM328.4 227.1L256 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L207 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowSquareLeft = {\n prefix: 'fas',\n iconName: 'arrow-square-left',\n icon: [448, 512, [], \"f33a\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM252.9 360.4L177.4 288H360c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H177.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L75.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowSquareRight = {\n prefix: 'fas',\n iconName: 'arrow-square-right',\n icon: [448, 512, [], \"f33b\", \"M48 32h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48zm147.1 119.6l75.5 72.4H88c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L372.3 273c9.4-9.4 9.4-24.6 0-33.9L239.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowSquareUp = {\n prefix: 'fas',\n iconName: 'arrow-square-up',\n icon: [448, 512, [], \"f33c\", \"M0 432V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48zm119.6-147.1l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L241 107.7c-9.4-9.4-24.6-9.4-33.9 0L74.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowToBottom = {\n prefix: 'fas',\n iconName: 'arrow-to-bottom',\n icon: [384, 512, [], \"f33d\", \"M360 480H24c-13.3 0-24-10.7-24-24v-24c0-13.3 10.7-24 24-24h336c13.3 0 24 10.7 24 24v24c0 13.3-10.7 24-24 24zm-66.4-280.5L228 265.1V56c0-13.3-10.7-24-24-24h-24c-13.3 0-24 10.7-24 24v209.1l-65.6-65.6c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L175 385.9c9.4 9.4 24.6 9.4 33.9 0l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.3-9.4-24.5-9.4-33.8 0z\"]\n};\nvar faArrowToLeft = {\n prefix: 'fas',\n iconName: 'arrow-to-left',\n icon: [448, 512, [], \"f33e\", \"M0 424V88c0-13.3 10.7-24 24-24h24c13.3 0 24 10.7 24 24v336c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24zm280.5-66.4L214.9 292H424c13.3 0 24-10.7 24-24v-24c0-13.3-10.7-24-24-24H214.9l65.6-65.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L94.1 239c-9.4 9.4-9.4 24.6 0 33.9l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.3 9.4-24.5 0-33.8z\"]\n};\nvar faArrowToRight = {\n prefix: 'fas',\n iconName: 'arrow-to-right',\n icon: [448, 512, [], \"f340\", \"M448 88v336c0 13.3-10.7 24-24 24h-24c-13.3 0-24-10.7-24-24V88c0-13.3 10.7-24 24-24h24c13.3 0 24 10.7 24 24zm-280.5 66.4l65.6 65.6H24c-13.3 0-24 10.7-24 24v24c0 13.3 10.7 24 24 24h209.1l-65.6 65.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L353.9 273c9.4-9.4 9.4-24.6 0-33.9L218.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9z\"]\n};\nvar faArrowToTop = {\n prefix: 'fas',\n iconName: 'arrow-to-top',\n icon: [384, 512, [], \"f341\", \"M24 32h336c13.3 0 24 10.7 24 24v24c0 13.3-10.7 24-24 24H24C10.7 104 0 93.3 0 80V56c0-13.3 10.7-24 24-24zm66.4 280.5l65.6-65.6V456c0 13.3 10.7 24 24 24h24c13.3 0 24-10.7 24-24V246.9l65.6 65.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L209 126.1c-9.4-9.4-24.6-9.4-33.9 0L39.5 261.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0z\"]\n};\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [448, 512, [], \"f062\", \"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\"]\n};\nvar faArrows = {\n prefix: 'fas',\n iconName: 'arrows',\n icon: [512, 512, [], \"f047\", \"M352.634 428.621l-74.007 74.007c-12.497 12.497-32.758 12.497-45.255 0l-74.007-74.007c-9.373-9.373-9.373-24.569 0-33.941l10.84-10.84c9.556-9.556 25.113-9.341 34.402.474L228 410.365V284H101.635l26.051 23.392c9.815 9.289 10.03 24.846.474 34.402l-10.84 10.84c-9.373 9.373-24.569 9.373-33.941 0L9.373 278.627c-12.497-12.497-12.497-32.758 0-45.255l74.007-74.007c9.373-9.373 24.569-9.373 33.941 0l10.84 10.84c9.556 9.556 9.341 25.114-.474 34.402L101.635 228H228V101.635l-23.392 26.051c-9.289 9.815-24.846 10.03-34.402.474l-10.84-10.84c-9.373-9.373-9.373-24.569 0-33.941l74.007-74.007c12.497-12.497 32.758-12.497 45.255 0l74.007 74.007c9.373 9.373 9.373 24.569 0 33.941l-10.84 10.84c-9.556 9.556-25.113 9.341-34.402-.474L284 101.635V228h126.365l-26.051-23.392c-9.815-9.289-10.03-24.846-.474-34.402l10.84-10.84c9.373-9.373 24.569-9.373 33.941 0l74.007 74.007c12.497 12.497 12.497 32.758 0 45.255l-74.007 74.007c-9.373 9.373-24.569 9.373-33.941 0l-10.84-10.84c-9.556-9.556-9.341-25.113.474-34.402L410.365 284H284v126.365l23.392-26.051c9.289-9.815 24.846-10.03 34.402-.474l10.84 10.84c9.373 9.372 9.373 24.568 0 33.941z\"]\n};\nvar faArrowsAlt = {\n prefix: 'fas',\n iconName: 'arrows-alt',\n icon: [512, 512, [], \"f0b2\", \"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\"]\n};\nvar faArrowsAltH = {\n prefix: 'fas',\n iconName: 'arrows-alt-h',\n icon: [512, 512, [], \"f337\", \"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\"]\n};\nvar faArrowsAltV = {\n prefix: 'fas',\n iconName: 'arrows-alt-v',\n icon: [256, 512, [], \"f338\", \"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\"]\n};\nvar faArrowsH = {\n prefix: 'fas',\n iconName: 'arrows-h',\n icon: [512, 512, [], \"f07e\", \"M105.815 288h300.371l-46.208 43.728c-9.815 9.289-10.03 24.846-.474 34.402l10.84 10.84c9.373 9.373 24.569 9.373 33.941 0l98.343-98.343c12.497-12.497 12.497-32.758 0-45.255l-98.343-98.343c-9.373-9.373-24.569-9.373-33.941 0l-10.84 10.84c-9.556 9.556-9.341 25.113.474 34.402L406.186 224H105.815l46.208-43.728c9.815-9.289 10.03-24.846.474-34.402l-10.84-10.84c-9.373-9.373-24.569-9.373-33.941 0L9.373 233.372c-12.497 12.497-12.497 32.758 0 45.255l98.343 98.343c9.373 9.373 24.569 9.373 33.941 0l10.84-10.84c9.556-9.556 9.341-25.113-.474-34.402L105.815 288z\"]\n};\nvar faArrowsV = {\n prefix: 'fas',\n iconName: 'arrows-v',\n icon: [256, 512, [], \"f07d\", \"M160 406.186V105.815l43.728 46.208c9.289 9.815 24.846 10.03 34.402.474l10.84-10.84c9.373-9.373 9.373-24.569 0-33.941L150.627 9.373c-12.497-12.497-32.758-12.497-45.255 0L7.029 107.715c-9.373 9.373-9.373 24.569 0 33.941l10.84 10.84c9.556 9.556 25.113 9.341 34.402-.474L96 105.815v300.371l-43.728-46.208c-9.289-9.815-24.846-10.03-34.402-.474l-10.84 10.84c-9.373 9.373-9.373 24.569 0 33.941l98.343 98.343c12.497 12.497 32.758 12.497 45.255 0l98.343-98.343c9.373-9.373 9.373-24.569 0-33.941l-10.84-10.84c-9.556-9.556-25.113-9.341-34.402.474L160 406.186z\"]\n};\nvar faAssistiveListeningSystems = {\n prefix: 'fas',\n iconName: 'assistive-listening-systems',\n icon: [512, 512, [], \"f2a2\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [512, 512, [], \"f069\", \"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"]\n};\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [], \"f1fa\", \"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\"]\n};\nvar faAtlas = {\n prefix: 'fas',\n iconName: 'atlas',\n icon: [448, 512, [], \"f558\", \"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\"]\n};\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [448, 512, [], \"f5d2\", \"M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z\"]\n};\nvar faAtomAlt = {\n prefix: 'fas',\n iconName: 'atom-alt',\n icon: [448, 512, [], \"f5d3\", \"M400.87913,256.00022c47.5017,76.32937,66.25237,155.12752,22.2508,199.12823-41.439,41.42255-115.89477,29.188-199.13212-22.60974-83.58112,52.0321-157.8494,63.89166-199.13212,22.60974C-19.13589,411.12774-.38522,332.32959,47.11648,256.00022-.38522,179.67086-19.13589,100.87271,24.86569,56.872,68.86726,12.93378,147.65133,31.65283,223.98218,79.12235,300.29741,31.62158,379.0971,12.85565,423.12993,56.872,467.1315,100.87271,448.39646,179.67086,400.87913,256.00022ZM167.38641,391.68992c-26.07906-21.48472-50.36118-43.89133-79.19033-78.86065-24.86027,47.23514-30.423,84.68887-18.07877,97.04845C82.50837,422.26855,120.041,416.65908,167.38641,391.68992ZM88.19608,199.17118a561.57489,561.57489,0,0,1,79.1747-79.12629c-31.00111-16.35964-57.78331-24.40664-76.00271-24.40664-9.67223,0-16.93811,2.20316-21.25076,6.48448C57.77311,114.49793,63.35144,151.936,88.19608,199.17118Zm234.74277,56.84467a511.44441,511.44441,0,0,0-98.92542-99.42349,511.2289,511.2289,0,0,0-98.941,99.42349c25.90717,34.01618,54.11131,64.7823,98.92541,98.92348C258.06153,328.98578,288.797,300.81345,322.93885,256.01585Zm-66.92427-.01563a32.01677,32.01677,0,1,1-32.01677-32.01614A32.00909,32.00909,0,0,1,256.01458,256.00022ZM377.87831,102.13835c-4.31265-4.29694-11.57854-6.48448-21.25076-6.48448-18.20378,0-45.00161,8.03138-76.00272,24.391a563.57476,563.57476,0,0,1,79.17471,79.12629C384.64418,151.936,390.2225,114.49793,377.87831,102.13835ZM359.79954,312.82927c-28.92291,35.09432-53.205,57.46968-79.17471,78.86065,47.32982,24.93791,84.84679,30.51612,97.25348,18.1878C390.2225,397.51814,384.64418,360.06441,359.79954,312.82927Z\"]\n};\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [512, 512, [], \"f29e\", \"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\"]\n};\nvar faAxe = {\n prefix: 'fas',\n iconName: 'axe',\n icon: [640, 512, [], \"f6b2\", \"M4.69 439.43c-6.25 6.25-6.25 16.38 0 22.63l45.26 45.25c6.25 6.25 16.38 6.25 22.63 0l235.87-235.87-67.88-67.88L4.69 439.43zM525.74 160l-52.93-52.93 34.5-34.5c6.25-6.25 6.25-16.38 0-22.63L462.06 4.69c-6.25-6.25-16.38-6.25-22.63 0l-34.5 34.5-29.81-29.82C368.87 3.12 360.68 0 352.49 0s-16.38 3.12-22.63 9.37l-96.49 96.49c-12.5 12.5-12.5 32.76 0 45.25L384 301.74V416h32c123.71 0 224-100.29 224-224v-32H525.74zM448 348.79v-37.94c39.28-16.25 70.6-47.56 86.84-86.84h37.94C560.03 286.6 510.6 336.03 448 348.79z\"]\n};\nvar faAxeBattle = {\n prefix: 'fas',\n iconName: 'axe-battle',\n icon: [512, 512, [], \"f6b3\", \"M512 160.92C505.16 99.16 478.4 44.29 438.94 4.7c-9.21-9.25-23.89-4.12-27.06 8.96-12.03 49.67-47.25 88.27-91.88 101.23v154.22c44.63 12.96 79.85 51.56 91.88 101.23 3.17 13.08 17.85 18.21 27.06 8.96 39.46-39.59 66.22-94.45 73.06-156.22L449.24 192 512 160.92zM101 13.66C97.86.58 83.32-4.54 74.2 4.7 28.67 50.83 0 117.62 0 192c0 74.38 28.67 141.17 74.2 187.3 9.13 9.25 23.66 4.12 26.8-8.96 11.92-49.67 46.79-88.27 91-101.23V114.89c-44.21-12.96-79.08-51.56-91-101.23zM272 64h-32c-8.84 0-16 7.16-16 16v416c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [], \"f77d\", \"M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z\"]\n};\nvar faBackpack = {\n prefix: 'fas',\n iconName: 'backpack',\n icon: [448, 512, [], \"f5d4\", \"M320 320H128c-17.67 0-32 14.33-32 32v32h256v-32c0-17.67-14.33-32-32-32zM96 512h256v-96H96v96zM320 80h-8V56c0-30.88-25.12-56-56-56h-64c-30.88 0-56 25.12-56 56v24h-8C57.31 80 0 137.31 0 208v240c0 35.35 28.65 64 64 64V352c0-35.29 28.71-64 64-64h192c35.29 0 64 28.71 64 64v160c35.35 0 64-28.65 64-64V208c0-70.69-57.31-128-128-128zM184 56c0-4.41 3.59-8 8-8h64c4.41 0 8 3.59 8 8v24h-80V56zm136 144c0 4.42-3.58 8-8 8H136c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faBackspace = {\n prefix: 'fas',\n iconName: 'backspace',\n icon: [640, 512, [], \"f55a\", \"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\"]\n};\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [], \"f04a\", \"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [], \"f7e5\", \"M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z\"]\n};\nvar faBacteria = {\n prefix: 'fas',\n iconName: 'bacteria',\n icon: [640, 512, [], \"e059\", \"M272.35,226.4A17.71,17.71,0,0,0,281.46,203l-4-9.08a121.29,121.29,0,0,1,12.36-3.08A83.34,83.34,0,0,0,323.57,177l10,9a17.76,17.76,0,1,0,23.92-26.27l-9.72-8.76a83.12,83.12,0,0,0,11.65-48.18l11.85-3.51a17.73,17.73,0,1,0-10.15-34l-11.34,3.36a84,84,0,0,0-36.38-35.57l2.84-10.85a17.8,17.8,0,0,0-34.47-8.93l-2.82,10.78a83.25,83.25,0,0,0-16.74,1.1C250.83,27,240,30.22,229.1,33.39l-3.38-9.46a17.8,17.8,0,0,0-33.56,11.89l3.49,9.8a286.74,286.74,0,0,0-43.94,23.57l-6.32-8.43a17.9,17.9,0,0,0-24.94-3.6A17.69,17.69,0,0,0,116.84,82l6.45,8.61a286.59,286.59,0,0,0-34.95,35.33l-8.82-6.42a17.84,17.84,0,0,0-24.89,3.86,17.66,17.66,0,0,0,3.88,24.77l8.88,6.47a286.6,286.6,0,0,0-23,43.91l-10.48-3.59a17.73,17.73,0,1,0-11.59,33.52L32.67,232c-2.79,10-5.79,19.84-7.52,30.22a83.16,83.16,0,0,0-.82,19l-11.58,3.43a17.73,17.73,0,1,0,10.13,34l11.27-3.33a83.51,83.51,0,0,0,36.39,35.43l-2.88,11.06a17.81,17.81,0,0,0,34.48,8.92l2.87-11c1,0,2.07.26,3.1.26a83.39,83.39,0,0,0,45.65-13.88l8.59,8.8a17.77,17.77,0,0,0,25.56-24.7l-9.14-9.37a83.41,83.41,0,0,0,12.08-31.05,119.08,119.08,0,0,1,3.87-15.53l9,4.22a17.74,17.74,0,1,0,15.15-32.09l-8.8-4.11c.67-1,1.2-2.08,1.9-3.05a119.89,119.89,0,0,1,7.87-9.41,121.73,121.73,0,0,1,11.65-11.4,119.49,119.49,0,0,1,9.94-7.82c1.12-.77,2.32-1.42,3.47-2.15l3.92,8.85a17.86,17.86,0,0,0,16.32,10.58A18.14,18.14,0,0,0,272.35,226.4ZM128,256a32,32,0,1,1,32-32A32,32,0,0,1,128,256Zm80-96a16,16,0,1,1,16-16A16,16,0,0,1,208,160Zm431.26,45.3a17.79,17.79,0,0,0-17.06-12.69,17.55,17.55,0,0,0-5.08.74l-11.27,3.33a83.61,83.61,0,0,0-36.39-35.43l2.88-11.06a17.81,17.81,0,0,0-34.48-8.91l-2.87,11c-1,0-2.07-.26-3.1-.26a83.32,83.32,0,0,0-45.65,13.89l-8.59-8.81a17.77,17.77,0,0,0-25.56,24.7l9.14,9.37a83.28,83.28,0,0,0-12.08,31.06,119.34,119.34,0,0,1-3.87,15.52l-9-4.22a17.74,17.74,0,1,0-15.15,32.09l8.8,4.11c-.67,1-1.2,2.08-1.89,3.05a117.71,117.71,0,0,1-7.94,9.47,119,119,0,0,1-11.57,11.33,121.59,121.59,0,0,1-10,7.83c-1.12.77-2.32,1.42-3.47,2.15l-3.92-8.85a17.86,17.86,0,0,0-16.32-10.58,18.14,18.14,0,0,0-7.18,1.5A17.71,17.71,0,0,0,358.54,309l4,9.08a118.71,118.71,0,0,1-12.36,3.08,83.34,83.34,0,0,0-33.77,13.9l-10-9a17.77,17.77,0,1,0-23.92,26.28l9.72,8.75a83.12,83.12,0,0,0-11.65,48.18l-11.86,3.51a17.73,17.73,0,1,0,10.16,34l11.34-3.36A84,84,0,0,0,326.61,479l-2.84,10.85a17.8,17.8,0,0,0,34.47,8.93L361.06,488a83.3,83.3,0,0,0,16.74-1.1c11.37-1.89,22.24-5.07,33.1-8.24l3.38,9.46a17.8,17.8,0,0,0,33.56-11.89l-3.49-9.79a287.66,287.66,0,0,0,43.94-23.58l6.32,8.43a17.88,17.88,0,0,0,24.93,3.6A17.67,17.67,0,0,0,523.16,430l-6.45-8.61a287.37,287.37,0,0,0,34.95-35.34l8.82,6.42a17.76,17.76,0,1,0,21-28.63l-8.88-6.46a287.17,287.17,0,0,0,23-43.92l10.48,3.59a17.73,17.73,0,1,0,11.59-33.52L607.33,280c2.79-10,5.79-19.84,7.52-30.21a83.27,83.27,0,0,0,.82-19.05l11.58-3.43A17.7,17.7,0,0,0,639.26,205.3ZM416,416a32,32,0,1,1,32-32A32,32,0,0,1,416,416Z\"]\n};\nvar faBacterium = {\n prefix: 'fas',\n iconName: 'bacterium',\n icon: [512, 512, [], \"e05a\", \"M511,102.93A23.76,23.76,0,0,0,481.47,87l-15.12,4.48a111.85,111.85,0,0,0-48.5-47.42l3.79-14.47a23.74,23.74,0,0,0-46-11.91l-3.76,14.37a111.94,111.94,0,0,0-22.33,1.47,386.74,386.74,0,0,0-44.33,10.41l-4.3-12a23.74,23.74,0,0,0-44.75,15.85l4.3,12.05a383.4,383.4,0,0,0-58.69,31.83l-8-10.63a23.85,23.85,0,0,0-33.24-4.8,23.57,23.57,0,0,0-4.83,33.09l8,10.63a386.14,386.14,0,0,0-46.7,47.44l-11-8a23.68,23.68,0,1,0-28,38.17l11.09,8.06a383.45,383.45,0,0,0-30.92,58.75l-12.93-4.43a23.65,23.65,0,1,0-15.47,44.69l13,4.48a385.81,385.81,0,0,0-9.3,40.53A111.58,111.58,0,0,0,32.44,375L17,379.56a23.64,23.64,0,0,0,13.51,45.31l15-4.44a111.49,111.49,0,0,0,48.53,47.24l-3.85,14.75a23.66,23.66,0,0,0,17,28.83,24.7,24.7,0,0,0,6,.75,23.73,23.73,0,0,0,23-17.7L140,479.67c1.37.05,2.77.35,4.13.35A111.22,111.22,0,0,0,205,461.5l11.45,11.74a23.7,23.7,0,0,0,34.08-32.93l-12.19-12.5a111,111,0,0,0,16.11-41.4,158.69,158.69,0,0,1,5.16-20.71l12,5.64a23.66,23.66,0,1,0,20.19-42.79l-11.72-5.49c.89-1.32,1.59-2.77,2.52-4.06a157.86,157.86,0,0,1,10.46-12.49,159.5,159.5,0,0,1,15.59-15.28,162.18,162.18,0,0,1,13.23-10.4c1.5-1,3.1-1.89,4.63-2.87l5.23,11.8a23.74,23.74,0,0,0,43.48-19.08l-5.36-12.11a158.87,158.87,0,0,1,16.49-4.1,111,111,0,0,0,45-18.54l13.33,12a23.69,23.69,0,1,0,31.88-35l-12.94-11.67A110.83,110.83,0,0,0,479.21,137L495,132.32A23.61,23.61,0,0,0,511,102.93ZM160,368a48,48,0,1,1,48-48A48,48,0,0,1,160,368Zm80-136a24,24,0,1,1,24-24A24,24,0,0,1,240,232Z\"]\n};\nvar faBadge = {\n prefix: 'fas',\n iconName: 'badge',\n icon: [512, 512, [], \"f335\", \"M512 256c0-37.7-23.7-69.9-57.1-82.4 14.7-32.4 8.8-71.9-17.9-98.6-26.7-26.7-66.2-32.6-98.6-17.9C325.9 23.7 293.7 0 256 0s-69.9 23.7-82.4 57.1c-32.4-14.7-72-8.8-98.6 17.9-26.7 26.7-32.6 66.2-17.9 98.6C23.7 186.1 0 218.3 0 256s23.7 69.9 57.1 82.4c-14.7 32.4-8.8 72 17.9 98.6 26.6 26.6 66.1 32.7 98.6 17.9 12.5 33.3 44.7 57.1 82.4 57.1s69.9-23.7 82.4-57.1c32.6 14.8 72 8.7 98.6-17.9 26.7-26.7 32.6-66.2 17.9-98.6 33.4-12.5 57.1-44.7 57.1-82.4z\"]\n};\nvar faBadgeCheck = {\n prefix: 'fas',\n iconName: 'badge-check',\n icon: [512, 512, [], \"f336\", \"M512 256c0-37.7-23.7-69.9-57.1-82.4 14.7-32.4 8.8-71.9-17.9-98.6-26.7-26.7-66.2-32.6-98.6-17.9C325.9 23.7 293.7 0 256 0s-69.9 23.7-82.4 57.1c-32.4-14.7-72-8.8-98.6 17.9-26.7 26.7-32.6 66.2-17.9 98.6C23.7 186.1 0 218.3 0 256s23.7 69.9 57.1 82.4c-14.7 32.4-8.8 72 17.9 98.6 26.6 26.6 66.1 32.7 98.6 17.9 12.5 33.3 44.7 57.1 82.4 57.1s69.9-23.7 82.4-57.1c32.6 14.8 72 8.7 98.6-17.9 26.7-26.7 32.6-66.2 17.9-98.6 33.4-12.5 57.1-44.7 57.1-82.4zm-144.8-44.25L236.16 341.74c-4.31 4.28-11.28 4.25-15.55-.06l-75.72-76.33c-4.28-4.31-4.25-11.28.06-15.56l26.03-25.82c4.31-4.28 11.28-4.25 15.56.06l42.15 42.49 97.2-96.42c4.31-4.28 11.28-4.25 15.55.06l25.82 26.03c4.28 4.32 4.26 11.29-.06 15.56z\"]\n};\nvar faBadgeDollar = {\n prefix: 'fas',\n iconName: 'badge-dollar',\n icon: [512, 512, [], \"f645\", \"M512 256c0-37.7-23.7-69.9-57.1-82.4 14.7-32.4 8.8-71.9-17.9-98.6-26.7-26.7-66.2-32.6-98.6-17.9C325.9 23.7 293.7 0 256 0s-69.9 23.7-82.4 57.1c-32.4-14.7-72-8.8-98.6 17.9-26.7 26.7-32.6 66.2-17.9 98.6C23.7 186.1 0 218.3 0 256s23.7 69.9 57.1 82.4c-14.7 32.4-8.8 72 17.9 98.6 26.6 26.6 66.1 32.7 98.6 17.9 12.5 33.3 44.7 57.1 82.4 57.1s69.9-23.7 82.4-57.1c32.6 14.8 72 8.7 98.6-17.9 26.7-26.7 32.6-66.2 17.9-98.6 33.4-12.5 57.1-44.7 57.1-82.4zm-232 94.44V368c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V144c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faBadgePercent = {\n prefix: 'fas',\n iconName: 'badge-percent',\n icon: [512, 512, [], \"f646\", \"M512 256c0-37.7-23.7-69.9-57.1-82.4 14.7-32.4 8.8-71.9-17.9-98.6-26.7-26.7-66.2-32.6-98.6-17.9C325.9 23.7 293.7 0 256 0s-69.9 23.7-82.4 57.1c-32.4-14.7-72-8.8-98.6 17.9-26.7 26.7-32.6 66.2-17.9 98.6C23.7 186.1 0 218.3 0 256s23.7 69.9 57.1 82.4c-14.7 32.4-8.8 72 17.9 98.6 26.6 26.6 66.1 32.7 98.6 17.9 12.5 33.3 44.7 57.1 82.4 57.1s69.9-23.7 82.4-57.1c32.6 14.8 72 8.7 98.6-17.9 26.7-26.7 32.6-66.2 17.9-98.6 33.4-12.5 57.1-44.7 57.1-82.4zm-320-96c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32zm12.28 181.65c-6.25 6.25-16.38 6.25-22.63 0l-11.31-11.31c-6.25-6.25-6.25-16.38 0-22.63l137.37-137.37c6.25-6.25 16.38-6.25 22.63 0l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63L204.28 341.65zM320 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBadgeSheriff = {\n prefix: 'fas',\n iconName: 'badge-sheriff',\n icon: [512, 512, [], \"f8a2\", \"M440 320c-4 0-7.58 1.18-11.21 2.26l-39.46-66.32 39.43-66.21C432.4 190.82 436 192 440 192a40 40 0 0 0 0-80c-19.25 0-34.57 13.88-38.38 32h-78.88l-43.15-72.55C289.3 64.16 296 53.09 296 40a40 40 0 0 0-80 0c0 13.15 6.76 24.26 16.56 31.55L189.41 144h-79c-3.81-18.12-19.13-32-38.38-32a40 40 0 0 0 0 80c4 0 7.58-1.18 11.21-2.26l39.46 66.32-39.46 66.21C79.6 321.18 76 320 72 320a40 40 0 0 0 0 80c19.25 0 34.57-13.88 38.38-32h78.88l43.15 72.55C222.7 447.84 216 458.91 216 472a40 40 0 0 0 80 0c0-13.15-6.76-24.26-16.56-31.55L322.59 368h79c3.81 18.12 19.13 32 38.38 32a40 40 0 0 0 0-80zm-184 0a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBadgerHoney = {\n prefix: 'fas',\n iconName: 'badger-honey',\n icon: [640, 512, [], \"f6b4\", \"M622.25 142.47c-57.65-32.65-70.98-50.67-115.56-69.92C493.37 66.8 479.4 64 465.45 64c-19.05 0-38.09 5.21-55.47 15.21C392.89 89.05 374.05 96 354.95 96H128C57.31 96 0 153.31 0 224v16c0 8.84 7.16 16 16 16h20.03c7.79 33.38 28.05 64.24 53.53 81.18l-21.49 57.3a63.945 63.945 0 0 0-2.16 37.99L80 467.88A16.002 16.002 0 0 0 95.52 480h63.77c10.41 0 18.05-9.78 15.52-19.88l-15.55-41.26L192.22 352h105.69l23.03 115.14c1.5 7.48 8.06 12.86 15.69 12.86H400c10.1 0 17.67-9.24 15.69-19.14l-27-134.96c45.38-30.54 101.24-61.08 152.48-75.55L560 288l22.65-45.3c28.46-2.37 36.45-9.47 41.19-19.81 7-15.27 16.16-35.79 16.16-47.62 0-13.93-6.88-26.65-17.75-32.8zM515.19 160c.28 1.34.81 2.58.81 4 0 11.04-8.96 20-20 20s-20-8.96-20-20c0-1.42.53-2.66.81-4H460c-29.06 0-57.86 13.05-84.85 26.01l-101.98 61.75c-11.34 5.44-23.44 8.24-35.65 8.24H192c-42.49 0-78.12-41.48-90.76-90.66C113.52 152.13 130.03 144 148.3 144h206.65c25.67 0 52.24-7.8 78.97-23.19 10.02-5.77 20.92-8.81 31.53-8.81 7.65 0 15.12 1.55 22.21 4.62 26.87 11.6 36.43 20.42 71.41 43.38h-43.88z\"]\n};\nvar faBagsShopping = {\n prefix: 'fas',\n iconName: 'bags-shopping',\n icon: [576, 512, [], \"f847\", \"M448 224v-32a32 32 0 0 0-32-32h-96V96a96 96 0 0 0-192 0v64H32a32 32 0 0 0-32 32v256a32 32 0 0 0 32 32h128V256a32 32 0 0 1 32-32zM176 96a48 48 0 0 1 96 0v64h-96zm368 160H224a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V288a32 32 0 0 0-32-32zm-64 96a96.12 96.12 0 0 1-108.63 95.19C323 441 288 397.45 288 348.66V328a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v21.16c0 33.41 24.37 63.3 57.62 66.53A64.07 64.07 0 0 0 448 352v-24a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z\"]\n};\nvar faBalanceScale = {\n prefix: 'fas',\n iconName: 'balance-scale',\n icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faBalanceScaleLeft = {\n prefix: 'fas',\n iconName: 'balance-scale-left',\n icon: [640, 512, [], \"f515\", \"M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z\"]\n};\nvar faBalanceScaleRight = {\n prefix: 'fas',\n iconName: 'balance-scale-right',\n icon: [640, 512, [], \"f516\", \"M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z\"]\n};\nvar faBallPile = {\n prefix: 'fas',\n iconName: 'ball-pile',\n icon: [576, 512, [], \"f77e\", \"M80 352c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm208-192c44.2 0 80-35.8 80-80S332.2 0 288 0s-80 35.8-80 80 35.8 80 80 80zm-32 88c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80zm32 104c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm208 0c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80zm-16-104c0-44.2-35.8-80-80-80s-80 35.8-80 80 35.8 80 80 80 80-35.8 80-80z\"]\n};\nvar faBallot = {\n prefix: 'fas',\n iconName: 'ballot',\n icon: [384, 512, [], \"f732\", \"M360 0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-32c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zm0-128c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-32c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zm0-128c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-32c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zm192 248c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-128c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-128c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faBallotCheck = {\n prefix: 'fas',\n iconName: 'ballot-check',\n icon: [384, 512, [], \"f733\", \"M360 0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24zM64 112c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-32zm1.6 129.4l12.7-12.6c2.1-2.1 5.5-2.1 7.6 0l20.6 20.8 47.6-47.2c2.1-2.1 5.5-2.1 7.6 0l12.6 12.7c2.1 2.1 2.1 5.5 0 7.6l-64.2 63.6c-2.1 2.1-5.5 2.1-7.6 0L65.6 249c-2.1-2.1-2.1-5.5 0-7.6zM128 400c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-32c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v32zm192-8c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-128c0 4.4-4.3 8-9.6 8H170.2s29.2-30.2 30.4-32h109.7c5.3 0 9.6 3.6 9.6 8v16zm0-128c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [], \"f05e\", \"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"]\n};\nvar faBandAid = {\n prefix: 'fas',\n iconName: 'band-aid',\n icon: [640, 512, [], \"f462\", \"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faBanjo = {\n prefix: 'fas',\n iconName: 'banjo',\n icon: [512, 512, [], \"f8a3\", \"M502.63 39L473.05 9.37a32 32 0 0 0-45.26 0l-46.31 46.32A35.26 35.26 0 0 0 373 69.48l-12.19 36.59L286 180.79c-19.93-13.49-43.08-22.24-67.86-26.15v-.46a26.18 26.18 0 0 0-52.36 0v.46a166.32 166.32 0 0 0-72.28 29.82l-.23-.23a26.18 26.18 0 0 0-37 37l.23.22a166.31 166.31 0 0 0-29.84 72.34h-.46a26.18 26.18 0 0 0 0 52.36h.46a166.31 166.31 0 0 0 29.84 72.34l-.23.22a26.18 26.18 0 1 0 37 37l.23-.23a166.32 166.32 0 0 0 72.32 29.82v.46a26.18 26.18 0 0 0 52.36 0v-.46a166.32 166.32 0 0 0 72.32-29.82l.23.23a26.18 26.18 0 1 0 37-37l-.23-.22a166.31 166.31 0 0 0 29.84-72.34h.46a26.18 26.18 0 0 0 0-52.36h-.46c-3.9-24.74-12.62-47.87-26.07-67.78l74.88-74.88 36.35-12.11a35.26 35.26 0 0 0 13.79-8.53l46.32-46.31a32 32 0 0 0 .02-45.18zM192 432a112 112 0 1 1 112-112 112.12 112.12 0 0 1-112 112zm-39-125.65a8 8 0 0 0-11.32 0l-11.31 11.31a8 8 0 0 0 0 11.31L183 381.66a8 8 0 0 0 11.31 0l11.31-11.31a8 8 0 0 0 0-11.32z\"]\n};\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBarcodeAlt = {\n prefix: 'fas',\n iconName: 'barcode-alt',\n icon: [640, 512, [], \"f463\", \"M592 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h544c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 408c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V104c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm64 0c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V104c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v304zm64 0c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V104c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v304zm128 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V104c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304zm128 0c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V104c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v304z\"]\n};\nvar faBarcodeRead = {\n prefix: 'fas',\n iconName: 'barcode-read',\n icon: [640, 512, [], \"f464\", \"M184 128h-48c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zm-40 320H64v-80c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm104-320h-16c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zM16 160h32c8.8 0 16-7.2 16-16V64h80c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v128c0 8.8 7.2 16 16 16zm392-32h-48c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zm-96 0h-16c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V136c0-4.4-3.6-8-8-8zM624 0H496c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v80c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 352h-32c-8.8 0-16 7.2-16 16v80h-80c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-112 24V136c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v240c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8z\"]\n};\nvar faBarcodeScan = {\n prefix: 'fas',\n iconName: 'barcode-scan',\n icon: [640, 512, [], \"f465\", \"M288 8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152h64V8zM160 8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v152h96V8zM64 504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V352H64v152zM480 8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152h64V8zm96 0c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v152h64V8zM384 8c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v152h32V8zm128 496c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V352h-64v152zm-288 0c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V352h-64v152zm192 0c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V352h-64v152zm-64 0c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V352h-32v152zm280-280H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h624c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [], \"f0c9\", \"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"]\n};\nvar faBaseball = {\n prefix: 'fas',\n iconName: 'baseball',\n icon: [640, 512, [], \"f432\", \"M629.6 56l-23.9-33.4c-17.6-24.6-51.5-30-75.8-12.2l-212 156.3c-69.1 50.9-112.4 99.8-137.2 128.3l62.2 86.7c34.6-15.2 93.7-41.8 162.8-92.7l212.1-156.2c24.1-17.8 29.4-52.2 11.8-76.8zM145.5 433.1l-43.2-60.3c-30 26-47 38.2-56 44.8-19.2-24.1-36.6-9-37.4-8.4-10.3 8.3-12 23.4-3.7 33.7l47.9 60c7.8 9.8 22.8 12.5 33.7 3.7 2.8-2.2 17.5-16.5 2.3-35.6 8.2-5.9 24.6-18.2 56.4-37.9zm-22.6-78.3l46 64.1c15.9-9.1 32.3-17.5 48.8-25.5l-55.8-77.8c-12.6 13.5-25.5 26.6-39 39.2zm372-2.8c-44.1 0-79.8 35.8-79.8 80s35.7 80 79.8 80 79.8-35.8 79.8-80-35.7-80-79.8-80z\"]\n};\nvar faBaseballBall = {\n prefix: 'fas',\n iconName: 'baseball-ball',\n icon: [496, 512, [], \"f433\", \"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\"]\n};\nvar faBasketballBall = {\n prefix: 'fas',\n iconName: 'basketball-ball',\n icon: [496, 512, [], \"f434\", \"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\"]\n};\nvar faBasketballHoop = {\n prefix: 'fas',\n iconName: 'basketball-hoop',\n icon: [640, 512, [], \"f435\", \"M208 160h224v48H208v-48zm431.9 176.9c0 22.8-13.6 43.2-34.7 51.8L501 431.6l9-143.6h-30.6l-18.2 224-75.4-71.6L320 512l-65.8-71.6-75.4 71.6-18.2-224H130l9 143.6-104.3-42.8C13.6 380.1 0 359.8 0 336.9L1.2 207C1.8 205 68.7 8 320 8s318.1 197 318.8 199c1.6 10.2 1.1-8.5 1.1 129.9zm-433.2 15.5l46.7 43.6 44-44-42.1-42.1-48.6 42.5zm113.3-23l41.4-41.4h-82.8l41.4 41.4zm22.6 22.6l44 44 46.7-43.6-48.6-42.5-42.1 42.1zm-149.9-64l2.6 31.9 36.5-31.9h-39.1zm38.1 130.6l-29.9-27.9 4.3 53.5 25.6-25.6zm132.4-.8L320 374.6l-43.2 43.2 43.2 40.3 43.2-40.3zm71.6 26.4l4.3-53.5-29.9 27.9 25.6 25.6zM447.3 288h-39l36.5 31.9 2.5-31.9zm96.7-72c0-4.4-3.6-8-8-8h-72v-80H176v80h-72c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h432c4.4 0 8-3.6 8-8v-16z\"]\n};\nvar faBat = {\n prefix: 'fas',\n iconName: 'bat',\n icon: [640, 512, [], \"f6b5\", \"M558.44 129.7c-7.64-17.82-29.25-24.81-45.88-14.83L411.83 175.3 384 64l-42.67 32h-42.67L256 64l-27.83 111.3-100.74-60.44c-16.63-9.98-38.24-2.99-45.88 14.83L0 320l49.62-16.54c27.38-9.13 57.48 1.2 73.49 25.21L160 384l11.82-11.82c27.54-27.54 73.09-24.3 96.46 6.85L320 448l51.72-68.97c23.37-31.16 68.91-34.39 96.46-6.85L480 384l36.88-55.33c16.01-24.01 46.11-34.34 73.49-25.21L640 320l-81.56-190.3z\"]\n};\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [], \"f2cd\", \"M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z\"]\n};\nvar faBatteryBolt = {\n prefix: 'fas',\n iconName: 'battery-bolt',\n icon: [640, 512, [], \"f376\", \"M64 352h178.778l-14.173 64H48c-26.51 0-48-21.49-48-48V144c0-26.51 21.49-48 48-48h115.944l-7.663 64H64v192zm364.778-160h-92.321l27.694-133.589C367.4 45.087 358.205 32 345.6 32H236.8c-9.623 0-17.76 7.792-19.031 18.225L192.171 264c-1.535 12.59 7.432 23.775 19.031 23.775h94.961l-36.847 166.382C266.44 467.443 275.728 480 287.993 480c6.68 0 13.101-3.827 16.623-10.481l140.778-245.997C452.79 209.55 443.564 192 428.778 192zM616 160h-8v-16c0-26.51-21.49-48-48-48H405.38l-9.951 48h33.349c16.112 0 31.233 5.762 43.115 16H544v64h32v64h-32v64H427.174l-36.626 64H560c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [640, 512, [], \"f244\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [640, 512, [], \"f240\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [640, 512, [], \"f242\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [640, 512, [], \"f243\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\"]\n};\nvar faBatterySlash = {\n prefix: 'fas',\n iconName: 'battery-slash',\n icon: [640, 512, [], \"f377\", \"M64 352V179.48l-62.13-48A47.23 47.23 0 0 0 0 144v224a48 48 0 0 0 48 48h322l-82.81-64zm544 16v-16h8a24 24 0 0 0 24-24V184a24 24 0 0 0-24-24h-8v-16a48 48 0 0 0-48-48H165.31L45.47 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.35 454.73a16 16 0 0 0 22.47-2.81l19.64-25.27a16 16 0 0 0-2.81-22.45l-58.14-44.94A47.85 47.85 0 0 0 608 368zm-32-80h-32v64h-47.46L248.12 160H544v64h32z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [640, 512, [], \"f241\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [], \"f236\", \"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\"]\n};\nvar faBedAlt = {\n prefix: 'fas',\n iconName: 'bed-alt',\n icon: [512, 512, [], \"f8f7\", \"M80,160a32,32,0,0,1,32-32h96a32,32,0,0,1,32,32v32h32V160a32,32,0,0,1,32-32h96a32,32,0,0,1,32,32v32h48V64a32,32,0,0,0-32-32H64A32,32,0,0,0,32,64V192H80Zm368,64H64A64,64,0,0,0,0,288V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V416H448v48a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V288A64,64,0,0,0,448,224Z\"]\n};\nvar faBedBunk = {\n prefix: 'fas',\n iconName: 'bed-bunk',\n icon: [576, 512, [], \"f8f8\", \"M464,0H240a16,16,0,0,0-16,16V128H64V16A16,16,0,0,0,48,0H16A16,16,0,0,0,0,16V496a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V448H512v48a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V112A112,112,0,0,0,464,0Zm48,267.19A110.9,110.9,0,0,0,464,256H240a16,16,0,0,0-16,16V384H64V192H512ZM144,352a48,48,0,1,0-48-48A48.05,48.05,0,0,0,144,352Zm0-256A48,48,0,1,0,96,48,48.05,48.05,0,0,0,144,96Z\"]\n};\nvar faBedEmpty = {\n prefix: 'fas',\n iconName: 'bed-empty',\n icon: [640, 512, [], \"f8f9\", \"M112,256h96a16,16,0,0,0,16-16V144a16,16,0,0,0-16-16H112a16,16,0,0,0-16,16v96A16,16,0,0,0,112,256ZM528,128H272a16,16,0,0,0-16,16V288H64V80A16,16,0,0,0,48,64H16A16,16,0,0,0,0,80V432a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V384H576v48a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V240A112,112,0,0,0,528,128Z\"]\n};\nvar faBeer = {\n prefix: 'fas',\n iconName: 'beer',\n icon: [448, 512, [], \"f0fc\", \"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\"]\n};\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [], \"f0f3\", \"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\"]\n};\nvar faBellExclamation = {\n prefix: 'fas',\n iconName: 'bell-exclamation',\n icon: [448, 512, [], \"f848\", \"M224 512a64 64 0 0 0 64-64H160a64 64 0 0 0 64 64zm215.39-149.71c-19.32-20.76-55.47-52-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32a32 32 0 1 0-64 0v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29A31.24 31.24 0 0 0 0 384c.11 16.4 13 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32a31.23 31.23 0 0 0-8.61-21.71zM224 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm25.4-110.4a16 16 0 0 1-15.9 14.4h-19a16 16 0 0 1-15.9-14.4l-12.8-96a16.06 16.06 0 0 1 15.9-17.6h44.6a16 16 0 0 1 15.9 17.6z\"]\n};\nvar faBellOn = {\n prefix: 'fas',\n iconName: 'bell-on',\n icon: [640, 512, [], \"f8fa\", \"M112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192ZM51.66,64.78l55.42,32a24,24,0,1,0,24-41.56l-55.42-32a24,24,0,1,0-24,41.56ZM520.94,100a23.8,23.8,0,0,0,12-3.22l55.42-32a24,24,0,0,0-24-41.56l-55.42,32a24,24,0,0,0,12,44.78ZM320,512a64,64,0,0,0,64-64H256A64,64,0,0,0,320,512ZM616,168H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM479.92,208c0-77.69-54.48-139.91-127.94-155.16V32a32,32,0,1,0-64,0V52.84C214.56,68.09,160.08,130.31,160.08,208c0,102.31-36.14,133.53-55.47,154.28A31.28,31.28,0,0,0,96,384c.11,16.41,13,32,32.09,32H511.91c19.11,0,32-15.59,32.09-32a31.23,31.23,0,0,0-8.61-21.72C516.06,341.53,479.92,310.31,479.92,208Z\"]\n};\nvar faBellPlus = {\n prefix: 'fas',\n iconName: 'bell-plus',\n icon: [448, 512, [], \"f849\", \"M224 512a64 64 0 0 0 64-64H160a64 64 0 0 0 64 64zm215.39-149.71c-19.32-20.76-55.47-52-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32a32 32 0 1 0-64 0v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29A31.24 31.24 0 0 0 0 384c.11 16.4 13 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32a31.23 31.23 0 0 0-8.61-21.71zM320 248a16 16 0 0 1-16 16h-56v56a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-56h-56a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h56v-56a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16v56h56a16 16 0 0 1 16 16z\"]\n};\nvar faBellSchool = {\n prefix: 'fas',\n iconName: 'bell-school',\n icon: [512, 512, [], \"f5d5\", \"M416 208C416 93.12 322.88 0 208 0S0 93.12 0 208s93.12 208 208 208 208-93.12 208-208zm-288 0c0-44.11 35.89-80 80-80s80 35.89 80 80-35.89 80-80 80-80-35.89-80-80zm128 0c0-26.51-21.49-48-48-48s-48 21.49-48 48 21.49 48 48 48 48-21.49 48-48zm208 112c-26.51 0-48 21.49-48 48 0 16.43 8.27 30.89 20.86 39.55C430.78 421.9 416.55 432 400 432h-48v-32.46C311.83 429.82 262.06 448 208 448s-103.83-18.18-144-48.46V480c0 17.67 14.33 32 32 32h224c17.67 0 32-14.33 32-32h48c42.2 0 77.48-29.87 85.98-69.56 15.39-8 26.02-23.9 26.02-42.44 0-26.51-21.49-48-48-48z\"]\n};\nvar faBellSchoolSlash = {\n prefix: 'fas',\n iconName: 'bell-school-slash',\n icon: [640, 512, [], \"f5d6\", \"M272 448c-54.06 0-103.83-18.18-144-48.46V480c0 17.67 14.33 32 32 32h224c17.67 0 32-14.33 32-32v-28.47l-37.66-29.11C346.23 438.51 310.29 448 272 448zm78.19-47.33L65.95 180.99C64.8 189.85 64 198.82 64 208c0 114.88 93.12 208 208 208 27.68 0 54.04-5.52 78.19-15.33zm283.63 57.43l-72.26-55.85C570.45 393.54 576 381.43 576 368c0-26.51-21.49-48-48-48-17.82 0-33.2 9.83-41.48 24.25l-36.81-28.45C468.88 284.38 480 247.52 480 208 480 93.12 386.87 0 272 0c-58.54 0-111.06 24.5-148.8 63.45L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM346.64 236.15l-27.35-21.14c.34-2.31.71-4.61.71-7.01 0-26.51-21.49-48-48-48-6.7 0-13.07 1.39-18.87 3.87l-27-20.87c12.98-9.29 28.68-15 45.87-15 44.11 0 80 35.89 80 80 0 9.95-2.02 19.37-5.36 28.15z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [], \"f1f6\", \"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBells = {\n prefix: 'fas',\n iconName: 'bells',\n icon: [640, 512, [], \"f77f\", \"M242 253.9c-27.9-76.7 5-160.6 73.7-199.8-8.5-5.6-17.5-10.5-27.4-14.1-69.3-25.1-145.8 10.6-171 79.8-.8 2.1-14.7 40.4-15.4 42.6-29.2 80.1-66.4 94.3-87.4 105-20.1 10.3-19.5 40.6 3 48.8l243.3 88.6c8.4-19.2 19.5-45.6-3.3-108.2-9.8-27-6.2-17.1-15.5-42.7zM138.1 444.2c27.6 10.1 57.5-.3 73.8-23.2L96.5 379c-2.3 27.9 13.9 55.1 41.6 65.2zm363.8 32c27.6-10.1 43.9-37.2 41.6-65.2l-115.4 42c16.3 22.8 46.2 33.2 73.8 23.2zm123.7-176.8c-21-10.7-58.3-24.9-87.4-105-.8-2.2-14.7-40.5-15.4-42.6-25.3-69.2-101.8-104.9-171-79.7-69.2 25.2-104.9 101.7-79.7 170.9.8 2.1 14.8 40.4 15.6 42.6 29.2 80.1 9.7 114.9.5 136.6-8.8 20.7 11.2 43.6 33.7 35.4l300.6-109.4c20.5-7.5 24.9-37.6 3.1-48.8z\"]\n};\nvar faBetamax = {\n prefix: 'fas',\n iconName: 'betamax',\n icon: [512, 512, [], \"f8a4\", \"M496 64H16A16 16 0 0 0 0 80v48h512V80a16 16 0 0 0-16-16zM0 400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V160H0zm288-176h160v160H288zm-144 0a80 80 0 1 1-80 80 80 80 0 0 1 80-80zm0 112a32 32 0 1 0-32-32 32 32 0 0 0 32 32z\"]\n};\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faBible = {\n prefix: 'fas',\n iconName: 'bible',\n icon: [448, 512, [], \"f647\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [], \"f206\", \"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\"]\n};\nvar faBiking = {\n prefix: 'fas',\n iconName: 'biking',\n icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBikingMountain = {\n prefix: 'fas',\n iconName: 'biking-mountain',\n icon: [640, 512, [], \"f84b\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-227.29 74.16c5.65 6.8 15.39 7.81 21.77 2.26L298.8 83.51c6.38-5.54 7-15.54 1.35-22.33-28.2-33.95-76.91-39-108.81-11.3l-58.12 48.76c-6.37 5.55-7 15.54-1.34 22.34zM240 352h-5.2a110.19 110.19 0 0 0-8.65-20.89l3.67-3.67a16 16 0 0 0 0-22.63l-22.63-22.63a16 16 0 0 0-22.63 0l-3.67 3.67A110.45 110.45 0 0 0 160 277.2V272a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v5.2a110.19 110.19 0 0 0-20.89 8.65l-3.67-3.67a16 16 0 0 0-22.63 0l-22.63 22.63a16 16 0 0 0 0 22.63l3.67 3.67A110.45 110.45 0 0 0 21.2 352H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h5.2a110.19 110.19 0 0 0 8.65 20.89l-3.67 3.67a16 16 0 0 0 0 22.63l22.63 22.63a16 16 0 0 0 22.63 0l3.67-3.67A110.94 110.94 0 0 0 96 490.8v5.2a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-5.2a110.47 110.47 0 0 0 20.89-8.65l3.67 3.67a16 16 0 0 0 22.63 0l22.63-22.63a16 16 0 0 0 0-22.63l-3.67-3.67a110.45 110.45 0 0 0 8.66-20.89H240a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-112 96a64 64 0 1 1 64-64 64 64 0 0 1-64 64zm496-96h-5.2a110.19 110.19 0 0 0-8.65-20.89l3.67-3.67a16 16 0 0 0 0-22.63l-22.63-22.63a16 16 0 0 0-22.63 0l-3.67 3.67A110.45 110.45 0 0 0 544 277.2V272a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v5.2a110.1 110.1 0 0 0-20.88 8.65l-3.67-3.67a16 16 0 0 0-22.63 0l-22.63 22.63a16 16 0 0 0 0 22.63l3.67 3.67a110.45 110.45 0 0 0-8.67 20.89H400a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h5.2a110.19 110.19 0 0 0 8.65 20.89l-3.67 3.67a16 16 0 0 0 0 22.63l22.63 22.63a16 16 0 0 0 22.63 0l3.67-3.67A111.13 111.13 0 0 0 480 490.8v5.2a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-5.2a110.56 110.56 0 0 0 20.9-8.65l3.67 3.67a16 16 0 0 0 22.63 0l22.63-22.63a16 16 0 0 0 0-22.63l-3.67-3.67A110.45 110.45 0 0 0 618.8 416h5.2a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-112 96a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM396 217a32 32 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.07 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.35-27.57 58.24-49.92z\"]\n};\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\"]\n};\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n prefix: 'fas',\n iconName: 'birthday-cake',\n icon: [448, 512, [], \"f1fd\", \"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\"]\n};\nvar faBlanket = {\n prefix: 'fas',\n iconName: 'blanket',\n icon: [512, 512, [], \"f498\", \"M512 96c0-52.9-43.1-96-96-96H96C43.1 0 0 43.1 0 96v288c0 70.7 57.3 128 128 128h368c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H128c-35.3 0-64-28.7-64-64s28.7-64 64-64h304c8.8 0 16 7.2 16 16s-7.2 16-16 16H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h299.3c41.8 0 80.1-30 84.3-71.6.3-2.9.4-248.4.4-248.4z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\"]\n};\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBlind = {\n prefix: 'fas',\n iconName: 'blind',\n icon: [384, 512, [], \"f29d\", \"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\"]\n};\nvar faBlinds = {\n prefix: 'fas',\n iconName: 'blinds',\n icon: [512, 512, [], \"f8fb\", \"M96,226.94V160H16L0,256H66.94A47.82,47.82,0,0,1,96,226.94ZM157.06,288a47.73,47.73,0,0,1-90.12,0H16L0,384H512l-16-96ZM16,416,0,512H512l-16-96ZM512,48V16A16,16,0,0,0,496,0H16A16,16,0,0,0,0,16V48A15.85,15.85,0,0,0,10.84,63L0,128H96V64h32v64H512L501.16,63A15.85,15.85,0,0,0,512,48ZM128,160v66.94A47.82,47.82,0,0,1,157.06,256H512l-16-96Z\"]\n};\nvar faBlindsOpen = {\n prefix: 'fas',\n iconName: 'blinds-open',\n icon: [512, 512, [], \"f8fc\", \"M16,464,0,512H512l-16-48ZM64,208.21V192H16L0,240H39.16A80.21,80.21,0,0,1,64,208.21ZM175.59,320a79.18,79.18,0,0,1-127.18,0H16L0,368H512l-16-48ZM160,192v16.21A80.12,80.12,0,0,1,184.84,240H512l-16-48ZM512,48V16A16,16,0,0,0,496,0H16A16,16,0,0,0,0,16V48A16,16,0,0,0,16,64L0,112H64V64H96V226.94a48,48,0,1,0,32,0V64h32v48H512L496,64A16,16,0,0,0,512,48Z\"]\n};\nvar faBlindsRaised = {\n prefix: 'fas',\n iconName: 'blinds-raised',\n icon: [512, 512, [], \"f8fd\", \"M16,160,0,224H96V160ZM512,48V16A16,16,0,0,0,496,0H16A16,16,0,0,0,0,16V48A16,16,0,0,0,16,64L0,128H96V64h32v64H512L496,64A16,16,0,0,0,512,48ZM496,160H128v64H512ZM96,224V418.94a48,48,0,1,0,32,0V224Z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [320, 512, [], \"f0e7\", \"M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z\"]\n};\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [], \"f1e2\", \"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [640, 512, [], \"f5d7\", \"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\"]\n};\nvar faBoneBreak = {\n prefix: 'fas',\n iconName: 'bone-break',\n icon: [640, 512, [], \"f5d8\", \"M598.88 148.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 33.3 606.7 0 565.62 0c-32.02 0-60.44 20.49-70.57 50.86l-7.75 23.26A32.006 32.006 0 0 1 456.94 96H352l32 64-32 64h104.94c13.77 0 26 8.81 30.36 21.88l7.75 23.26C505.17 299.51 533.6 320 565.61 320c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88zM320 282.51L256 256l-26.51-64-62.97 62.97c-9.74 9.74-24.62 12.15-36.94 5.99L107.65 250c-28.64-14.32-63.22-8.71-85.87 13.93-29.05 29.05-29.05 76.15 0 105.2l5.4 5.4c19.92 19.92 49.39 26.88 76.12 17.97 10-3.33 19.51 6.18 16.18 16.18-8.91 26.73-1.95 56.2 17.97 76.12l5.4 5.4c29.05 29.05 76.15 29.05 105.2 0 22.64-22.64 28.25-57.23 13.93-85.87l-10.96-21.93c-6.16-12.32-3.75-27.2 5.99-36.94L320 282.51z\"]\n};\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\"]\n};\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [], \"f02d\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookAlt = {\n prefix: 'fas',\n iconName: 'book-alt',\n icon: [448, 512, [], \"f5d9\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBookDead = {\n prefix: 'fas',\n iconName: 'book-dead',\n icon: [448, 512, [], \"f6b7\", \"M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z\"]\n};\nvar faBookHeart = {\n prefix: 'fas',\n iconName: 'book-heart',\n icon: [448, 512, [], \"f499\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM149.8 109.1c24-20 59.7-16.4 81.6 5.8l8.6 8.7 8.6-8.7c22-22.2 57.7-25.8 81.6-5.8 27.5 23 28.9 64.2 4.3 89.1l-84.7 85.6c-5.5 5.5-14.3 5.5-19.8 0l-84.7-85.6c-24.5-24.9-23-66.1 4.5-89.1zM381.4 448H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [], \"f518\", \"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\"]\n};\nvar faBookReader = {\n prefix: 'fas',\n iconName: 'book-reader',\n icon: [512, 512, [], \"f5da\", \"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\"]\n};\nvar faBookSpells = {\n prefix: 'fas',\n iconName: 'book-spells',\n icon: [448, 512, [], \"f6b8\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM272 160l26.66 53.33L352 240l-53.34 26.67L272 320l-26.66-53.33L192 240l53.34-26.67L272 160zM160 96l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16zm220.8 352H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBookUser = {\n prefix: 'fas',\n iconName: 'book-user',\n icon: [448, 512, [], \"f7e7\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM240 64a64 64 0 1 1-64 64 64 64 0 0 1 64-64zM128 281.6c0-31.81 30.09-57.6 67.2-57.6h5a103.25 103.25 0 0 0 79.7 0h4.95c37.11 0 67.2 25.79 67.2 57.6v19.2c0 10.61-10 19.2-22.4 19.2H150.4c-12.4 0-22.4-8.6-22.4-19.2zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [], \"f02e\", \"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\"]\n};\nvar faBooks = {\n prefix: 'fas',\n iconName: 'books',\n icon: [576, 512, [], \"f5db\", \"M575.11 443.25L461.51 19.06C458.2 6.7 445.61-3.18 430.15.96L414.7 5.1c-6.18 1.66-11.53 6.4-16.06 14.24-14.03 6.94-52.3 17.21-68 18.22-7.84-4.53-14.85-5.96-21.03-4.3l-15.46 4.14c-2.42.65-4.2 1.95-6.15 3.08V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v64h128l101.66 396.94c3.31 12.36 15.9 22.24 31.36 18.1l15.45-4.14c6.18-1.66 11.53-6.4 16.06-14.24 13.91-6.88 52.18-17.2 68-18.22 7.84 4.53 14.85 5.96 21.03 4.3l15.46-4.14c15.45-4.14 21.41-18.99 18.09-31.35zm-134.4-7.06L348.64 92.37l61.82-16.56 92.07 343.82-61.82 16.56zM0 384h128V128H0v256zM96 0H32C14.33 0 0 14.33 0 32v64h128V32c0-17.67-14.33-32-32-32zM0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64H0v64zm160-96h128V128H160v256zm0 96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64H160v64z\"]\n};\nvar faBooksMedical = {\n prefix: 'fas',\n iconName: 'books-medical',\n icon: [640, 512, [], \"f7e8\", \"M128 128a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm64 144a5.33 5.33 0 0 1-5.33 5.33h-37.34v37.34A5.33 5.33 0 0 1 144 320h-32a5.33 5.33 0 0 1-5.33-5.33v-37.34H69.33A5.33 5.33 0 0 1 64 272v-32a5.33 5.33 0 0 1 5.33-5.33h37.34v-37.34A5.33 5.33 0 0 1 112 192h32a5.33 5.33 0 0 1 5.33 5.33v37.34h37.34A5.33 5.33 0 0 1 192 240zM64 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H64zM192 32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64h128zm447.11 411.25L525.51 19.06C522.2 6.7 509.61-3.18 494.15 1L478.7 5.1q-9.27 2.49-16.06 14.24c-14 6.94-52.3 17.21-68 18.22q-11.76-6.8-21-4.3l-15.49 4.14c-2.42.65-4.2 2-6.15 3.08V32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32v64h128l101.66 396.94C457 505.3 469.56 515.18 485 511l15.45-4.14q9.27-2.49 16.06-14.24c13.91-6.88 52.18-17.2 68-18.22q11.76 6.8 21 4.3l15.49-4.1c15.47-4.14 21.43-18.99 18.11-31.35zm-134.4-7.06L412.64 92.37l61.82-16.56 92.07 343.82zM224 128.81c38.62 29.24 64 75.12 64 127.19s-25.38 98-64 127.19v.81h128V128H224zM224 480a32 32 0 0 0 32 32h64a32 32 0 0 0 32-32v-64H224z\"]\n};\nvar faBoombox = {\n prefix: 'fas',\n iconName: 'boombox',\n icon: [640, 512, [], \"f8a5\", \"M463 256a80 80 0 1 0 80 80 80.09 80.09 0 0 0-80-80zm-288 0a80 80 0 1 0 80 80 80.09 80.09 0 0 0-80-80zm432-93.06V56a56.06 56.06 0 0 0-56-56H87a56.06 56.06 0 0 0-56 56v106.94A47.86 47.86 0 0 0-1 208v256a48 48 0 0 0 48 48h544a48 48 0 0 0 48-48V208a47.86 47.86 0 0 0-32-45.06zM175 448a112 112 0 1 1 112-112 112 112 0 0 1-112 112zm160-320h-32a16 16 0 0 0-16 16v16h-32v-16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v16H79V56a8 8 0 0 1 8-8h464a8 8 0 0 1 8 8v104H447v-16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v16h-32v-16a16 16 0 0 0-16-16zm128 320a112 112 0 1 1 112-112 112 112 0 0 1-112 112z\"]\n};\nvar faBoot = {\n prefix: 'fas',\n iconName: 'boot',\n icon: [512, 512, [], \"f782\", \"M0 480l32 32h64l32-32 32 32h64l32-32 32 32h64l32-32 32 32h64l32-32v-32H0v32zM352 80V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v80h336c8.8 0 16-7.2 16-16zm87.3 205.8L320 256h-56c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h56v-32h-56c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h56v-32H0v288h512v-37c0-44.1-30-82.5-72.7-93.2z\"]\n};\nvar faBoothCurtain = {\n prefix: 'fas',\n iconName: 'booth-curtain',\n icon: [512, 512, [], \"f734\", \"M480 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32zM0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V64h32V0H32C14.3 0 0 14.3 0 32zM416 0H128v400c0 26.5 21.5 48 48 48 14.7 0 27.9-6.6 36.7-17 5.7-6.8 16.9-6.8 22.6 0 8.8 10.4 22 17 36.7 17s27.9-6.6 36.7-17c5.7-6.8 16.9-6.8 22.6 0 8.8 10.4 22 17 36.7 17 26.5 0 48-21.5 48-48V0z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z\"]\n};\nvar faBorderBottom = {\n prefix: 'fas',\n iconName: 'border-bottom',\n icon: [448, 512, [], \"f84d\", \"M208 288h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm96 0h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm128-64h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-320 64h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm320 32h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM208 384h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-192h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-96h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm96 0h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm128-64h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM16 288h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 96h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-192h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-96h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16zm96 0h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm320 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faBorderCenterH = {\n prefix: 'fas',\n iconName: 'border-center-h',\n icon: [448, 512, [], \"f89c\", \"M208 480h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm96 0h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm128-64h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-320 64h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm320-160h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM208 384h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-192h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-96h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm96 0h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm128-64h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM16 480h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-96h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-192h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-96h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16zm96 0h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm320 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faBorderCenterV = {\n prefix: 'fas',\n iconName: 'border-center-v',\n icon: [448, 512, [], \"f89d\", \"M448 272v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zm0-96v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zM384 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16zm64 320v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zM288 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16zM96 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16zm256 224v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zm-192 0v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zm-96 0v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zm0-96v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zM0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48zm448 416v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zm-96 0v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zm-192 0v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zm-96 0v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zm0-96v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16zM192 48v416a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16z\"]\n};\nvar faBorderInner = {\n prefix: 'fas',\n iconName: 'border-inner',\n icon: [448, 512, [], \"f84e\", \"M48 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 192h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm288-96h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM48 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm64-224h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-96 0h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16zm320 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm0 192H256V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v176H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h176v176a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V288h176a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM144 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm288-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faBorderLeft = {\n prefix: 'fas',\n iconName: 'border-left',\n icon: [448, 512, [], \"f84f\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-96 0H16A16 16 0 0 0 0 48v416a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderOuter = {\n prefix: 'fas',\n iconName: 'border-outer',\n icon: [448, 512, [], \"f851\", \"M208 288h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm96 0h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-192 0h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm96 96h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-192h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 384H64V96h320z\"]\n};\nvar faBorderRight = {\n prefix: 'fas',\n iconName: 'border-right',\n icon: [448, 512, [], \"f852\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm288 0h-32a16 16 0 0 0-16 16v416a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n prefix: 'fas',\n iconName: 'border-style',\n icon: [448, 512, [], \"f853\", \"M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyleAlt = {\n prefix: 'fas',\n iconName: 'border-style-alt',\n icon: [448, 512, [], \"f854\", \"M208 96h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm96 0h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-192 0h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 288h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-96h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-96h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16zm0 288h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM432 32h-32a16 16 0 0 0-16 16v368H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h400a32 32 0 0 0 32-32V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderTop = {\n prefix: 'fas',\n iconName: 'border-top',\n icon: [448, 512, [], \"f855\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm384-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBowArrow = {\n prefix: 'fas',\n iconName: 'bow-arrow',\n icon: [512, 512, [], \"f6b9\", \"M145.78 287.03l45.26-45.25-90.58-90.58C128.24 136.08 159.49 128 192 128c32.03 0 62.86 7.79 90.33 22.47l46.61-46.61C288.35 78.03 241.3 64 192 64c-49.78 0-97.29 14.27-138.16 40.59l-3.9-3.9c-6.25-6.25-16.38-6.25-22.63 0L4.69 123.31c-6.25 6.25-6.25 16.38 0 22.63l141.09 141.09zm262.36-104.64L361.53 229c14.68 27.47 22.47 58.3 22.47 90.33 0 32.51-8.08 63.77-23.2 91.55l-90.58-90.58-45.26 45.26 141.76 141.76c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-4.57-4.57C433.74 416.63 448 369.11 448 319.33c0-49.29-14.03-96.35-39.86-136.94zM493.22.31L364.63 26.03c-12.29 2.46-16.88 17.62-8.02 26.49l34.47 34.47-250.64 250.63-49.7-16.57a20.578 20.578 0 0 0-21.04 4.96L6.03 389.69c-10.8 10.8-6.46 29.2 8.04 34.04l55.66 18.55 18.55 55.65c4.83 14.5 23.23 18.84 34.04 8.04l63.67-63.67a20.56 20.56 0 0 0 4.97-21.04l-16.57-49.7 250.64-250.64 34.47 34.47c8.86 8.86 24.03 4.27 26.49-8.02l25.72-128.59C513.88 7.8 504.2-1.88 493.22.31z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faBowlingPins = {\n prefix: 'fas',\n iconName: 'bowling-pins',\n icon: [448, 512, [], \"f437\", \"M314.8 160c-.8-35.8-20.9-59.1-18.8-96 1.9-34.2 22.7-63.9 56-64 33.4.1 54.1 29.7 56 64 2.1 36.9-18 60.3-18.8 96h-74.4zm128.9 160c-10.8-48.1-39.9-82.8-50.7-128h-81.9c-10.8 45.2-39.9 79.9-50.7 128-11.5 51.1.6 140.5 26.7 192h130c26-51.5 38-141 26.6-192zM133.2 160c.8-35.8 20.9-59.1 18.8-96C150.1 29.8 129.3.1 96 0 62.6.1 41.9 29.8 40 64c-2.1 36.9 18 60.2 18.8 96h74.4zm3.7 32H55.1c-10.8 45.2-40 79.9-50.7 128-11.5 51.1.5 140.5 26.6 192h130c26.1-51.5 38.1-140.9 26.7-192-10.8-48.1-40-82.8-50.8-128z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\"]\n};\nvar faBoxAlt = {\n prefix: 'fas',\n iconName: 'box-alt',\n icon: [448, 512, [], \"f49a\", \"M446.7 160c.4-.5.5-.7.9-1.2L391.3 53.9C386.9 40.8 374.7 32 360.9 32H256l32 128h158.7zM160 160l32-128H87.1c-13.8 0-26 8.8-30.4 21.9L.4 158.8c.4.5.5.7.9 1.2H160zm128 32v80c0 8.8-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16v-80H0v256c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V192H288z\"]\n};\nvar faBoxBallot = {\n prefix: 'fas',\n iconName: 'box-ballot',\n icon: [576, 512, [], \"f735\", \"M432 192l-.5-175.4c0-8.8-7.2-16-16-16L159.7 0c-8.9 0-16.2 7.2-16.2 16.2L144 192h288zM0 320v160c0 17.7 14.3 32 32 32h512c17.7 0 32-14.3 32-32V320H0zm574.7-32c.4-.5.5-.7.8-1.2L520 148.2c-4.9-12.1-16.6-20.1-29.7-20.1h-26.6l.2 64 16 32H95.5l16-32h.5l-.2-64H85.7c-13.1 0-24.8 8-29.7 20.1L.4 286.8c.3.5.5.7.8 1.2h573.5z\"]\n};\nvar faBoxCheck = {\n prefix: 'fas',\n iconName: 'box-check',\n icon: [640, 512, [], \"f467\", \"M240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zm235.2 81.7l-16.3-48.8C452.4 13.2 434.1 0 413.4 0H272v157.4C315.9 109.9 378.4 80 448 80c9.2 0 18.3.6 27.2 1.7zM208 320c0-34.1 7.3-66.6 20.2-96H0v240c0 26.5 21.5 48 48 48h256.6C246.1 468.2 208 398.6 208 320zm240-192c-106 0-192 86-192 192s86 192 192 192 192-86 192-192-86-192-192-192zm114.1 147.8l-131 130c-4.3 4.3-11.3 4.3-15.6-.1l-75.7-76.3c-4.3-4.3-4.2-11.3.1-15.6l26-25.8c4.3-4.3 11.3-4.2 15.6.1l42.1 42.5 97.2-96.4c4.3-4.3 11.3-4.2 15.6.1l25.8 26c4.2 4.3 4.2 11.3-.1 15.5z\"]\n};\nvar faBoxFragile = {\n prefix: 'fas',\n iconName: 'box-fragile',\n icon: [448, 512, [], \"f49b\", \"M416 32H32C14.3 32 0 46.3 0 64v384c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32zm-96 160c0 47.5-34.6 86.7-80 94.4V384h40c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h40v-97.6c-45.4-7.7-80-46.8-80-94.4v-80c0-8.8 7.2-16 16-16h60.4l24.5 27.6-64 32 91 68.4-37-59.6 64-32L260.1 96H304c8.8 0 16 7.2 16 16v80z\"]\n};\nvar faBoxFull = {\n prefix: 'fas',\n iconName: 'box-full',\n icon: [640, 512, [], \"f49c\", \"M384.3 360.6L320 254l-64.2 106.6c-6.4 10.7-26.1 29.8-54.7 21.6L64 343v82c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 456c14.2-3.6 24.2-16.4 24.2-31v-82l-137 39.1c-28.5 8.2-48.2-10.7-54.7-21.5zM194.2 143.7c-1.3-5.1-2.2-10.3-2.2-15.7 0-35.3 28.7-64 64-64s64 28.7 64 64c0 11.2-3.1 21.5-8.2 30.7l8.2 1L475.3 140 511 41.7c3-8.3-1.3-17.5-9.6-20.5L445.9 1c-8.3-3-17.5 1.3-20.5 9.6L383.7 125C382 55.7 325.7 0 256 0c-70.7 0-128 57.3-128 128 0 2.5.6 4.9.7 7.4zM53.2 169L1.7 271.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 192 69.8 160.1c-6.9-.8-13.5 2.7-16.6 8.9zm585.1 102.8L586.8 169c-3.1-6.2-9.8-9.8-16.7-8.9L320 192l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1z\"]\n};\nvar faBoxHeart = {\n prefix: 'fas',\n iconName: 'box-heart',\n icon: [448, 512, [], \"f49d\", \"M447.6 158.8L391.3 53.9C386.9 40.8 374.7 32 360.9 32H240v128h206.7c.4-.5.5-.7.9-1.2zM0 192v256c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V192H0zm305.1 149.2l-72.6 71.4c-4.7 4.6-12.3 4.6-17 0l-72.6-71.4c-21.1-20.7-19.8-55.1 3.7-74.2 20.5-16.7 51.1-13.7 70 4.8l7.4 7.3 7.4-7.3c18.8-18.5 49.4-21.5 70-4.8 23.5 19.1 24.7 53.4 3.7 74.2zM208 160V32H87.1c-13.8 0-26 8.8-30.4 21.9L.4 158.8c.4.5.5.7.9 1.2H208z\"]\n};\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z\"]\n};\nvar faBoxTissue = {\n prefix: 'fas',\n iconName: 'box-tissue',\n icon: [512, 512, [], \"e05b\", \"M383.88,287.82l64-192H338.47a70.2,70.2,0,0,1-66.59-48,70.21,70.21,0,0,0-66.6-48H63.88l64,288Zm-384,192a32,32,0,0,0,32,32h448a32,32,0,0,0,32-32v-64H-.12Zm480-256H438.94l-21.33,64h14.27a16,16,0,0,1,0,32h-352a16,16,0,1,1,0-32H95.09l-14.22-64h-49a32,32,0,0,0-32,32v128h512v-128A32,32,0,0,0,479.88,223.82Z\"]\n};\nvar faBoxUp = {\n prefix: 'fas',\n iconName: 'box-up',\n icon: [448, 512, [], \"f49f\", \"M416 32H32C14.3 32 0 46.3 0 64v384c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32zM57.8 179l64-80c3-3.8 9.5-3.8 12.5 0l64 80c4.2 5.2.4 13-6.2 13h-32v112c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V192H64c-6.7 0-10.4-7.8-6.2-13zM384 408c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v16zm0-216h-32v112c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V192h-32c-6.7 0-10.4-7.8-6.2-13l64-80c3-3.8 9.5-3.8 12.5 0l64 80c4.1 5.2.4 13-6.3 13z\"]\n};\nvar faBoxUsd = {\n prefix: 'fas',\n iconName: 'box-usd',\n icon: [448, 512, [], \"f4a0\", \"M447.6 158.8L391.3 53.9C386.9 40.8 374.7 32 360.9 32H240v128h206.7c.4-.5.5-.7.9-1.2zM208 160V32H87.1c-13.8 0-26 8.8-30.4 21.9L.4 158.8c.4.5.5.7.9 1.2H208zM0 192v256c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V192H0zm240 223.9V432c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-16.3c-11.3-.6-22.3-4.5-31.4-11.3-3.9-2.9-4.1-8.8-.6-12.1l11.8-11.2c2.8-2.6 6.9-2.8 10.1-.7 3.9 2.4 8.3 3.7 12.8 3.7h28.1c6.5 0 11.8-5.9 11.8-13.2 0-6-3.6-11.2-8.8-12.7l-45-13.5c-18.6-5.6-31.6-23.4-31.6-43.4 0-24.5 19-44.4 42.7-45.1V240c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v16.3c11.3.6 22.3 4.5 31.4 11.3 3.9 2.9 4.1 8.8.6 12.1L260.2 291c-2.8 2.6-6.9 2.8-10.1.7-3.9-2.4-8.3-3.7-12.8-3.7h-28.1c-6.5 0-11.8 5.9-11.8 13.2 0 6 3.6 11.2 8.8 12.7l45 13.5c18.6 5.6 31.6 23.4 31.6 43.4-.1 24.5-19.2 44.5-42.8 45.1z\"]\n};\nvar faBoxes = {\n prefix: 'fas',\n iconName: 'boxes',\n icon: [576, 512, [], \"f468\", \"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBoxesAlt = {\n prefix: 'fas',\n iconName: 'boxes-alt',\n icon: [576, 512, [], \"f4a1\", \"M240 288h-80v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-64-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm384 64h-80v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBoxingGlove = {\n prefix: 'fas',\n iconName: 'boxing-glove',\n icon: [448, 512, [], \"f438\", \"M384 160h-31.1c-26.3 0-48.3 20.8-48.8 47.1-.5 24.6 17.6 45.1 41.1 48.4 4 .6 6.9 4.1 6.9 8.1v16c0 4.7-4.1 8.5-8.8 8-40-4.4-71.2-38.4-71.2-79.5 0-5.5.6-10.8 1.6-16H141.2c-30.6 0-59.5-10.9-82.3-30.8-3.5-3.1-3.7-8.4-.4-11.7l11.3-11.3c3-3 7.7-3.1 10.9-.4 16.9 14.4 38.1 22.3 60.5 22.3H288v.5c28.4-38.1 66.9-32.5 96-32.5V96c0-53-43-96-96-96H96C43.3 0 0 43.1 0 95.9c0 63.9 5.3 127.8 15.8 190.8L32 384h40c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32v-64h-40c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h40l58.5-58.5C450.8 285.1 448 237.8 448 224c0-35.3-28.7-64-64-64zM260.8 441.6l-9.6 12.8c-2.6 3.5-7.7 4.3-11.2 1.6l-48-36-48 36c-3.5 2.7-8.6 1.9-11.2-1.6l-9.6-12.8c-2.6-3.5-1.9-8.5 1.6-11.2l40.5-30.4-40.5-30.4c-3.5-2.6-4.3-7.7-1.6-11.2l9.6-12.8c2.6-3.5 7.7-4.3 11.2-1.6l48 36 48-36c3.5-2.7 8.6-1.9 11.2 1.6l9.6 12.8c2.6 3.5 1.9 8.5-1.6 11.2L218.7 400l40.5 30.4c3.5 2.6 4.2 7.7 1.6 11.2z\"]\n};\nvar faBrackets = {\n prefix: 'fas',\n iconName: 'brackets',\n icon: [448, 512, [], \"f7e9\", \"M144 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h112a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H64V96h80a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm272 0H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h80v320h-80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h112a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32z\"]\n};\nvar faBracketsCurly = {\n prefix: 'fas',\n iconName: 'brackets-curly',\n icon: [576, 512, [], \"f7ea\", \"M208 32h-48a96 96 0 0 0-96 96v37.48a32.06 32.06 0 0 1-9.38 22.65L9.37 233.37a32 32 0 0 0 0 45.26l45.25 45.25A32 32 0 0 1 64 346.51V384a96 96 0 0 0 96 96h48a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-48a32 32 0 0 1-32-32v-37.48a96 96 0 0 0-28.13-67.89L77.25 256l22.63-22.63A96 96 0 0 0 128 165.48V128a32 32 0 0 1 32-32h48a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm358.63 201.37l-45.25-45.24a32.06 32.06 0 0 1-9.38-22.65V128a96 96 0 0 0-96-96h-48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h48a32 32 0 0 1 32 32v37.47a96 96 0 0 0 28.13 67.91L498.75 256l-22.62 22.63A96 96 0 0 0 448 346.52V384a32 32 0 0 1-32 32h-48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h48a96 96 0 0 0 96-96v-37.49a32 32 0 0 1 9.38-22.63l45.25-45.25a32 32 0 0 0 0-45.26z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [576, 512, [], \"f5dc\", \"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"]\n};\nvar faBreadLoaf = {\n prefix: 'fas',\n iconName: 'bread-loaf',\n icon: [640, 512, [], \"f7eb\", \"M480 192c0-88.37-107.45-160-240-160S0 103.63 0 192c0 35.35 26.86 64 60 64h4v192a32 32 0 0 0 32 32h288a32 32 0 0 0 32-32V256h4c33.14 0 60-28.65 60-64zM400 32c-2.43 0-4.78.2-7.19.24C465.2 66.39 512 124.62 512 192c0 42.75-26.92 79.06-64 91.46V448a63.27 63.27 0 0 1-8.9 32H544a32 32 0 0 0 32-32V256h4c33.14 0 60-28.65 60-64 0-88.37-107.45-160-240-160z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [576, 512, [], \"f7ec\", \"M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [], \"f0b1\", \"M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\"]\n};\nvar faBringForward = {\n prefix: 'fas',\n iconName: 'bring-forward',\n icon: [512, 512, [], \"f856\", \"M352 304V48a48 48 0 0 0-48-48H48A48 48 0 0 0 0 48v256a48 48 0 0 0 48 48h256a48 48 0 0 0 48-48zm112-144h-80v64h64v224H224v-64h-64v80a48 48 0 0 0 48 48h256a48 48 0 0 0 48-48V208a48 48 0 0 0-48-48z\"]\n};\nvar faBringFront = {\n prefix: 'fas',\n iconName: 'bring-front',\n icon: [640, 512, [], \"f857\", \"M480 368V144a48 48 0 0 0-48-48H208a48 48 0 0 0-48 48v224a48 48 0 0 0 48 48h224a48 48 0 0 0 48-48zM64 64h192V32a32 32 0 0 0-32-32H32A32 32 0 0 0 0 32v192a32 32 0 0 0 32 32h96v-64H64zm544 192h-96v64h64v128H384v32a32 32 0 0 0 32 32h192a32 32 0 0 0 32-32V288a32 32 0 0 0-32-32z\"]\n};\nvar faBroadcastTower = {\n prefix: 'fas',\n iconName: 'broadcast-tower',\n icon: [640, 512, [], \"f519\", \"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\"]\n};\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [640, 512, [], \"f51a\", \"M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z\"]\n};\nvar faBrowser = {\n prefix: 'fas',\n iconName: 'browser',\n icon: [512, 512, [], \"f37e\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM128 148c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm320 0c0 6.6-5.4 12-12 12H188c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h248c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"]\n};\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [448, 512, [], \"f1ad\", \"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [576, 512, [], \"f0a1\", \"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [496, 512, [], \"f140\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z\"]\n};\nvar faBullseyeArrow = {\n prefix: 'fas',\n iconName: 'bullseye-arrow',\n icon: [496, 512, [], \"f648\", \"M305.05 98.74l16.57 49.7-90.59 90.59c-9.38 9.38-9.38 24.56 0 33.94 9.37 9.37 24.56 9.38 33.94 0l90.59-90.59 49.7 16.57c7.39 2.46 15.53.54 21.04-4.96l63.67-63.67c10.8-10.8 6.46-29.2-8.04-34.04l-55.66-18.55-18.55-55.65c-4.83-14.5-23.23-18.84-34.04-8.04L310.02 77.7a20.582 20.582 0 0 0-4.97 21.04zm-75.17 96.19l55.14-55.14-2.12-6.38c-11.17-3.17-22.72-5.41-34.9-5.41-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128c0-12.18-2.24-23.73-5.42-34.89l-6.37-2.12-55.14 55.14C301.19 300.55 276.95 320 248 320c-35.29 0-64-28.71-64-64 0-28.95 19.45-53.19 45.88-61.07zm254.55-13.83l-35.5 35.5c-5.5 5.5-12.07 9.48-19.17 12.07 1.33 8.94 2.25 18.02 2.25 27.33 0 101.69-82.29 184-184 184-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 9.42 0 18.6.93 27.63 2.29 2.58-7.02 6.23-13.69 11.76-19.22l35.5-35.5A247.848 247.848 0 0 0 248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248c0-26.11-4.09-51.26-11.57-74.9z\"]\n};\nvar faBullseyePointer = {\n prefix: 'fas',\n iconName: 'bullseye-pointer',\n icon: [496, 512, [], \"f649\", \"M242.16 240.67L27.98 301.55c-15.17 4.31-16.95 25.1-2.73 31.92l68.47 32.89-89.17 89.17c-6.07 6.06-6.07 15.9 0 21.96l21.96 21.96c6.07 6.06 15.9 6.06 21.96 0l89.17-89.17 32.89 68.47c6.83 14.22 27.61 12.44 31.92-2.73l60.87-214.18c3.68-12.91-8.25-24.83-21.16-21.17zm40.91 68.76l-20.79 73.13C326.16 375.37 376 321.8 376 256c0-70.69-57.31-128-128-128-65.8 0-119.38 49.84-126.56 113.72l73.13-20.78C206.02 203.54 225.66 192 248 192c35.29 0 64 28.71 64 64 0 22.34-11.54 41.98-28.93 53.43zM248 8C111.03 8 0 119.03 0 256c0 8.39.44 16.67 1.26 24.85 5.22-4.39 11.05-8.11 17.98-10.08l44.87-12.75c-.01-.68-.1-1.33-.1-2.01 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184-.68 0-1.34-.09-2.01-.1l-12.75 44.87c-1.97 6.94-5.69 12.77-10.06 17.98 8.17.81 16.45 1.25 24.83 1.25 136.97 0 248-111.03 248-248S384.97 8 248 8z\"]\n};\nvar faBurgerSoda = {\n prefix: 'fas',\n iconName: 'burger-soda',\n icon: [640, 512, [], \"f858\", \"M352 176v-32a16 16 0 0 0-16-16H206.74l20-80H272a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16h-51.5a40 40 0 0 0-38.81 30.3L157.26 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16zm-88.45 142.22a64.71 64.71 0 0 1 3.74-66.82c6.72-9.87 15.07-18.86 24.09-27.4H38.27l25.78 258.29A31.88 31.88 0 0 0 96 512h160a31.59 31.59 0 0 0 13.65-3.36A79.55 79.55 0 0 1 256 464a47.93 47.93 0 0 1 17-36.61 63.91 63.91 0 0 1 4.58-91.27 64 64 0 0 1-14.03-17.9zM624 448H304a16 16 0 0 0-16 16 48 48 0 0 0 48 48h256a48 48 0 0 0 48-48 16 16 0 0 0-16-16zm-16-96H320a32 32 0 0 0 0 64h288a32 32 0 0 0 0-64zm-314.26-82.59c-14.53 21.32.19 50.59 25.54 50.59h289.45c25.35 0 40-29.27 25.53-50.59C604.8 226.13 539.94 192.07 464 192s-140.79 34.13-170.26 77.41zM544 240a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-80-16a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-80 16a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faBurn = {\n prefix: 'fas',\n iconName: 'burn',\n icon: [384, 512, [], \"f46a\", \"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\"]\n};\nvar faBurrito = {\n prefix: 'fas',\n iconName: 'burrito',\n icon: [512, 512, [], \"f7ed\", \"M307.29 230.32C278.33 310.45 201.65 368 111.57 368A206.93 206.93 0 0 1 .72 335.76c-3.72 33.8 6.86 68.88 32.74 94.74L81 478a116.2 116.2 0 0 0 164.22 0l216-215.73A175.28 175.28 0 0 0 351.83 224c-15.22 0-30.04 2.53-44.54 6.32zM287.76 160a174.91 174.91 0 0 0-38.33-109.28l-216 215.73A115.28 115.28 0 0 0 9 302.83 175.18 175.18 0 0 0 111.57 336c97.14 0 176.19-78.95 176.19-176zM512 123a74.14 74.14 0 0 0-52.31-70.74A74.18 74.18 0 0 0 358 6.73 80.14 80.14 0 0 0 325.8 0c-22.06 0-42 9.37-56.81 24.26A204.24 204.24 0 0 1 316.61 195a209.73 209.73 0 0 1 35.22-3 207.25 207.25 0 0 1 135.88 50.75C502.63 228 512 208 512 186a80.08 80.08 0 0 0-6.74-32.12A73.35 73.35 0 0 0 512 123z\"]\n};\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [512, 512, [], \"f207\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusAlt = {\n prefix: 'fas',\n iconName: 'bus-alt',\n icon: [512, 512, [], \"f55e\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusSchool = {\n prefix: 'fas',\n iconName: 'bus-school',\n icon: [512, 512, [], \"f5dd\", \"M488 112h-24V80c0-44.8-92.11-80-208-80S48 35.2 48 80v32H24c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h24v20.9c-9.39 5.57-16 15.38-16 27.1v128c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32c17.67 0 32-14.33 32-32V288c0-11.72-6.61-21.52-16-27.1V240h24c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 312c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-128h-96c-17.67 0-32-14.33-32-32v-64c0-17.67 14.33-32 32-32h96v128zm32 0V128h96c17.67 0 32 14.33 32 32v64c0 17.67-14.33 32-32 32h-96zm128 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z\"]\n};\nvar faCabinetFiling = {\n prefix: 'fas',\n iconName: 'cabinet-filing',\n icon: [512, 512, [], \"f64b\", \"M480 0H32C14.33 0 0 14.33 0 32v192h512V32c0-17.67-14.33-32-32-32zM352 152c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24H192v24c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40c0-8.84 7.16-16 16-16h160c8.84 0 16 7.16 16 16v40zM0 480c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V256H0v224zm160-112c0-8.84 7.16-16 16-16h160c8.84 0 16 7.16 16 16v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24H192v24c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40z\"]\n};\nvar faCactus = {\n prefix: 'fas',\n iconName: 'cactus',\n icon: [512, 512, [], \"f8a7\", \"M464 224a48 48 0 0 0-48 48v64a16 16 0 0 1-16 16h-48V101.43c0-52-38.93-98.58-90.84-101.29A96 96 0 0 0 160 96v128h-48a16 16 0 0 1-16-16v-64a48 48 0 0 0-96 0v64a112 112 0 0 0 112 112h48v160a32 32 0 0 0 32 32h128a32 32 0 0 0 32-32v-32h48a112 112 0 0 0 112-112v-64a48 48 0 0 0-48-48zm-240-48a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm64 224a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z\"]\n};\nvar faCalculatorAlt = {\n prefix: 'fas',\n iconName: 'calculator-alt',\n icon: [512, 512, [], \"f64c\", \"M192 288H32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V320c0-17.67-14.33-32-32-32zm-29.09 140.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L112 422.63l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L61.09 439.6c-3.12-3.12-3.12-8.19 0-11.31L89.37 400l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.3 28.28 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L134.63 400l28.28 28.29zM480 0H320c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-16 120c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40V56c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16zm16 168H320c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V320c0-17.67-14.33-32-32-32zm-16 152c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm0-64c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zM192 0H32C14.33 0 0 14.33 0 32v160c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-16 120c0 4.42-3.58 8-8 8H56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [], \"f133\", \"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\"]\n};\nvar faCalendarAlt = {\n prefix: 'fas',\n iconName: 'calendar-alt',\n icon: [448, 512, [], \"f073\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarEdit = {\n prefix: 'fas',\n iconName: 'calendar-edit',\n icon: [448, 512, [], \"f333\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm208.4 109.6l-95 95-5.4 48.2c-.7 6.4 4.7 11.9 11.2 11.2l48.2-5.4 95-95c2-2 2-5.2 0-7.2l-46.8-46.8c-2-2-5.2-2-7.2 0zm109.7-30.3l-25.4-25.4c-7.9-7.9-20.7-7.9-28.6 0l-26 26c-2 2-2 5.2 0 7.2l46.8 46.8c2 2 5.2 2 7.2 0l26-26c7.9-7.9 7.9-20.7 0-28.6z\"]\n};\nvar faCalendarExclamation = {\n prefix: 'fas',\n iconName: 'calendar-exclamation',\n icon: [448, 512, [], \"f334\", \"M0 148v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zm448 56v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12h424c6.6 0 12 5.4 12 12zM224 392c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40zm-39.2-139.2l7.2 112c.4 6.3 5.6 11.2 12 11.2h40c6.3 0 11.6-4.9 12-11.2l7.2-112c.4-6.9-5-12.8-12-12.8h-54.4c-6.9 0-12.4 5.9-12 12.8z\"]\n};\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\"]\n};\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\"]\n};\nvar faCalendarStar = {\n prefix: 'fas',\n iconName: 'calendar-star',\n icon: [448, 512, [], \"f736\", \"M400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48zM0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm134.1-143.7l54.7-8 24.5-49.6c4.4-9 17.1-8.8 21.5 0l24.5 49.6 54.7 8c9.8 1.4 13.7 13.5 6.6 20.5L281 379.4l9.4 54.6c1.7 9.9-8.7 17.2-17.4 12.6l-49-25.8-48.9 25.8c-8.7 4.6-19.1-2.8-17.4-12.6l9.4-54.6-39.6-38.6c-7.2-7-3.2-19.1 6.6-20.5z\"]\n};\nvar faCalendarTimes = {\n prefix: 'fas',\n iconName: 'calendar-times',\n icon: [448, 512, [], \"f273\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\"]\n};\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCamcorder = {\n prefix: 'fas',\n iconName: 'camcorder',\n icon: [576, 512, [], \"f8a8\", \"M525.59 165.7L416 241.3v157.4l109.59 75.5c21.21 14.6 50.41-.29 50.41-25.79V191.5c0-25.41-29.09-40.41-50.41-25.8zM336.2 160H96v-32a32 32 0 0 1 32-32h176a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H128a96 96 0 0 0-96 96v34.89A47.66 47.66 0 0 0 0 207.8v224.4A47.81 47.81 0 0 0 47.8 480h288.4a47.81 47.81 0 0 0 47.8-47.8V207.8a47.81 47.81 0 0 0-47.8-47.8zM320 249.6a6.41 6.41 0 0 1-6.4 6.4H70.4a6.41 6.41 0 0 1-6.4-6.4v-19.2a6.41 6.41 0 0 1 6.4-6.4h243.2a6.41 6.41 0 0 1 6.4 6.4z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [], \"f030\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\"]\n};\nvar faCameraAlt = {\n prefix: 'fas',\n iconName: 'camera-alt',\n icon: [512, 512, [], \"f332\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88zm-120 0c0-17.6 14.4-32 32-32 8.8 0 16-7.2 16-16s-7.2-16-16-16c-35.3 0-64 28.7-64 64 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faCameraHome = {\n prefix: 'fas',\n iconName: 'camera-home',\n icon: [448, 512, [], \"f8fe\", \"M384,0H64A64,64,0,0,0,0,64V352a64,64,0,0,0,64,64h72.71L76.53,450.83c-6.9,4.33-12.5,14.45-12.5,22.6v11.9A26.68,26.68,0,0,0,90.7,512H357.37A26.68,26.68,0,0,0,384,485.33V473.45c0-8.17-5.65-18.3-12.58-22.62L311.28,416H384a64,64,0,0,0,64-64V64A64,64,0,0,0,384,0ZM224,352h-.05a144,144,0,1,1,.05,0Zm0-256h-.05a112,112,0,1,0,.05,0Zm0,80a32,32,0,0,0-32,32,16,16,0,0,1-32,0,64.06,64.06,0,0,1,64-64,16,16,0,0,1,0,32Z\"]\n};\nvar faCameraMovie = {\n prefix: 'fas',\n iconName: 'camera-movie',\n icon: [576, 512, [], \"f8a9\", \"M535.68 260.59L448 321.05V447l87.66 60.39c17 11.68 40.32-.23 40.32-20.63V281.22c.02-20.32-23.25-32.32-40.3-20.63zM368.2 288H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h48v112.2a47.81 47.81 0 0 0 47.8 47.8h256.4a47.81 47.81 0 0 0 47.8-47.8V335.8a47.81 47.81 0 0 0-47.8-47.8zM352 0c-48.57 0-90.31 27.37-112 67.23C218.31 27.37 176.57 0 128 0a128 128 0 0 0 0 256h224a128 128 0 0 0 0-256zM128 192a64 64 0 1 1 64-64 64.07 64.07 0 0 1-64 64zm224 0a64 64 0 1 1 64-64 64.07 64.07 0 0 1-64 64z\"]\n};\nvar faCameraPolaroid = {\n prefix: 'fas',\n iconName: 'camera-polaroid',\n icon: [576, 512, [], \"f8aa\", \"M570.63 343.94L512 256V80a48 48 0 0 0-48-48H112a48 48 0 0 0-48 48v176L5.38 343.94A32 32 0 0 0 0 361.69V448a32 32 0 0 0 32 32h512a32 32 0 0 0 32-32v-86.31a32 32 0 0 0-5.37-17.75zM392 112a8 8 0 0 1 8-8h32a8 8 0 0 1 8 8v32a8 8 0 0 1-8 8h-32a8 8 0 0 1-8-8zm-104 16a64 64 0 1 1-64 64 64.1 64.1 0 0 1 64-64zm192 280a8 8 0 0 1-8 8H104a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h368a8 8 0 0 1 8 8z\"]\n};\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [], \"f083\", \"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\"]\n};\nvar faCampfire = {\n prefix: 'fas',\n iconName: 'campfire',\n icon: [512, 512, [], \"f6ba\", \"M501 450.17l-139.97-44.68L501 360.81c8.26-2.64 12.86-11.61 10.28-20.04l-9.35-30.55c-2.58-8.43-11.37-13.13-19.62-10.5L256 371.96 29.69 299.72c-8.26-2.63-17.04 2.07-19.62 10.5L.72 340.77c-2.58 8.43 2.02 17.41 10.28 20.04l139.97 44.68L11 450.17C2.74 452.8-1.86 461.78.72 470.21l9.35 30.55c2.58 8.43 11.37 13.13 19.62 10.5L256 439.02l226.31 72.24c8.26 2.63 17.04-2.07 19.62-10.5l9.35-30.55c2.58-8.43-2.02-17.4-10.28-20.04zM256 320c79.53 0 144-64.47 144-144 0-33.29-33.42-101.96-80-144-13.37 12.06-25.45 24.75-36.14 37.48C266.34 46.01 244.61 22.21 220 0c-63.17 56.98-108 131.22-108 176 0 79.53 64.47 144 144 144zM220.5 92.48c4.23 5.09 60.42 80.06 60.42 80.06l35.84-42.72c2.53 4.37 4.83 8.65 6.89 12.76 16.71 33.33 9.66 75.99-20.44 97.99C289.97 250.26 273.64 256 256 256c-44.11 0-80-30.49-80-80 0-24.66 14.86-46.39 44.5-83.52z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [640, 512, [], \"f6bb\", \"M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z\"]\n};\nvar faCandleHolder = {\n prefix: 'fas',\n iconName: 'candle-holder',\n icon: [448, 512, [], \"f6bc\", \"M160 192c45.93 0 78-32.61 78-79.29C238 82.72 205.41 37.82 160 0c-45.62 38-78 82.84-78 112.71 0 46.68 32.07 79.29 78 79.29zm216 176c-39.7 0-72 32.3-72 72 0 8.46 1.73 16.46 4.42 24H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h360c39.7 0 72-32.3 72-72s-32.3-72-72-72zm0 96c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zM256 256c0-17.67-14.33-32-32-32h-64v48c0 8.84-7.16 16-16 16s-16-7.16-16-16v-48H96c-17.67 0-32 14.33-32 32v176h192V256z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z\"]\n};\nvar faCandyCorn = {\n prefix: 'fas',\n iconName: 'candy-corn',\n icon: [640, 512, [], \"f6bd\", \"M187.09 307.14c-43.74 43.74-71.71 81.05-88.97 107.56 115.85 67.98 243.97 122.28 280.91 85.33l.06-.06c36.88-37.09-17.38-165.27-85.4-281.18-26.45 17.31-63.38 45.14-106.6 88.35zM326 446.95c-19.61-3.51-50.11-14.01-87.69-30.88 8.55-9.53 17.64-19.32 28.02-29.7 10.04-10.04 19.56-18.92 28.81-27.24 16.87 37.64 27.36 68.18 30.86 87.82zm-48.89-255.73c-9.69-15.74-19.51-31.14-29.28-45.81-18.62-27.95-44.49-55.7-162.89 60.4-116.1 118.4-88.35 144.27-60.4 162.89 14.73 9.81 30.2 19.68 46.01 29.41 18.29-28.22 47.93-67.63 93.91-113.61 45.46-45.46 84.5-74.94 112.65-93.28zM480 0C314.19 1.62 315.52 39.54 322.11 72.47c3.47 17.35 7.44 35.27 11.74 53.33 32.89-7.02 81.71-13.93 146.74-13.93 64.29 0 112.75 6.76 145.62 13.7 4.28-17.98 8.22-35.81 11.68-53.1C644.48 39.54 645.81 1.62 480 0zM341.62 157.03C375.47 287.01 427.67 416 479.91 416h.09c52.3-.15 104.57-129.16 138.44-259.21-30.94-6.47-76.74-12.91-137.85-12.91-61.87 0-108.03 6.6-138.97 13.15zm138.33 183.93c-11.38-16.35-25.53-45.33-40.17-83.84 12.78-.69 26.14-1.19 40.81-1.19 14.2 0 27.21.45 39.63 1.11-14.68 38.55-28.86 67.56-40.27 83.92z\"]\n};\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\"]\n};\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [], \"f1b9\", \"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarAlt = {\n prefix: 'fas',\n iconName: 'car-alt',\n icon: [480, 512, [], \"f5de\", \"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [], \"f5df\", \"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCarBuilding = {\n prefix: 'fas',\n iconName: 'car-building',\n icon: [640, 512, [], \"f859\", \"M213.52 455.07A88.41 88.41 0 0 1 192 397.24v-28.69a89.11 89.11 0 0 1 42.09-75.84l7.55-20.71H220a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a11.79 11.79 0 0 1 9.43 4.92A131.1 131.1 0 0 1 352 162.18V32a32 32 0 0 0-32-32H32A32 32 0 0 0 0 32v464a16 16 0 0 0 16 16h205.06a59.85 59.85 0 0 1-7.54-28.69zM208 92a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12v40a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12zm-64 296a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12V92a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm460.58 183.56L600 304.2l-17.87-49.08a99.92 99.92 0 0 0-93.2-63.12H375.07a99.94 99.94 0 0 0-93.24 63.12L264 304.2l-4.55 11.35a57.41 57.41 0 0 0-35.42 53v28.69a57 57 0 0 0 21.52 44.46v41.61A28.69 28.69 0 0 0 274.21 512h28.69a28.69 28.69 0 0 0 28.68-28.69V448h200.83v35.31A28.7 28.7 0 0 0 561.1 512h28.69a28.7 28.7 0 0 0 28.69-28.69V441.7A57 57 0 0 0 640 397.24v-28.69a57.39 57.39 0 0 0-35.42-52.99zM335.11 284c6.53-16.92 22.36-28 40-28h113.82c17.6 0 33.42 11.1 40 28L541 320H323zM300 407.85c-14.4 0-24-9.57-24-23.93S285.6 360 300 360s36 21.53 36 35.89-21.6 11.96-36 11.96zm264 0c-14.4 0-36 2.39-36-12S549.6 360 564 360s24 9.57 24 23.92-9.6 23.93-24 23.93z\"]\n};\nvar faCarBump = {\n prefix: 'fas',\n iconName: 'car-bump',\n icon: [576, 512, [], \"f5e0\", \"M575.67 492.44c2.06 9.91-5.85 19.27-16.13 19.27h-158.9c-10.29 0-18.19-9.35-16.13-19.27 9.07-43.75 48.42-76.67 95.58-76.67s86.51 32.92 95.58 76.67zm-401.95-39.28c7.2 16.17-.24 35.04-16.62 42.15l-32.21 13.98c-16.38 7.11-35.5-.23-42.7-16.4l-22.56-50.64c-13.99-6.28-25.89-17.26-32.57-32.24L5.45 361.49C-5.9 336 1.13 307.34 20.57 289.3l-1.04-30.49-1.89-55.13c-1.62-47.33 25.71-90.22 69.62-109.28l121.08-52.56c43.92-19.06 94.42-9.95 128.66 23.22l39.89 38.64 22.06 21.37c26.61-1.95 52.76 12.31 64.12 37.79l21.62 48.52c6.68 14.98 6.83 31.06 2.06 45.48l22.56 50.64c7.2 16.17-.24 35.04-16.62 42.15l-32.21 13.98c-16.38 7.11-35.5-.23-42.7-16.4l-13.79-30.95-244.06 105.93 13.79 30.95zm181.42-205.69c8.02 18.01 34.14 3.09 52.45-4.85 18.3-7.94 25.16-25.25 17.13-43.26-8.02-18.01-25.58-24.72-43.88-16.78-18.3 7.95-33.73 46.88-25.7 64.89zm-213.56 92.7c-8.02-18.01-47.52-33.11-65.82-25.17-18.3 7.94-25.16 25.25-17.13 43.26 8.02 18.01 25.58 24.72 43.88 16.78 18.3-7.95 47.1-16.86 39.07-34.87zm188.63-189.52l-39.89-38.64c-14.59-14.13-36.43-18.07-55.14-9.95L114.1 154.62c-18.71 8.12-30.53 26.67-29.84 46.84l1.89 55.13 244.06-105.94z\"]\n};\nvar faCarBus = {\n prefix: 'fas',\n iconName: 'car-bus',\n icon: [640, 512, [], \"f85a\", \"M604.58 315.56L600 304.2l-17.87-49.08a99.92 99.92 0 0 0-93.2-63.12H375.07a99.92 99.92 0 0 0-93.23 63.12L264 304.2l-4.55 11.36a57.39 57.39 0 0 0-35.42 53v28.69a57 57 0 0 0 21.52 44.46V480a32 32 0 0 0 32 32h22.07a32 32 0 0 0 32-32v-32h200.79v32a32 32 0 0 0 32 32h22.07a32 32 0 0 0 32-32v-38.3A57 57 0 0 0 640 397.24v-28.69a57.39 57.39 0 0 0-35.42-52.99zM335.11 284c6.53-16.92 22.36-28 40-28h113.82c17.6 0 33.42 11.1 40 28L541 320H323zM300 407.85c-14.4 0-24-9.57-24-23.92S285.6 360 300 360s36 21.53 36 35.89-21.6 11.96-36 11.96zm264 0c-14.4 0-36 2.39-36-12S549.6 360 564 360s24 9.57 24 23.93-9.6 23.92-24 23.92zM252.12 243.23a134.44 134.44 0 0 1 9.65-19.23H192V80h81.33A14.67 14.67 0 0 1 288 94.67v98.07a131.26 131.26 0 0 1 64-30.56V62.86C352 27.66 274.06 0 176 0S0 27.66 0 62.86v259.81A29.33 29.33 0 0 0 29.33 352H40v32a32 32 0 0 0 32 32h23.17a32 32 0 0 0 32-32v-32h67c4.63-24.49 18.73-46.08 40-59.29zM80 312a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm80-88H78.67A14.67 14.67 0 0 1 64 209.33V94.67A14.67 14.67 0 0 1 78.67 80H160z\"]\n};\nvar faCarCrash = {\n prefix: 'fas',\n iconName: 'car-crash',\n icon: [640, 512, [], \"f5e1\", \"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\"]\n};\nvar faCarGarage = {\n prefix: 'fas',\n iconName: 'car-garage',\n icon: [640, 512, [], \"f5e2\", \"M512.49 292.9l-5.07-12.67-19.93-49.83C470.38 187.63 429.57 160 383.5 160h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.82-5.07 12.67C104.33 302.52 88 325.34 88 352v32c0 20.12 9.48 37.86 24 49.59V480c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h224v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-46.41c14.52-11.73 24-29.47 24-49.59v-32c0-26.66-16.33-49.48-39.51-59.1zM160 399.8c-19.2 0-32-12.76-32-31.9s12.8-31.9 32-31.9 48 28.71 48 47.85-28.8 15.95-48 15.95zm38.4-111.79l13.53-33.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17l13.53 33.83H198.4zM480 399.8c-19.2 0-48 3.19-48-15.95S460.8 336 480 336s32 12.76 32 31.9-12.8 31.9-32 31.9zm151.76-231.57L331.67 3.02a24.04 24.04 0 0 0-23.34 0L8.24 168.23c-7.73 4.3-10.52 14.05-6.22 21.79l7.78 14.01c4.3 7.74 14.05 10.52 21.79 6.22L320 51.53l288.41 158.73c7.74 4.3 17.49 1.51 21.79-6.22l7.78-14.01c4.3-7.75 1.51-17.5-6.22-21.8z\"]\n};\nvar faCarMechanic = {\n prefix: 'fas',\n iconName: 'car-mechanic',\n icon: [512, 512, [], \"f5e3\", \"M503.91 104h-55.98l-24-24 24-24h55.97c5.95 0 9.9-6.31 7.25-11.64-15.19-30.52-49.01-50.04-86.84-42.87-25.65 4.86-46.72 22.98-57.05 46.51H145.01c-12.38-28.17-40.2-48-72.94-48C40.75 0 13.9 18.12.84 44.37-1.81 49.69 2.15 56 8.09 56h55.98l24 24-24 24H8.09c-5.95 0-9.9 6.31-7.25 11.64 15.19 30.52 49.01 50.04 86.84 42.87 25.65-4.86 46.73-22.99 57.05-46.51h222.25c12.38 28.17 40.2 48 72.94 48 31.32 0 58.17-18.12 71.23-44.37 2.66-5.33-1.3-11.63-7.24-11.63zm-55.42 188.91l-5.07-12.67-19.93-49.83c-17.11-42.77-57.92-70.4-103.99-70.4h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.82-5.07 12.67C40.33 302.52 24 325.34 24 352v32c0 20.12 9.48 37.86 24 49.59V480c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h224v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-46.41c14.52-11.73 24-29.47 24-49.59v-32c0-26.66-16.33-49.48-39.51-59.09zM96 399.8c-19.2 0-32-12.76-32-31.9S76.8 336 96 336s48 28.71 48 47.85-28.8 15.95-48 15.95zm38.4-111.79l13.53-33.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17l13.53 33.83H134.4zM416 399.8c-19.2 0-48 3.19-48-15.95S396.8 336 416 336s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faCarTilt = {\n prefix: 'fas',\n iconName: 'car-tilt',\n icon: [640, 512, [], \"f5e5\", \"M624 448H317.12l-42.1-42.1 192.33-192.33 22.63 22.63c12.5 12.5 32.76 12.5 45.25 0l22.63-22.63c12.5-12.5 12.5-32.76 0-45.26l-38.24-38.23c-1-14.91-6.93-29.56-18.33-40.96l-33.94-33.94c-19.33-19.33-47.88-23.53-71.42-12.96L368.11 30.3 318.78 9.15C276.45-9 228.04.32 195.47 32.9l-89.8 89.81c-32.57 32.57-41.89 80.97-23.75 123.31l21.14 49.33 11.92 27.82c-10.57 23.54-6.37 52.09 12.96 71.42L181.36 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM399.47 100.43c13.58-13.58 31.65-13.61 45.18-.07 13.54 13.54 13.51 31.61-.07 45.19s-31.69 36.2-45.22 22.66c-13.53-13.54-13.47-54.21.11-67.78zM140.74 220.81a48.003 48.003 0 0 1 10.18-52.85l89.8-89.8a48.003 48.003 0 0 1 52.85-10.18l49.33 21.14-181.02 181.01-21.14-49.32zm77.57 151c-13.58 13.58-31.65 13.61-45.19.07-13.53-13.53-13.51-31.61.07-45.18 13.58-13.58 54.24-13.64 67.78-.11 13.54 13.54-9.09 31.65-22.66 45.22z\"]\n};\nvar faCarWash = {\n prefix: 'fas',\n iconName: 'car-wash',\n icon: [464, 512, [], \"f5e6\", \"M349.33 85.33C349.33 61.77 392 0 392 0s42.67 61.77 42.67 85.33S415.56 128 392 128s-42.67-19.11-42.67-42.67zM232 128c23.56 0 42.67-19.1 42.67-42.67S232 0 232 0s-42.67 61.77-42.67 85.33S208.44 128 232 128zm-160 0c23.56 0 42.67-19.1 42.67-42.67S72 0 72 0 29.33 61.77 29.33 85.33 48.44 128 72 128zm392 224v32c0 20.12-9.48 37.86-24 49.59V480c0 17.67-14.33 32-32 32h-32c-17.67 0-32-14.33-32-32v-32H120v32c0 17.67-14.33 32-32 32H56c-17.67 0-32-14.33-32-32v-46.41C9.48 421.86 0 404.13 0 384v-32c0-26.67 16.33-49.48 39.51-59.1l5.07-12.67 19.93-49.82c17.11-42.77 57.92-70.4 103.99-70.4h127c46.06 0 86.88 27.63 103.99 70.4l19.93 49.83 5.07 12.67C447.67 302.52 464 325.34 464 352zm-344 31.85C120 364.71 91.2 336 72 336s-32 12.76-32 31.9 12.8 31.9 32 31.9 48 3.19 48-15.95zm233.6-95.84l-13.53-33.83c-7.29-18.22-24.94-30.17-44.57-30.17h-127c-19.63 0-37.28 11.95-44.57 30.17l-13.53 33.83h243.2zM424 367.9c0-19.14-12.8-31.9-32-31.9s-48 28.71-48 47.85 28.8 15.95 48 15.95 32-12.76 32-31.9z\"]\n};\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaravanAlt = {\n prefix: 'fas',\n iconName: 'caravan-alt',\n icon: [640, 512, [], \"e000\", \"M624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32Zm192,0a32,32,0,0,1-32,32H352a32,32,0,0,1-32-32V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaretCircleDown = {\n prefix: 'fas',\n iconName: 'caret-circle-down',\n icon: [512, 512, [], \"f32d\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-379.5-27.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H133c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretCircleLeft = {\n prefix: 'fas',\n iconName: 'caret-circle-left',\n icon: [512, 512, [], \"f32e\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm27.5-379.5l-123 123c-4.7 4.7-4.7 12.3 0 17l123 123c7.6 7.6 20.5 2.2 20.5-8.5V133c0-10.7-12.9-16.1-20.5-8.5z\"]\n};\nvar faCaretCircleRight = {\n prefix: 'fas',\n iconName: 'caret-circle-right',\n icon: [512, 512, [], \"f330\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-27.5 379.5l123-123c4.7-4.7 4.7-12.3 0-17l-123-123c-7.6-7.6-20.5-2.2-20.5 8.5v246c0 10.7 12.9 16.1 20.5 8.5z\"]\n};\nvar faCaretCircleUp = {\n prefix: 'fas',\n iconName: 'caret-circle-up',\n icon: [512, 512, [], \"f331\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm379.5 27.5l-123-123c-4.7-4.7-12.3-4.7-17 0l-123 123c-7.6 7.6-2.2 20.5 8.5 20.5h246c10.7 0 16.1-12.9 8.5-20.5z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [192, 512, [], \"f0d9\", \"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [192, 512, [], \"f0da\", \"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"]\n};\nvar faCaretSquareDown = {\n prefix: 'fas',\n iconName: 'caret-square-down',\n icon: [448, 512, [], \"f150\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretSquareLeft = {\n prefix: 'fas',\n iconName: 'caret-square-left',\n icon: [448, 512, [], \"f191\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\"]\n};\nvar faCaretSquareRight = {\n prefix: 'fas',\n iconName: 'caret-square-right',\n icon: [448, 512, [], \"f152\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\"]\n};\nvar faCaretSquareUp = {\n prefix: 'fas',\n iconName: 'caret-square-up',\n icon: [448, 512, [], \"f151\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [], \"f787\", \"M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z\"]\n};\nvar faCars = {\n prefix: 'fas',\n iconName: 'cars',\n icon: [640, 512, [], \"f85b\", \"M252.13 243.23A131.77 131.77 0 0 1 375.07 160h38.41a57.49 57.49 0 0 0-32.9-36.44L376 112.2l-17.84-49.08A99.92 99.92 0 0 0 264.93 0H151.07a99.92 99.92 0 0 0-93.23 63.12L40 112.2l-4.55 11.36A57.39 57.39 0 0 0 0 176.55v28.69a57 57 0 0 0 21.52 44.46V288a32 32 0 0 0 32 32h22.07a32 32 0 0 0 32-32v-32h139.88zM111.11 92c6.53-16.92 22.36-28 40-28h113.82c17.6 0 33.42 11.1 40 28L317 128H99zM76 215.85c-14.4 0-24-9.57-24-23.92S61.6 168 76 168s36 21.53 36 35.89-21.6 11.96-36 11.96zm528.58 99.71L600 304.2l-17.87-49.08a99.92 99.92 0 0 0-93.2-63.12H375.07a99.92 99.92 0 0 0-93.23 63.12L264 304.2l-4.55 11.36a57.39 57.39 0 0 0-35.42 53v28.69a57 57 0 0 0 21.52 44.46V480a32 32 0 0 0 32 32h22.07a32 32 0 0 0 32-32v-32h200.79v32a32 32 0 0 0 32 32h22.07a32 32 0 0 0 32-32v-38.3A57 57 0 0 0 640 397.24v-28.69a57.39 57.39 0 0 0-35.42-52.99zM335.11 284c6.53-16.92 22.36-28 40-28h113.82c17.6 0 33.42 11.1 40 28L541 320H323zM300 407.85c-14.4 0-24-9.57-24-23.93S285.6 360 300 360s36 21.53 36 35.89-21.6 11.96-36 11.96zm264 0c-14.4 0-36 2.39-36-12S549.6 360 564 360s24 9.57 24 23.92-9.6 23.93-24 23.93z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"]\n};\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\"]\n};\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCassetteTape = {\n prefix: 'fas',\n iconName: 'cassette-tape',\n icon: [512, 512, [], \"f8ab\", \"M464 63H48a48 48 0 0 0-48 48v288a48 48 0 0 0 48 48h32l48-96h256l48 96h32a48 48 0 0 0 48-48V111a48 48 0 0 0-48-48zM128 255a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm182.78 0H201.22a78.91 78.91 0 0 0 0-64h109.56a78.91 78.91 0 0 0 0 64zm73.22 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zM147.78 383l-32 64h280.44l-32-64z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [512, 512, [], \"f6be\", \"M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faCatSpace = {\n prefix: 'fas',\n iconName: 'cat-space',\n icon: [640, 512, [], \"e001\", \"M544,32.72461V32l-.39648.39648C516.86914,12.32617,484.00391,0,448,0s-68.86914,12.32617-95.60352,32.39648L352,32v.72461C313.35156,61.93164,288,107.82422,288,160a159.95251,159.95251,0,0,0,3.89258,34.31445c-35.83985,5.3418-91.793,23.25782-131.89258,83.63867V192A96.105,96.105,0,0,0,64,96a32,32,0,0,0,0,64,32.04169,32.04169,0,0,1,32,32V448a64.06328,64.06328,0,0,0,64,64H336a15.9908,15.9908,0,0,0,16-16V480a32.00158,32.00158,0,0,0-32-32H288l128-96V496a15.9908,15.9908,0,0,0,16,16h32a15.9908,15.9908,0,0,0,16-16V316.77539A160.036,160.036,0,0,0,608,160C608,107.82422,582.64844,61.93164,544,32.72461ZM448,32a127.06647,127.06647,0,0,1,72.9375,23.0625L480,96H416L375.0625,55.0625A127.06647,127.06647,0,0,1,448,32Zm56,128a16,16,0,1,1-16-16A15.9908,15.9908,0,0,1,504,160Zm-80,0a16,16,0,1,1-16-16A15.9908,15.9908,0,0,1,424,160Zm24,128A128.14414,128.14414,0,0,1,320,160c0-32.16992,12.334-61.25391,32-83.76367V160a96,96,0,0,0,192,0V76.23633C563.666,98.74609,576,127.83008,576,160A128.14414,128.14414,0,0,1,448,288ZM162.94531,68.76953l39.71094,16.56055,16.5625,39.71094a5.32345,5.32345,0,0,0,9.53906,0l16.5586-39.71094,39.71484-16.56055a5.336,5.336,0,0,0,0-9.541l-39.71484-16.5586L228.75781,2.957a5.325,5.325,0,0,0-9.53906,0l-16.5625,39.71289-39.71094,16.5586a5.336,5.336,0,0,0,0,9.541Z\"]\n};\nvar faCauldron = {\n prefix: 'fas',\n iconName: 'cauldron',\n icon: [448, 512, [], \"f6bf\", \"M448 212v-40c0-6.63-6.27-12-14-12H14c-7.73 0-14 5.37-14 12v40c0 6.63 6.27 12 14 12h19.79C12.39 262.52 0 305.28 0 345.6c0 39.08 11.82 70.65 32 95.53V488c0 13.25 10.75 24 24 24s24-10.75 24-24v-7.49c38.95 21.3 89.14 31.49 144 31.49s105.05-10.19 144-31.49V488c0 13.25 10.75 24 24 24s24-10.75 24-24v-46.87c20.18-24.88 32-56.45 32-95.53 0-40.32-12.39-83.08-33.79-121.6H434c7.73 0 14-5.37 14-12zM160 64c17.67 0 32-14.33 32-32S177.67 0 160 0s-32 14.33-32 32 14.33 32 32 32zm112 64c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faCctv = {\n prefix: 'fas',\n iconName: 'cctv',\n icon: [576, 512, [], \"f8ac\", \"M517.45 168.58L139.24 2.29a32 32 0 0 0-39.67 13.84L4.23 183a32 32 0 0 0 16.85 46l156.57 64.85L137.81 400H64v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v128a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h96a32 32 0 0 0 30-20.77l46.85-124.94 68.52 28.38a32 32 0 0 0 27.89-2.94l189.26-118.31c22.21-13.88 19.25-47.11-5.07-56.84zm48.47 105.2l-35.45-15.59-138.4 86.5 119.58 52.58a16.86 16.86 0 0 0 22.22-8.65l40.7-92.62a16.85 16.85 0 0 0-8.65-22.22z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\"]\n};\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [], \"f6c0\", \"M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z\"]\n};\nvar faChairOffice = {\n prefix: 'fas',\n iconName: 'chair-office',\n icon: [448, 512, [], \"f6c1\", \"M64 224v-64c0-17.67-14.33-32-32-32S0 142.33 0 160v64c0 17.67 14.33 32 32 32s32-14.33 32-32zm352-96c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32s32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm-64-64c0-35.35-28.65-64-64-64H160c-35.35 0-64 28.65-64 64v192h256V64zm51.67 245.88A31.996 31.996 0 0 0 373.31 288H74.69c-13.77 0-26 8.81-30.36 21.88l-10.67 32C26.76 362.6 42.18 384 64.03 384H192v67.36c-28.27 6.01-50.99 19.69-61.85 37.21-6.41 10.34 2.41 23.43 15.02 23.43h157.66c12.61 0 21.44-13.09 15.02-23.43-10.86-17.52-33.59-31.2-61.85-37.21V384h127.97c21.84 0 37.27-21.4 30.36-42.12l-10.66-32z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [640, 512, [], \"f51b\", \"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChalkboardTeacher = {\n prefix: 'fas',\n iconName: 'chalkboard-teacher',\n icon: [640, 512, [], \"f51c\", \"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\"]\n};\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [], \"f1fe\", \"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [], \"f080\", \"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [], \"f201\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z\"]\n};\nvar faChartLineDown = {\n prefix: 'fas',\n iconName: 'chart-line-down',\n icon: [512, 512, [], \"f64d\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-16-80V185.94c0-21.38-25.85-32.09-40.97-16.97l-32.4 32.4-96-96c-12.5-12.5-32.76-12.5-45.25 0L192 178.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63l68.69 68.69c12.5 12.5 32.76 12.5 45.25 0L288 173.25l73.38 73.38-32.4 32.4c-15.12 15.12-4.41 40.97 16.97 40.97H464c8.84 0 16-7.17 16-16z\"]\n};\nvar faChartNetwork = {\n prefix: 'fas',\n iconName: 'chart-network',\n icon: [640, 512, [], \"f78a\", \"M576 192c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zM64 240c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm449.6-37.2l-19.2-25.6-48 36 19.2 25.6 48-36zM576 384c-14.4 0-27.6 5-38.3 13l-96-57.6c3.8-11.2 6.3-23 6.3-35.5 0-61.9-50.1-112-112-112-8.4 0-16.6 1.1-24.4 2.9l-40.8-87.4C281.4 96 288 80.8 288 64c0-35.3-28.7-64-64-64s-64 28.7-64 64 28.7 64 64 64c1.1 0 2.1-.3 3.2-.3l41 87.8C241.5 235.9 224 267.8 224 304c0 61.9 50.1 112 112 112 32.1 0 60.8-13.7 81.2-35.3l95.8 57.5c-.5 3.2-1 6.5-1 9.8 0 35.3 28.7 64 64 64s64-28.7 64-64-28.7-64-64-64zm-240-32c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm-184-32h48v-32h-48v32z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [544, 512, [], \"f200\", \"M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z\"]\n};\nvar faChartPieAlt = {\n prefix: 'fas',\n iconName: 'chart-pie-alt',\n icon: [512, 512, [], \"f64e\", \"M461.29 288H224V50.71c0-9.55-8.39-17.39-17.84-16.06C87.08 51.47-3.96 155.43.13 280.07 4.2 404.1 107.91 507.8 231.93 511.87c124.64 4.09 228.6-86.95 245.42-206.03 1.33-9.45-6.52-17.84-16.06-17.84zM288.8.04C279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.69 16.2-16.8C503.72 103.74 408.26 8.28 288.8.04z\"]\n};\nvar faChartScatter = {\n prefix: 'fas',\n iconName: 'chart-scatter',\n icon: [512, 512, [], \"f7ee\", \"M496 384H64V80a16 16 0 0 0-16-16H16A16 16 0 0 0 0 80v336a32 32 0 0 0 32 32h464a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-336-64a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm256-160a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm-224 0a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm192 160a32 32 0 1 0-32-32 32 32 0 0 0 32 32zm-96-64a32 32 0 1 0-32-32 32 32 0 0 0 32 32z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [512, 512, [], \"f00c\", \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"]\n};\nvar faCheckCircle = {\n prefix: 'fas',\n iconName: 'check-circle',\n icon: [512, 512, [], \"f058\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [512, 512, [], \"f560\", \"M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z\"]\n};\nvar faCheckSquare = {\n prefix: 'fas',\n iconName: 'check-square',\n icon: [448, 512, [], \"f14a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\"]\n};\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faCheeseSwiss = {\n prefix: 'fas',\n iconName: 'cheese-swiss',\n icon: [512, 512, [], \"f7f0\", \"M368 336a48 48 0 0 1-48-48H0v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288h-96a48 48 0 0 1-48 48zm-192 96a48 48 0 1 1 48-48 48 48 0 0 1-48 48zM299.83 32a32 32 0 0 0-21.13 7l-61.76 48.06a47.91 47.91 0 0 1-75.1 58.48L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faCheeseburger = {\n prefix: 'fas',\n iconName: 'cheeseburger',\n icon: [512, 512, [], \"f7f1\", \"M464 256h-48l-96 64-96-64H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zM58.6 224h394.7c34.6 0 54.6-43.9 34.8-75.9C448 83.2 359.5 32.1 256 32c-103.5.1-192 51.2-232.2 116.1-19.8 32 .3 75.9 34.8 75.9zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm352 272H32a16 16 0 0 0-16 16v16a64.06 64.06 0 0 0 64 64h352a64.06 64.06 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [], \"f43a\", \"M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBishopAlt = {\n prefix: 'fas',\n iconName: 'chess-bishop-alt',\n icon: [256, 512, [], \"f43b\", \"M64 288h14.89A535.84 535.84 0 0 1 64 384h128a535.84 535.84 0 0 1-14.89-96H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-11.67c16-6.67 26.48-25.09 26.48-50.43 0-19.32-7.2-42.34-17.73-63.33l-48.59 48.59a4 4 0 0 1-5.66 0l-5.66-5.66a4 4 0 0 1 0-5.65L181 111.7c-10.22-16.81-22.2-31.22-33.86-39.33C155.31 69.59 160 61.85 160 52.73 160 41.28 151.92 32 140.47 32h-24.94C104.08 32 96 41.28 96 52.73c0 9.12 4.69 16.86 12.87 19.64-28.58 19.87-59.68 76.75-59.68 117.2 0 25.34 10.49 43.76 26.48 50.43H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm183.16 171.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [512, 512, [], \"f43c\", \"M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z\"]\n};\nvar faChessClock = {\n prefix: 'fas',\n iconName: 'chess-clock',\n icon: [640, 512, [], \"f43d\", \"M519.38 243a12 12 0 0 0-17 0l-50.89 50.89a12 12 0 0 0 0 17l5.65 5.66a12 12 0 0 0 17 0L525 265.59a12 12 0 0 0 0-17zm80.52-115h-56v-16a16 16 0 0 0-16-16h-128a16 16 0 0 0-16 16v16H200.15V79.94H240a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H112a16 16 0 0 0-16 16v15.94a16 16 0 0 0 16 16h40.18V128H39.9a40 40 0 0 0-40 40v272a40 40 0 0 0 40 40h560a40 40 0 0 0 40-40V168a40 40 0 0 0-40-40zM176.2 416.06a112 112 0 1 1 112-111.95 111.95 111.95 0 0 1-112 111.95zm288 0a112 112 0 1 1 112-111.95 111.95 111.95 0 0 1-112 111.95zm-284-191.92h-8a12 12 0 0 0-12 12v72a12 12 0 0 0 12 12h8a12 12 0 0 0 12-12v-72a12 12 0 0 0-12-12z\"]\n};\nvar faChessClockAlt = {\n prefix: 'fas',\n iconName: 'chess-clock-alt',\n icon: [640, 512, [], \"f43e\", \"M600 128H487.75V80H528a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H400a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h39.75v48H255.91v-16a16 16 0 0 0-16-16h-128a16 16 0 0 0-16 16v16H40a40.17 40.17 0 0 0-40 40.11V440a40 40 0 0 0 40 40h560a40 40 0 0 0 40-40V168.11A40.17 40.17 0 0 0 600 128zM175.93 416.06a112 112 0 1 1 112-111.95 112 112 0 0 1-112 111.95zm287.89 0a112 112 0 1 1 112-111.95 112 112 0 0 1-112 111.95zM231.12 243a12 12 0 0 0-17 0l-50.89 50.89a12 12 0 0 0 0 17l5.66 5.66a12 12 0 0 0 17 0l50.89-50.9a12 12 0 0 0 0-17zm236.7-18.84h-8a12 12 0 0 0-12 12v72a12 12 0 0 0 12 12h8a12 12 0 0 0 12-12v-72a12 12 0 0 0-12-12.02z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [], \"f43f\", \"M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z\"]\n};\nvar faChessKingAlt = {\n prefix: 'fas',\n iconName: 'chess-king-alt',\n icon: [320, 512, [], \"f440\", \"M106 208H96a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 96 384h128a535.78 535.78 0 0 1-15.94-128H224a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H176V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24h-24a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H87.09a16 16 0 0 0-15 21.62zm173.16 251.58L256 448v-16a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v16l-23.15 11.58A16 16 0 0 0 32 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [384, 512, [], \"f441\", \"M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessKnightAlt = {\n prefix: 'fas',\n iconName: 'chess-knight-alt',\n icon: [320, 512, [], \"f442\", \"M311.16 459.58L288 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zM45.55 235.52l28.83 12.86a22.59 22.59 0 0 0 17.67.34l9.09-3.65a22.79 22.79 0 0 0 13.33-14.62l6.53-21.87a17.09 17.09 0 0 1 8.92-11.15l14.2-5.43v37.21a28.58 28.58 0 0 1-16.9 26.09L80.68 279C40.87 299.22 32.42 352.42 64 384h192c7-7.85 16-18.31 16-32V203.16C272 126.62 209.38 64 132.84 64H40.52A8.54 8.54 0 0 0 32 72.56 12.14 12.14 0 0 0 33.27 78l10.1 20.28-6.37 6.35a17.21 17.21 0 0 0-5 12.11v97.9a22.86 22.86 0 0 0 13.55 20.88zM80.07 128a16 16 0 1 1-15.94 16 16 16 0 0 1 15.94-16z\"]\n};\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [], \"f443\", \"M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessPawnAlt = {\n prefix: 'fas',\n iconName: 'chess-pawn-alt',\n icon: [256, 512, [], \"f444\", \"M64 288h14.89A535.84 535.84 0 0 1 64 384h128a535.84 535.84 0 0 1-14.89-96H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-16.44a80 80 0 1 0-95.12 0H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16zm183.16 171.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z\"]\n};\nvar faChessQueenAlt = {\n prefix: 'fas',\n iconName: 'chess-queen-alt',\n icon: [256, 512, [], \"f446\", \"M67.37 192H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h16v14a535.76 535.76 0 0 1-16 130h128a535.76 535.76 0 0 1-16-130v-14h16a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-3.37l44.5-95.73a6.73 6.73 0 0 0-2.29-8.62l-10.06-6.71c-3.13-2.08-7.12-1-9.38 2a20.05 20.05 0 0 1-19.89 7.67c-9.74-1.81-16.35-11-16.35-21a5.65 5.65 0 0 0-5.64-5.61h-16.33a5.45 5.45 0 0 0-5.41 4.17 20.22 20.22 0 0 1-39.56 0 5.45 5.45 0 0 0-5.41-4.17H86.48a5.65 5.65 0 0 0-5.64 5.64c0 10.82-8 20.53-18.81 21.26a20 20 0 0 1-17.49-8.06 6.81 6.81 0 0 0-9.3-1.91l-10.08 6.72a6.73 6.73 0 0 0-2.29 8.62zM128 48a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm119.16 411.6L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [384, 512, [], \"f447\", \"M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessRookAlt = {\n prefix: 'fas',\n iconName: 'chess-rook-alt',\n icon: [320, 512, [], \"f448\", \"M311.16 459.58L288 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zM71.81 210.32L57.33 384h205.34l-14.48-173.7 30.62-31.11a32 32 0 0 0 9.19-22.45V72a8 8 0 0 0-8-8h-35.18a8 8 0 0 0-8 8v40h-32.94V72a8 8 0 0 0-8-8h-71.75a8 8 0 0 0-8 8v40H83.19V72a8 8 0 0 0-8-8H40a8 8 0 0 0-8 8v84.82a32 32 0 0 0 9.21 22.47zm64.6 21.27a23.59 23.59 0 0 1 47.18 0v47.18h-47.18z\"]\n};\nvar faChevronCircleDown = {\n prefix: 'fas',\n iconName: 'chevron-circle-down',\n icon: [512, 512, [], \"f13a\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\"]\n};\nvar faChevronCircleLeft = {\n prefix: 'fas',\n iconName: 'chevron-circle-left',\n icon: [512, 512, [], \"f137\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\"]\n};\nvar faChevronCircleRight = {\n prefix: 'fas',\n iconName: 'chevron-circle-right',\n icon: [512, 512, [], \"f138\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\"]\n};\nvar faChevronCircleUp = {\n prefix: 'fas',\n iconName: 'chevron-circle-up',\n icon: [512, 512, [], \"f139\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\"]\n};\nvar faChevronDoubleDown = {\n prefix: 'fas',\n iconName: 'chevron-double-down',\n icon: [448, 512, [], \"f322\", \"M207 477.5L12.7 283.1c-9.4-9.4-9.4-24.6 0-33.9l22.7-22.7c9.4-9.4 24.5-9.4 33.9 0l154.7 154 154.7-154c9.4-9.3 24.5-9.3 33.9 0l22.7 22.7c9.4 9.4 9.4 24.6 0 33.9L241 477.5c-9.4 9.3-24.6 9.3-34 0zm34-192L435.3 91.1c9.4-9.4 9.4-24.6 0-33.9l-22.7-22.7c-9.4-9.4-24.5-9.4-33.9 0L224 188.5 69.3 34.5c-9.4-9.3-24.5-9.3-33.9 0L12.7 57.2c-9.4 9.4-9.4 24.6 0 33.9L207 285.5c9.4 9.3 24.6 9.3 34 0z\"]\n};\nvar faChevronDoubleLeft = {\n prefix: 'fas',\n iconName: 'chevron-double-left',\n icon: [512, 512, [], \"f323\", \"M34.5 239L228.9 44.7c9.4-9.4 24.6-9.4 33.9 0l22.7 22.7c9.4 9.4 9.4 24.5 0 33.9L131.5 256l154 154.7c9.3 9.4 9.3 24.5 0 33.9l-22.7 22.7c-9.4 9.4-24.6 9.4-33.9 0L34.5 273c-9.3-9.4-9.3-24.6 0-34zm192 34l194.3 194.3c9.4 9.4 24.6 9.4 33.9 0l22.7-22.7c9.4-9.4 9.4-24.5 0-33.9L323.5 256l154-154.7c9.3-9.4 9.3-24.5 0-33.9l-22.7-22.7c-9.4-9.4-24.6-9.4-33.9 0L226.5 239c-9.3 9.4-9.3 24.6 0 34z\"]\n};\nvar faChevronDoubleRight = {\n prefix: 'fas',\n iconName: 'chevron-double-right',\n icon: [512, 512, [], \"f324\", \"M477.5 273L283.1 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.7-22.7c-9.4-9.4-9.4-24.5 0-33.9l154-154.7-154-154.7c-9.3-9.4-9.3-24.5 0-33.9l22.7-22.7c9.4-9.4 24.6-9.4 33.9 0L477.5 239c9.3 9.4 9.3 24.6 0 34zm-192-34L91.1 44.7c-9.4-9.4-24.6-9.4-33.9 0L34.5 67.4c-9.4 9.4-9.4 24.5 0 33.9l154 154.7-154 154.7c-9.3 9.4-9.3 24.5 0 33.9l22.7 22.7c9.4 9.4 24.6 9.4 33.9 0L285.5 273c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faChevronDoubleUp = {\n prefix: 'fas',\n iconName: 'chevron-double-up',\n icon: [448, 512, [], \"f325\", \"M241 34.5l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9l-22.7 22.7c-9.4 9.4-24.5 9.4-33.9 0L224 131.5l-154.7 154c-9.4 9.3-24.5 9.3-33.9 0l-22.7-22.7c-9.4-9.4-9.4-24.6 0-33.9L207 34.5c9.4-9.3 24.6-9.3 34 0zm-34 192L12.7 420.9c-9.4 9.4-9.4 24.6 0 33.9l22.7 22.7c9.4 9.4 24.5 9.4 33.9 0l154.7-154 154.7 154c9.4 9.3 24.5 9.3 33.9 0l22.7-22.7c9.4-9.4 9.4-24.6 0-33.9L241 226.5c-9.4-9.3-24.6-9.3-34 0z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [448, 512, [], \"f078\", \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [], \"f053\", \"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [], \"f054\", \"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"]\n};\nvar faChevronSquareDown = {\n prefix: 'fas',\n iconName: 'chevron-square-down',\n icon: [448, 512, [], \"f329\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM240.971 361.941l135.515-135.515c9.373-9.373 9.373-24.569 0-33.941l-16.971-16.971c-9.373-9.373-24.569-9.373-33.941 0L224 277.088 122.427 175.515c-9.373-9.373-24.569-9.373-33.941 0l-16.971 16.971c-9.373 9.373-9.373 24.569 0 33.941L207.03 361.942c9.372 9.372 24.568 9.372 33.941-.001z\"]\n};\nvar faChevronSquareLeft = {\n prefix: 'fas',\n iconName: 'chevron-square-left',\n icon: [448, 512, [], \"f32a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM118.059 272.971l135.515 135.515c9.373 9.373 24.569 9.373 33.941 0l16.971-16.971c9.373-9.373 9.373-24.569 0-33.941L202.912 256l101.574-101.573c9.373-9.373 9.373-24.569 0-33.941l-16.971-16.971c-9.373-9.373-24.569-9.373-33.941 0L118.059 239.029c-9.373 9.373-9.373 24.569 0 33.942z\"]\n};\nvar faChevronSquareRight = {\n prefix: 'fas',\n iconName: 'chevron-square-right',\n icon: [448, 512, [], \"f32b\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm281.941 207.029L194.427 103.515c-9.373-9.373-24.569-9.373-33.941 0l-16.971 16.971c-9.373 9.373-9.373 24.569 0 33.941L245.088 256 143.515 357.573c-9.373 9.373-9.373 24.569 0 33.941l16.971 16.971c9.373 9.373 24.569 9.373 33.941 0L329.942 272.97c9.372-9.372 9.372-24.568-.001-33.941z\"]\n};\nvar faChevronSquareUp = {\n prefix: 'fas',\n iconName: 'chevron-square-up',\n icon: [448, 512, [], \"f32c\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm207.029-281.941L71.515 285.573c-9.373 9.373-9.373 24.569 0 33.941l16.971 16.971c9.373 9.373 24.569 9.373 33.941 0L224 234.912l101.573 101.574c9.373 9.373 24.569 9.373 33.941 0l16.971-16.971c9.373-9.373 9.373-24.569 0-33.941L240.971 150.059c-9.373-9.373-24.569-9.373-33.942 0z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [448, 512, [], \"f077\", \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [384, 512, [], \"f1ae\", \"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\"]\n};\nvar faChimney = {\n prefix: 'fas',\n iconName: 'chimney',\n icon: [512, 512, [], \"f78b\", \"M480 0H32C14.3 0 0 14.3 0 32v128c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32zM32 512h288V384H32v128zm160-160h288V224H192v128zM32 224v128h128V224H32zm320 288h128V384H352v128z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [], \"f51d\", \"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\"]\n};\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [], \"f64f\", \"M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z\"]\n};\nvar faClarinet = {\n prefix: 'fas',\n iconName: 'clarinet',\n icon: [640, 512, [], \"f8ad\", \"M630.12 129.22a15.94 15.94 0 0 0-17.43 3.47L569.38 176H480v-32h24a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H232a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H101.19a32 32 0 0 0-10.12 1.64l-80.13 26.71A16 16 0 0 0 0 219.53v72.94a16 16 0 0 0 10.94 15.18l80.13 26.71a32 32 0 0 0 10.12 1.64h468.19l43.31 43.31A16 16 0 0 0 624 384a15.73 15.73 0 0 0 6.12-1.22A16 16 0 0 0 640 368V144a16 16 0 0 0-9.88-14.78zM384 144h64v32h-64zm-96 0h64v32h-64zm-16 136a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm96 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm96 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z\"]\n};\nvar faClawMarks = {\n prefix: 'fas',\n iconName: 'claw-marks',\n icon: [512, 512, [], \"f6c2\", \"M6.99 224.51c-5-2.37-9.4 4.09-5.49 8l85.12 85.13c6 6 9.37 14.14 9.37 22.63V384h43.74c8.49 0 16.63 3.37 22.63 9.37l117.15 117.16c3.86 3.86 10.32-.56 7.99-5.49C206.4 333.11 63.36 251.26 6.99 224.51zM246.63 29.63c6 6 9.37 14.14 9.37 22.63V96h43.74c8.49 0 16.63 3.37 22.63 9.37l52.26 52.26c6 6 9.37 14.14 9.37 22.63V224h43.73c8.49 0 16.63 3.37 22.63 9.37l53.16 53.16c3.86 3.86 10.32-.56 7.99-5.49C430.4 109.11 287.36 27.26 230.99.51c-5-2.37-9.4 4.09-5.49 8l21.13 21.12zm-42.36 90.69c-7.8-6.05-12.27-15.15-12.27-25.03V64h-57.99c-6.01 0-12.04-1.84-17.12-5.05C74.85 32.39 38.37 13.23 12.42.91 3.54-3.3-4.28 8.18 2.67 15.13l179.96 179.96c6 6 9.37 14.14 9.37 22.63V256h38.29c8.49 0 16.62 3.37 22.63 9.37l89.71 89.71c6 6 9.37 14.14 9.37 22.63V416h38.29c8.49 0 16.62 3.37 22.63 9.37l84.01 84.01c6.86 6.86 18.34-.99 14.2-9.76-82.73-175.34-201.55-297.65-306.86-379.3z\"]\n};\nvar faClinicMedical = {\n prefix: 'fas',\n iconName: 'clinic-medical',\n icon: [576, 512, [], \"f7f2\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [], \"f328\", \"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faClipboardListCheck = {\n prefix: 'fas',\n iconName: 'clipboard-list-check',\n icon: [384, 512, [], \"f737\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zM65.6 209.4l12.7-12.6c2.1-2.1 5.5-2.1 7.6 0l20.6 20.8 47.6-47.2c2.1-2.1 5.5-2.1 7.6 0l12.6 12.7c2.1 2.1 2.1 5.5 0 7.6l-64.2 63.6c-2.1 2.1-5.5 2.1-7.6 0L65.6 217c-2.1-2.1-2.1-5.5 0-7.6zM96 392c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm224-16c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-128c0 4.4-4.3 8-9.6 8H154.1l32.3-32h124c5.3 0 9.6 3.6 9.6 8v16z\"]\n};\nvar faClipboardPrescription = {\n prefix: 'fas',\n iconName: 'clipboard-prescription',\n icon: [384, 512, [], \"f5e8\", \"M176 240h-48v32h48c8.82 0 16-7.18 16-16s-7.18-16-16-16zM336 64h-80c0-35.29-28.71-64-64-64s-64 28.71-64 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48zM192 40c13.26 0 24 10.74 24 24 0 13.25-10.74 24-24 24s-24-10.75-24-24c0-13.26 10.74-24 24-24zm112 392l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.34 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0l11.3 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.24 6.24 6.24 16.37 0 22.62z\"]\n};\nvar faClipboardUser = {\n prefix: 'fas',\n iconName: 'clipboard-user',\n icon: [384, 512, [], \"f7f3\", \"M336 64h-80a64 64 0 0 0-128 0H48a48 48 0 0 0-48 48v352a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V112a48 48 0 0 0-48-48zM192 40a24 24 0 1 1-24 24 24 24 0 0 1 24-24zm0 152a64 64 0 1 1-64 64 64 64 0 0 1 64-64zm112 236.8c0 10.61-10 19.2-22.4 19.2H102.4C90 448 80 439.4 80 428.8v-19.2c0-31.81 30.09-57.6 67.2-57.6h5a103.25 103.25 0 0 0 79.7 0h5c37.11 0 67.2 25.79 67.2 57.6z\"]\n};\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [], \"f017\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8Zm92.49,313h0l-20,25a16,16,0,0,1-22.49,2.5h0l-67-49.72a40,40,0,0,1-15-31.23V112a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16V256l58,42.5A16,16,0,0,1,348.49,321Z\"]\n};\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [], \"f0c2\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\"]\n};\nvar faCloudDownload = {\n prefix: 'fas',\n iconName: 'cloud-download',\n icon: [640, 512, [], \"f0ed\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-139.9 93L305 412.3c-9.4 9.4-24.6 9.4-33.9 0l-92.7-92.7c-9.4-9.4-9.4-24.6 0-33.9l10.8-10.8c9.6-9.6 25.2-9.3 34.5.5l32.4 34.5V184c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v125.9l32.4-34.5c9.3-9.9 24.9-10.1 34.5-.5l10.8 10.8c9.2 9.3 9.2 24.5-.1 33.9z\"]\n};\nvar faCloudDownloadAlt = {\n prefix: 'fas',\n iconName: 'cloud-download-alt',\n icon: [640, 512, [], \"f381\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\"]\n};\nvar faCloudDrizzle = {\n prefix: 'fas',\n iconName: 'cloud-drizzle',\n icon: [512, 512, [], \"f738\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM48 360c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16s16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm96 80c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16s16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm96-80c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16s16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm96 80c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16s16-7.2 16-16v-40c0-8.8-7.2-16-16-16zm96-80c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16s16-7.2 16-16v-40c0-8.8-7.2-16-16-16z\"]\n};\nvar faCloudHail = {\n prefix: 'fas',\n iconName: 'cloud-hail',\n icon: [512, 512, [], \"f739\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zm-32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-192 96c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm128 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm-64-96c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM64 448c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm64-96c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCloudHailMixed = {\n prefix: 'fas',\n iconName: 'cloud-hail-mixed',\n icon: [512, 512, [], \"f73a\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm95.3-.4c-7.9-3.9-17.5-.8-21.5 7.2l-16 32c-3.9 7.9-.8 17.5 7.2 21.5 2.3 1.1 4.8 1.7 7.2 1.7 5.8 0 11.5-3.2 14.3-8.8l16-32c3.8-8.1.7-17.7-7.2-21.6zm-192 0c-7.9-3.9-17.5-.8-21.5 7.2l-16 32c-3.9 7.9-.8 17.5 7.2 21.5 2.3 1.1 4.8 1.7 7.2 1.7 5.8 0 11.5-3.2 14.3-8.8l16-32c3.8-8.1.7-17.7-7.2-21.6zm384 0c-7.9-3.9-17.5-.8-21.5 7.2l-16 32c-3.9 7.9-.8 17.5 7.2 21.5 2.3 1.1 4.8 1.7 7.2 1.7 5.8 0 11.5-3.2 14.3-8.8l16-32c3.8-8.1.7-17.7-7.2-21.6zm-95.3.4c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM32 448c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm192 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z\"]\n};\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [576, 512, [], \"f6c3\", \"M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z\"]\n};\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudMusic = {\n prefix: 'fas',\n iconName: 'cloud-music',\n icon: [640, 512, [], \"f8ae\", \"M537.59 226.59a96 96 0 0 0-142.9-114.39A160 160 0 0 0 96 192c0 2.7.09 5.41.19 8.09A144 144 0 0 0 144 480h368a128 128 0 0 0 25.59-253.41zM384 352c0 17.67-21.5 32-48 32s-48-14.33-48-32 21.5-32 48-32a69.89 69.89 0 0 1 16 2v-76.36l-96 37.52V384c0 17.67-21.5 32-48 32s-48-14.33-48-32 21.5-32 48-32a69.89 69.89 0 0 1 16 2V239.25A16 16 0 0 1 235.19 224l128-47.25A16 16 0 0 1 384 192z\"]\n};\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [], \"f73d\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z\"]\n};\nvar faCloudRainbow = {\n prefix: 'fas',\n iconName: 'cloud-rainbow',\n icon: [576, 512, [], \"f73e\", \"M430.8 304.9c9.9 5.6 19 12.4 26.9 20.3C487.1 292.8 529 272 576 272v-64c-61 0-116.3 24.6-156.8 64.3 5.7 9.9 9.8 20.9 11.6 32.6zm-31.6 20.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.9-56.5-66-101.9-66-61.9 0-112 50.1-112 112 0 3 .7 5.8.9 8.7C39.2 324.4 0 365.4 0 416c0 53 43 96 96 96h272c53 0 96-43 96-96 0-42-27.2-77.4-64.8-90.4zm-160.6-152c21 5.9 40.4 16.5 56.6 31C359.6 119.4 461.3 64 576 64V0C437.1 0 314.2 68.7 238.6 173.6zm87.2 51.5c7.4-.8 36.7-5.4 68.4 18.9 46.4-46.8 110.7-76 181.8-76v-64c-101.3 0-191.6 47.4-250.2 121.1z\"]\n};\nvar faCloudShowers = {\n prefix: 'fas',\n iconName: 'cloud-showers',\n icon: [512, 512, [], \"f73f\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM48 368c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16v-80c0-8.8-7.2-16-16-16zm96 32c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16v-80c0-8.8-7.2-16-16-16zm96-32c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16v-80c0-8.8-7.2-16-16-16zm96 32c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16v-80c0-8.8-7.2-16-16-16zm96-32c-8.8 0-16 7.2-16 16v80c0 8.8 7.2 16 16 16s16-7.2 16-16v-80c0-8.8-7.2-16-16-16z\"]\n};\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faCloudSleet = {\n prefix: 'fas',\n iconName: 'cloud-sleet',\n icon: [512, 512, [], \"f741\", \"M512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96zM87.2 353.7c-7.9-3.9-17.5-.7-21.5 7.2l-64 128c-3.9 7.9-.8 17.5 7.2 21.5 2.3 1.1 4.8 1.7 7.2 1.7 5.8 0 11.5-3.2 14.3-8.8l64-128c3.8-8.1.7-17.7-7.2-21.6zm256 0c-7.9-3.9-17.5-.7-21.5 7.2l-64 128c-3.9 7.9-.8 17.5 7.2 21.5 2.3 1.1 4.8 1.7 7.2 1.7 5.8 0 11.5-3.2 14.3-8.8l64-128c3.8-8.1.7-17.7-7.2-21.6zm151.7 35.4l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V360c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V472c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16 27.9-16c3.8-2.2 5.1-7.1 2.9-10.9zm-256 0l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V360c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V472c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16 27.9-16c3.8-2.2 5.1-7.1 2.9-10.9z\"]\n};\nvar faCloudSnow = {\n prefix: 'fas',\n iconName: 'cloud-snow',\n icon: [512, 512, [], \"f742\", \"M96 320h320c53 0 96-43 96-96s-43-96-96-96c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96zm30.9 69.1l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V360c0-4.4-3.6-8-8-8H56c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16L4 432c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V472c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16 27.9-16c3.8-2.2 5.1-7.1 2.9-10.9zm192 32l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V392c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V504c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16 27.9-16c3.8-2.2 5.1-7.1 2.9-10.9zm192-32l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V360c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V472c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16 27.9-16c3.8-2.2 5.1-7.1 2.9-10.9z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [], \"f6c4\", \"M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [576, 512, [], \"f743\", \"M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudUpload = {\n prefix: 'fas',\n iconName: 'cloud-upload',\n icon: [640, 512, [], \"f0ee\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-139.9 63.7l-10.8 10.8c-9.6 9.6-25.2 9.3-34.5-.5L320 266.1V392c0 13.3-10.7 24-24 24h-16c-13.3 0-24-10.7-24-24V266.1l-32.4 34.5c-9.3 9.9-24.9 10.1-34.5.5l-10.8-10.8c-9.4-9.4-9.4-24.6 0-33.9l92.7-92.7c9.4-9.4 24.6-9.4 33.9 0l92.7 92.7c9.4 9.4 9.4 24.6.1 33.9z\"]\n};\nvar faCloudUploadAlt = {\n prefix: 'fas',\n iconName: 'cloud-upload-alt',\n icon: [640, 512, [], \"f382\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\"]\n};\nvar faClouds = {\n prefix: 'fas',\n iconName: 'clouds',\n icon: [640, 512, [], \"f744\", \"M544 320c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8-18.6-35.9-55.8-60.8-99-60.8-61.9 0-112 50.1-112 112 0 7.3.8 14.3 2.1 21.2-38.3 12.6-66.1 48.3-66.1 90.8 0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM304 160c40.7 0 78.6 17.2 105.4 46.5 9.8-5.6 20.5-9.4 31.6-11.8 4.3-10.8 7-22.3 7-34.7 0-53-43-96-96-96-14.1 0-27.4 3.2-39.5 8.7C296.6 30.3 256 0 208 0 151.6 0 105.3 41.9 97.6 96.2c-.5 0-1-.2-1.6-.2-53 0-96 43-96 96s43 96 96 96h65.6c8.1-71.8 68.5-128 142.4-128z\"]\n};\nvar faCloudsMoon = {\n prefix: 'fas',\n iconName: 'clouds-moon',\n icon: [640, 512, [], \"f745\", \"M448 320h-1.6c-7.4-36.5-39.7-64-78.4-64-24.6 0-46.3 11.3-61 28.8-18.6-35.9-55.8-60.8-99-60.8-58.3 0-105.6 44.7-110.9 101.6C59.3 338.5 32 373.9 32 416c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zm183-71.3c-78.2 14.8-150-44.7-150-123.1 0-45.1 24.3-86.6 63.9-109 6.1-3.4 4.6-12.6-2.4-13.9C532.9.9 523 0 513.1 0 424.2 0 352 71.6 352 160c0 .7.2 1.3.2 2 16.3 16.8 27 38.8 30.3 63.1 38.5 5.1 71.7 29.9 87.6 64.8 23.1 4 44 14.4 61.1 29.1 42.5-4.7 80.7-26 107.1-58.2 4.4-5.5-.4-13.4-7.3-12.1zM68.3 303.2C83.2 238.6 140.2 192 208 192c40.7 0 78.6 17.2 105.4 46.5 11.5-6.5 24.1-10.8 37.1-12.9-6.8-37.3-39.3-65.6-78.5-65.6h-17.6c-7.4-36.5-39.7-64-78.4-64s-71 27.5-78.4 64H80c-44.2 0-80 35.8-80 80 0 33.9 21.2 62.8 51 74.4 5.5-4.1 11.2-8 17.3-11.2z\"]\n};\nvar faCloudsSun = {\n prefix: 'fas',\n iconName: 'clouds-sun',\n icon: [640, 512, [], \"f746\", \"M512 320h-1.6c-7.4-36.5-39.7-64-78.4-64-24.6 0-46.3 11.3-61 28.8-18.6-35.9-55.8-60.8-99-60.8-58.3 0-105.6 44.7-110.9 101.6C123.3 338.5 96 373.9 96 416c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zm48-160h-17.6c-7.4-36.5-39.7-64-78.4-64s-71 27.5-78.4 64H368c-27.6 0-51.8 13.9-66.2 35.1 29.1 6.2 55.5 21.3 75.6 43.3 16.5-9.4 35.3-14.5 54.6-14.5 44.6 0 84.3 26.6 102.1 65.9 20.5 3.6 39.1 12.3 55 24.4 29.8-11.7 50.9-40.5 50.9-74.3 0-44.1-35.8-79.9-80-79.9zM132.3 303.2c2.4-10.3 6.1-19.9 10.5-29.1-6.6-4-13-8.5-18.7-14.2-37.4-37.4-37.4-98.3 0-135.8 37.4-37.4 98.3-37.4 135.8 0 12.2 12.2 19.9 26.9 24.1 42.4 6.1-7 12.9-13.3 20.6-18.6l26.3-78.4c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1C59.3 49.7 49.7 59.4 53 69.6l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5L53 314.5c-3.4 10.2 6.3 19.8 16.5 16.5l42.7-14.2c6.3-5.1 12.9-9.8 20.1-13.6zM128 192c0 23.4 12.8 43.8 31.7 54.9 23.1-29.5 57.2-49.2 96.2-53.5 0-.5.1-.9.1-1.4 0-35.3-28.7-64-64-64s-64 28.7-64 64z\"]\n};\nvar faClub = {\n prefix: 'fas',\n iconName: 'club',\n icon: [512, 512, [], \"f327\", \"M371.5 169.1C403.1 88.4 343.7 0 256 0c-87.8 0-147 88.5-115.5 169.1C65.7 159.2 0 217.3 0 292c0 68.5 55.5 124 124 124 36.5 0 69.3-15.8 92-40.9-.1 36.7-.8 52.4-53 75.6-13.8 6.1-21.4 21.1-18.3 35.9 3.1 14.8 16.2 25.4 31.3 25.4h160c15.1 0 28.2-10.6 31.3-25.4 3.1-14.8-4.5-29.7-18.3-35.9-51.6-23-52.8-38.1-53-75.6 22.7 25.1 55.5 40.9 92 40.9 68.5 0 124-55.5 124-124 0-74.8-65.8-132.8-140.5-122.9z\"]\n};\nvar faCocktail = {\n prefix: 'fas',\n iconName: 'cocktail',\n icon: [576, 512, [], \"f561\", \"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faCodeCommit = {\n prefix: 'fas',\n iconName: 'code-commit',\n icon: [640, 512, [], \"f386\", \"M128 256c0 10.8.9 21.5 2.6 32H12c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h118.6c-1.7 10.5-2.6 21.2-2.6 32zm500-32H509.4c1.8 10.5 2.6 21.2 2.6 32s-.9 21.5-2.6 32H628c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12zm-308-10c-23.2 0-42 18.8-42 42s18.8 42 42 42 42-18.8 42-42-18.8-42-42-42m0-118c88.4 0 160 71.6 160 160s-71.6 160-160 160-160-71.6-160-160S231.6 96 320 96z\"]\n};\nvar faCodeMerge = {\n prefix: 'fas',\n iconName: 'code-merge',\n icon: [384, 512, [], \"f387\", \"M304 192c-38 0-69.8 26.5-77.9 62-23.9-3.5-58-12.9-83.9-37.6-16.6-15.9-27.9-36.5-33.7-61.6C138.6 143.3 160 114.1 160 80c0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-35.8-23.5-66.1-56-76.3V246.1c1.6 1.7 3.3 3.4 5 5 39.3 37.5 90.4 48.6 121.2 51.8 12.1 28.9 40.6 49.2 73.8 49.2 44.2 0 80-35.8 80-80S348.2 192 304 192zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-160c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faCoffee = {\n prefix: 'fas',\n iconName: 'coffee',\n icon: [640, 512, [], \"f0f4\", \"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\"]\n};\nvar faCoffeePot = {\n prefix: 'fas',\n iconName: 'coffee-pot',\n icon: [512, 512, [], \"e002\", \"M431.45,177.65,480,32H88A88,88,0,0,0,0,120v88a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V136a40,40,0,0,1,40-40h13.33l27.39,82.16C95.41,217.9,64,277.69,64,344.62c0,51.47,18.62,84.77,49.64,117.71A57.18,57.18,0,0,0,155.17,480H420.84a57.08,57.08,0,0,0,41.45-17.6c31-32.95,49.69-66.24,49.71-117.72C512,278.37,481.37,217.83,431.45,177.65ZM445.91,320H130.61c6.71-39.06,28.92-72.85,60.5-96h195.8C417.89,247.2,439.49,281.22,445.91,320Z\"]\n};\nvar faCoffeeTogo = {\n prefix: 'fas',\n iconName: 'coffee-togo',\n icon: [448, 512, [], \"f6c5\", \"M432 64h-16l-23.16-46.31A32 32 0 0 0 364.22 0H83.78a32 32 0 0 0-28.62 17.69L32 64H16C7.16 64 0 71.16 0 80v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16zM106.78 512h234.44c16.64 0 30.51-12.76 31.89-29.34L400 160H48l26.89 322.66C76.27 499.24 90.14 512 106.78 512zm221-256l-13.34 160H133.56l-13.34-160h207.56z\"]\n};\nvar faCoffin = {\n prefix: 'fas',\n iconName: 'coffin',\n icon: [384, 512, [], \"f6c6\", \"M374.44,115.19,266.7,9.37a32.89,32.89,0,0,0-23-9.37H140.32a32.89,32.89,0,0,0-23,9.37L9.54,115.19A31.61,31.61,0,0,0,1,145.58L88.08,487.76A32.47,32.47,0,0,0,119.69,512H264.31a32.48,32.48,0,0,0,31.61-24.24L383,145.58a31.65,31.65,0,0,0-8.59-30.39Z\"]\n};\nvar faCoffinCross = {\n prefix: 'fas',\n iconName: 'coffin-cross',\n icon: [384, 512, [], \"e051\", \"M374.45 115.19L266.71 9.37c-6.11-6-14.4-9.37-23.04-9.37H140.33c-8.64 0-16.93 3.37-23.04 9.37L9.55 115.19C1.46 123.14-1.8 134.67.98 145.58l87.11 342.18C91.71 502.01 104.75 512 119.7 512h144.62c14.95 0 27.98-9.99 31.61-24.24l87.11-342.18c2.76-10.91-.49-22.44-8.59-30.39zM288 192c0 8.84-7.16 16-16 16h-56v128c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16V208h-56c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h56v-48c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v48h56c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faCog = {\n prefix: 'fas',\n iconName: 'cog',\n icon: [512, 512, [], \"f013\", \"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faCogs = {\n prefix: 'fas',\n iconName: 'cogs',\n icon: [640, 512, [], \"f085\", \"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\"]\n};\nvar faCoin = {\n prefix: 'fas',\n iconName: 'coin',\n icon: [512, 512, [], \"f85c\", \"M0 320c0 27.77 18 53.37 48 74.33V330c-18.85-12-35.4-25.36-48-40.38zm256 32c141.33 0 256-64.44 256-144S397.33 64 256 64 0 128.44 0 208s114.67 144 256 144zM80 412.51c27.09 12.89 59.66 22.81 96 28.8V377c-35.39-6-67.81-15.88-96-29zm384-18.18c30.05-21 48-46.56 48-74.33v-30.37c-12.6 15-29.15 28.37-48 40.38zm-128 47c36.34-6 68.91-15.91 96-28.8V348c-28.19 13.12-60.61 23-96 29zM208 381.2v64.09c15.62 1.51 31.49 2.71 48 2.71s32.38-1.2 48-2.71V381.2a477.2 477.2 0 0 1-48 2.8 477.2 477.2 0 0 1-48-2.8z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\"]\n};\nvar faColumns = {\n prefix: 'fas',\n iconName: 'columns',\n icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\"]\n};\nvar faComet = {\n prefix: 'fas',\n iconName: 'comet',\n icon: [512, 512, [], \"e003\", \"M491.12794.70921c-38.6972,11.5936-111.77976,34.29644-187.67439,61.2961-2.09343-6.99991-3.99939-13.49983-5.5929-18.59351a16.058,16.058,0,0,0-22.90274-9.49988c-42.39976,22.09347-152.77349,82.59271-214.37343,142.4982-1.09359,1-2.49962,2-3.49947,3A194.83045,194.83045,0,1,0,332.6522,454.90662c.99985-1,1.9997-2.40622,2.99954-3.49995,59.78772-61.6086,120.3722-172.10721,142.47819-214.40356a16.06158,16.06158,0,0,0-9.49854-22.906c-5.20233-1.59373-11.6076-3.5-18.60653-5.59368,26.99587-75.999,49.69552-148.99813,61.30311-187.70077A16.18325,16.18325,0,0,0,491.12794.70921ZM315.33649,300.35583l-50.586,49.33337,11.92591,69.72764a15.30186,15.30186,0,0,1-22.19583,16.13651L191.9589,402.626l-62.52168,32.92732c-11.07253,5.93743-24.33026-3.5312-22.19582-16.13651l11.99816-69.72764L68.64379,300.35583a15.31471,15.31471,0,0,1,8.46745-26.13639l69.85454-10.19714,31.2667-63.46795a15.29265,15.29265,0,0,1,27.45283,0L236.952,264.0223l69.85454,10.19714A15.34746,15.34746,0,0,1,315.33649,300.35583Z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\"]\n};\nvar faCommentAlt = {\n prefix: 'fas',\n iconName: 'comment-alt',\n icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentAltCheck = {\n prefix: 'fas',\n iconName: 'comment-alt-check',\n icon: [512, 512, [], \"f4a2\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm-77.9 163.8l-131 130c-4.3 4.3-11.3 4.3-15.6-.1l-75.7-76.3c-4.3-4.3-4.2-11.3.1-15.6l26-25.8c4.3-4.3 11.3-4.2 15.6.1l42.1 42.5 97.2-96.4c4.3-4.3 11.3-4.2 15.6.1l25.8 26c4.2 4.3 4.2 11.3-.1 15.5z\"]\n};\nvar faCommentAltDollar = {\n prefix: 'fas',\n iconName: 'comment-alt-dollar',\n icon: [512, 512, [], \"f650\", \"M448 0H64C28.65 0 0 28.65 0 64v288c0 35.35 28.65 64 64 64h96v83.98c0 9.85 11.21 15.5 19.13 9.65L304 416h144c35.35 0 64-28.65 64-64V64c0-35.35-28.65-64-64-64zM280 302.44V320c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V96c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentAltDots = {\n prefix: 'fas',\n iconName: 'comment-alt-dots',\n icon: [512, 512, [], \"f4a3\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM128 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentAltEdit = {\n prefix: 'fas',\n iconName: 'comment-alt-edit',\n icon: [512, 512, [], \"f4a4\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM215.4 310.6l-48.2 5.4c-6.5.7-11.9-4.8-11.2-11.2l5.4-48.2 96.3-96.3 54 54-96.3 96.3zm150.7-150.7l-31.8 31.8-54-54 31.8-31.8c7.9-7.9 20.7-7.9 28.6 0l25.4 25.4c7.9 7.9 7.9 20.7 0 28.6z\"]\n};\nvar faCommentAltExclamation = {\n prefix: 'fas',\n iconName: 'comment-alt-exclamation',\n icon: [512, 512, [], \"f4a5\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM256 336c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm25.4-110.4c-.8 8.2-7.7 14.4-15.9 14.4h-19c-8.2 0-15.1-6.2-15.9-14.4l-12.8-128c-.9-9.4 6.5-17.6 15.9-17.6h44.6c9.5 0 16.9 8.2 15.9 17.6l-12.8 128z\"]\n};\nvar faCommentAltLines = {\n prefix: 'fas',\n iconName: 'comment-alt-lines',\n icon: [512, 512, [], \"f4a6\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM288 264c0 4.4-3.6 8-8 8H136c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm96-96c0 4.4-3.6 8-8 8H136c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faCommentAltMedical = {\n prefix: 'fas',\n iconName: 'comment-alt-medical',\n icon: [512, 512, [], \"f7f4\", \"M448 0H64A64 64 0 0 0 0 64v288a64 64 0 0 0 64 64h96v84a12 12 0 0 0 19.13 9.65L304 416h144a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64zm-96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentAltMinus = {\n prefix: 'fas',\n iconName: 'comment-alt-minus',\n icon: [512, 512, [], \"f4a7\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm-80 216c0 8.8-7.2 16-16 16H160c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h192c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCommentAltMusic = {\n prefix: 'fas',\n iconName: 'comment-alt-music',\n icon: [512, 512, [], \"f8af\", \"M448-1H64A64.05 64.05 0 0 0 0 63v288a64.05 64.05 0 0 0 64 64h96v84a12 12 0 0 0 19.09 9.7L304 415h144a64.05 64.05 0 0 0 64-64V63a64.05 64.05 0 0 0-64-64zm-96 256c0 17.67-21.5 32-48 32s-48-14.33-48-32 21.5-32 48-32a69.89 69.89 0 0 1 16 2v-76.36l-96 37.52V287c0 17.67-21.5 32-48 32s-48-14.33-48-32 21.5-32 48-32a69.89 69.89 0 0 1 16 2V142.25A16 16 0 0 1 203.19 127l128-47.25A16 16 0 0 1 352 95z\"]\n};\nvar faCommentAltPlus = {\n prefix: 'fas',\n iconName: 'comment-alt-plus',\n icon: [512, 512, [], \"f4a8\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zm-80 216c0 8.8-7.2 16-16 16h-72v72c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-72h-72c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h72v-72c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v72h72c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCommentAltSlash = {\n prefix: 'fas',\n iconName: 'comment-alt-slash',\n icon: [640, 512, [], \"f4a9\", \"M64 352c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L368 416h2L64 179.5V352zm569.8 106.1l-77.6-60c12.1-11.6 19.8-28 19.8-46.1V64c0-35.3-28.7-64-64-64H128c-21.5 0-40.4 10.7-52 27L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faCommentAltSmile = {\n prefix: 'fas',\n iconName: 'comment-alt-smile',\n icon: [512, 512, [], \"f4aa\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM320 133.2c14.8 0 26.8 12 26.8 26.8s-12 26.8-26.8 26.8-26.8-12-26.8-26.8 12-26.8 26.8-26.8zm-128 0c14.8 0 26.8 12 26.8 26.8s-12 26.8-26.8 26.8-26.8-12-26.8-26.8 12-26.8 26.8-26.8zm164.2 140.9C331.3 303.3 294.8 320 256 320c-38.8 0-75.3-16.7-100.2-45.9-5.8-6.7-5-16.8 1.8-22.5 6.7-5.7 16.8-5 22.5 1.8 18.8 22 46.5 34.6 75.8 34.6 29.4 0 57-12.6 75.8-34.7 5.8-6.7 15.9-7.5 22.6-1.8 6.8 5.8 7.6 15.9 1.9 22.6z\"]\n};\nvar faCommentAltTimes = {\n prefix: 'fas',\n iconName: 'comment-alt-times',\n icon: [512, 512, [], \"f4ab\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM340.9 258.9c6.2 6.2 6.2 16.4 0 22.6l-11.3 11.3c-6.2 6.2-16.4 6.2-22.6 0l-51-50.9-50.9 50.9c-6.2 6.2-16.4 6.2-22.6 0l-11.3-11.3c-6.2-6.2-6.2-16.4 0-22.6l50.9-50.9-50.9-50.9c-6.2-6.2-6.2-16.4 0-22.6l11.3-11.3c6.2-6.2 16.4-6.2 22.6 0l50.9 50.9 50.9-50.9c6.2-6.2 16.4-6.2 22.6 0l11.3 11.3c6.2 6.2 6.2 16.4 0 22.6L289.9 208l51 50.9z\"]\n};\nvar faCommentCheck = {\n prefix: 'fas',\n iconName: 'comment-check',\n icon: [512, 512, [], \"f4ac\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zm114.1 163.8l-131 130c-4.3 4.3-11.3 4.3-15.6-.1l-75.7-76.3c-4.3-4.3-4.2-11.3.1-15.6l26-25.8c4.3-4.3 11.3-4.2 15.6.1l42.1 42.5 97.2-96.4c4.3-4.3 11.3-4.2 15.6.1l25.8 26c4.2 4.3 4.2 11.3-.1 15.5z\"]\n};\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [], \"f4ad\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentEdit = {\n prefix: 'fas',\n iconName: 'comment-edit',\n icon: [512, 512, [], \"f4ae\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zm-40.6 310.6l-48.2 5.4c-6.5.7-11.9-4.8-11.2-11.2l5.4-48.2 96.3-96.3 54 54-96.3 96.3zm150.7-150.7l-31.8 31.8-54-54 31.8-31.8c7.9-7.9 20.7-7.9 28.6 0l25.4 25.4c7.9 7.9 7.9 20.7 0 28.6z\"]\n};\nvar faCommentExclamation = {\n prefix: 'fas',\n iconName: 'comment-exclamation',\n icon: [512, 512, [], \"f4af\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zm0 336c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm25.4-110.4c-.8 8.2-7.7 14.4-15.9 14.4h-19c-8.2 0-15.1-6.2-15.9-14.4l-12.8-128c-.9-9.4 6.5-17.6 15.9-17.6h44.6c9.5 0 16.9 8.2 15.9 17.6l-12.8 128z\"]\n};\nvar faCommentLines = {\n prefix: 'fas',\n iconName: 'comment-lines',\n icon: [512, 512, [], \"f4b0\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zm32 264c0 4.4-3.6 8-8 8H136c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm96-96c0 4.4-3.6 8-8 8H136c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentMinus = {\n prefix: 'fas',\n iconName: 'comment-minus',\n icon: [512, 512, [], \"f4b1\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zm112 216c0 8.8-7.2 16-16 16H160c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h192c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCommentMusic = {\n prefix: 'fas',\n iconName: 'comment-music',\n icon: [512, 512, [], \"f8b0\", \"M256 32C114.59 32 0 125.09 0 240c0 49.59 21.41 95 57 130.7C44.5 421.09 2.69 466 2.19 466.5a8 8 0 0 0-1.5 8.7A7.87 7.87 0 0 0 8 480c66.31 0 116-31.8 140.59-51.41A304.63 304.63 0 0 0 256 448c141.41 0 256-93.09 256-208S397.41 32 256 32zm96 256c0 17.67-21.5 32-48 32s-48-14.33-48-32 21.5-32 48-32a69.89 69.89 0 0 1 16 2v-76.36l-96 37.52V320c0 17.67-21.5 32-48 32s-48-14.33-48-32 21.5-32 48-32a69.89 69.89 0 0 1 16 2V175.25A16 16 0 0 1 203.19 160l128-47.25A16 16 0 0 1 352 128z\"]\n};\nvar faCommentPlus = {\n prefix: 'fas',\n iconName: 'comment-plus',\n icon: [512, 512, [], \"f4b2\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zm112 216c0 8.8-7.2 16-16 16h-72v72c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-72h-72c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h72v-72c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v72h72c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faCommentSmile = {\n prefix: 'fas',\n iconName: 'comment-smile',\n icon: [512, 512, [], \"f4b4\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zm64 133.2c14.8 0 26.8 12 26.8 26.8s-12 26.8-26.8 26.8-26.8-12-26.8-26.8 12-26.8 26.8-26.8zm-128 0c14.8 0 26.8 12 26.8 26.8s-12 26.8-26.8 26.8-26.8-12-26.8-26.8 12-26.8 26.8-26.8zm164.2 140.9C331.3 335.3 294.8 352 256 352c-38.8 0-75.3-16.7-100.2-45.9-5.8-6.7-5-16.8 1.8-22.5 6.7-5.7 16.8-5 22.5 1.8 18.8 22 46.5 34.6 75.8 34.6 29.4 0 57-12.6 75.8-34.7 5.8-6.7 15.9-7.5 22.6-1.8 6.8 5.8 7.6 15.9 1.9 22.6z\"]\n};\nvar faCommentTimes = {\n prefix: 'fas',\n iconName: 'comment-times',\n icon: [512, 512, [], \"f4b5\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zm84.9 258.9c6.2 6.2 6.2 16.4 0 22.6l-11.3 11.3c-6.2 6.2-16.4 6.2-22.6 0l-51-50.9-50.9 50.9c-6.2 6.2-16.4 6.2-22.6 0l-11.3-11.3c-6.2-6.2-6.2-16.4 0-22.6l50.9-50.9-50.9-50.9c-6.2-6.2-6.2-16.4 0-22.6l11.3-11.3c6.2-6.2 16.4-6.2 22.6 0l50.9 50.9 50.9-50.9c6.2-6.2 16.4-6.2 22.6 0l11.3 11.3c6.2 6.2 6.2 16.4 0 22.6L289.9 240l51 50.9z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [576, 512, [], \"f086\", \"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\"]\n};\nvar faCommentsAlt = {\n prefix: 'fas',\n iconName: 'comments-alt',\n icon: [576, 512, [], \"f4b6\", \"M416 224V64c0-35.3-28.7-64-64-64H64C28.7 0 0 28.7 0 64v160c0 35.3 28.7 64 64 64v54.2c0 8 9.1 12.6 15.5 7.8l82.8-62.1H352c35.3.1 64-28.6 64-63.9zm96-64h-64v64c0 52.9-43.1 96-96 96H192v64c0 35.3 28.7 64 64 64h125.7l82.8 62.1c6.4 4.8 15.5.2 15.5-7.8V448h32c35.3 0 64-28.7 64-64V224c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentsAltDollar = {\n prefix: 'fas',\n iconName: 'comments-alt-dollar',\n icon: [576, 512, [], \"f652\", \"M416 224V64c0-35.35-28.65-64-64-64H64C28.65 0 0 28.65 0 64v160c0 35.35 28.65 64 64 64v54.23c0 8 9.11 12.6 15.54 7.84L162.33 288H352c35.35 0 64-28.65 64-64zm-192-.12V240c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V48c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM512 160h-64v64c0 52.93-43.06 96-96 96H192v64c0 35.35 28.65 64 64 64h125.67l82.79 62.07c6.44 4.76 15.54.16 15.54-7.84V448h32c35.35 0 64-28.65 64-64V224c0-35.35-28.65-64-64-64z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [576, 512, [], \"f653\", \"M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [496, 512, [], \"f14e\", \"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\"]\n};\nvar faCompassSlash = {\n prefix: 'fas',\n iconName: 'compass-slash',\n icon: [640, 512, [], \"f5e9\", \"M633.82 458.1l-99.85-77.17C555.47 344.21 568 301.62 568 256 568 119.03 456.97 8 320 8c-68.31 0-130.03 27.72-174.82 72.44L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM446.14 156.05l-53.03 116.01-105.65-81.66 132.48-60.55c16.66-7.6 33.81 9.55 26.2 26.2zM220.05 382.14c-16.65 7.61-33.81-9.55-26.2-26.2l25.7-56.24L80.57 192.29C75.16 212.65 72 233.93 72 256c0 136.97 111.03 248 248 248 44.43 0 86.03-11.83 122.1-32.29L286.77 351.65l-66.72 30.49z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n prefix: 'fas',\n iconName: 'compress-alt',\n icon: [448, 512, [], \"f422\", \"M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z\"]\n};\nvar faCompressArrowsAlt = {\n prefix: 'fas',\n iconName: 'compress-arrows-alt',\n icon: [512, 512, [], \"f78c\", \"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\"]\n};\nvar faCompressWide = {\n prefix: 'fas',\n iconName: 'compress-wide',\n icon: [512, 512, [], \"f326\", \"M500 224H376c-13.3 0-24-10.7-24-24V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-340-24V76c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 236V312c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm256 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H376c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faComputerClassic = {\n prefix: 'fas',\n iconName: 'computer-classic',\n icon: [448, 512, [], \"f8b1\", \"M32 496a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-48H32zM416 0H32A32 32 0 0 0 0 32v368a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V32a32 32 0 0 0-32-32zM80 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm304-12a8 8 0 0 1-8 8H232a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h144a8 8 0 0 1 8 8zm0-120a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32z\"]\n};\nvar faComputerSpeaker = {\n prefix: 'fas',\n iconName: 'computer-speaker',\n icon: [640, 512, [], \"f8b2\", \"M288 416H128a32 32 0 0 0 0 64h176.41A79.24 79.24 0 0 1 288 432zM0 80v256a48 48 0 0 0 48 48h240v-64H64V96h224V80a79.24 79.24 0 0 1 16.41-48H48A48 48 0 0 0 0 80zm592-48H368a48 48 0 0 0-48 48v352a48 48 0 0 0 48 48h224a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zM480 96a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm0 320a96 96 0 1 1 96-96 96 96 0 0 1-96 96zm0-160a64 64 0 1 0 64 64 64 64 0 0 0-64-64z\"]\n};\nvar faConciergeBell = {\n prefix: 'fas',\n iconName: 'concierge-bell',\n icon: [512, 512, [], \"f562\", \"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faConstruction = {\n prefix: 'fas',\n iconName: 'construction',\n icon: [640, 512, [], \"f85d\", \"M634.66 460.17L349.5 15.92c-13.62-21.23-45.38-21.23-59 0L5.34 460.17C-9.14 482.73 7.52 512 34.85 512h570.3c27.33 0 43.99-29.27 29.51-51.83zM308 160a28 28 0 1 1-28 28 28 28 0 0 1 28-28zm-4 272a16 16 0 0 1-32 0v-32.77l-46.31-29.92-18.25 66.89A16 16 0 0 1 192 448a15.64 15.64 0 0 1-4.22-.56 16 16 0 0 1-11.24-19.64l29.75-109.11 83.06 53.67A31.91 31.91 0 0 1 304 399.23zm48 16l12-29.94A16 16 0 0 1 378.83 408h35.64l-94.8-58.34s-.08 0-.11-.07l-103.95-64a16 16 0 0 1-4.41-23.22l11.61-15.49a47.88 47.88 0 0 1 48.83-18l24.58 7.28c17.45 3.82 31.84 18.53 35.56 37.14l10.55 52.7L430 380l21.16-42.44a16 16 0 0 1 27.78-1.5L550.8 448z\"]\n};\nvar faContainerStorage = {\n prefix: 'fas',\n iconName: 'container-storage',\n icon: [640, 512, [], \"f4b7\", \"M640 80V48c0-8.8-7.2-16-16-16H16C7.2 32 0 39.2 0 48v32c0 8.8 7.2 16 16 16v320c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16V96c8.8 0 16-7.2 16-16zM448 416h-32V96h32v320zM192 96h32v320h-32V96zm144 320h-32V96h32v320zM80 96h32v320H80V96zm480 320h-32V96h32v320z\"]\n};\nvar faConveyorBelt = {\n prefix: 'fas',\n iconName: 'conveyor-belt',\n icon: [640, 512, [], \"f46e\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm400 64H96c-53 0-96 43-96 96s43 96 96 96h448c53 0 96-43 96-96s-43-96-96-96zM128 448c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faConveyorBeltAlt = {\n prefix: 'fas',\n iconName: 'conveyor-belt-alt',\n icon: [640, 512, [], \"f46f\", \"M80 256h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm320 0h160c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H400c-8.8 0-16 7.2-16 16v160c0 8.8 7.2 16 16 16zm144 64H96c-53 0-96 43-96 96s43 96 96 96h448c53 0 96-43 96-96s-43-96-96-96zM128 448c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm192 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [], \"f563\", \"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\"]\n};\nvar faCorn = {\n prefix: 'fas',\n iconName: 'corn',\n icon: [512, 512, [], \"f6c7\", \"M118.63 370.74l-67.88 67.88L96 483.88c37.49 37.49 98.27 37.49 135.76 0l90.51-90.51 97.66-19.53c6.43-1.29 8.85-9.59 3.91-13.89-88-76.52-221.49-72.92-305.21 10.79zm82.4-85.89c15.42-67.76-.79-141.26-49-196.71-4.29-4.94-12.58-2.51-13.87 3.91l-19.54 97.68-90.51 90.51c-37.49 37.49-37.49 98.28 0 135.77L96 348.12c30.38-30.38 66.59-51.38 105.03-63.27zM511.93 45.3v-3.2c1.28-21.44-14.72-40-36.48-41.91-16.63-1.61-31.67 7.03-39.03 21.11-9.92-9.59-24.33-13.75-38.41-9.6-13.44 3.85-23.67 14.08-27.51 26.88-10.88-7.03-24.96-8.64-37.77-3.2-12.79 5.77-21.11 17.28-23.36 29.77-11.52-5.44-25.59-5.44-37.44 1.59-11.85 6.72-18.88 18.89-19.84 31.36-11.83-4.47-25.91-3.19-37.11 4.81-3.26 2.3-5.94 5.13-8.31 8.17 28.33 51.23 37.75 110.06 28.31 166.44 56.39-9.36 115.25-.37 166.48 28.13 1.7-1.66 3.43-3.29 4.87-5.31 8-11.2 9.28-24.97 4.79-36.8 12.8-.97 24.96-8 31.69-19.85 7.03-11.84 7.36-25.92 1.59-37.44 12.8-2.25 24.31-10.25 30.08-23.05 5.76-12.8 4.15-26.87-2.88-37.77 12.47-3.83 23.03-13.75 27.2-27.19 4.16-14.08 0-28.48-8.97-38.41 12.51-6.37 21.46-19.17 22.1-34.53z\"]\n};\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faCow = {\n prefix: 'fas',\n iconName: 'cow',\n icon: [640, 512, [], \"f6c8\", \"M634.01 276.72l-10-13.81v-77.02c0-11.89-12.52-19.63-23.16-14.31-10.82 5.41-19.47 13.59-26.31 23.01l-65.82-90.9A96.025 96.025 0 0 0 430.96 64H112c-48.6 0-88 39.4-88 88v86.41C9.48 250.14 0 267.88 0 288v32h8c35.35 0 64-28.65 64-64V152c0-16.87 10.55-31.16 25.34-37.04-.87 4.22-1.34 8.57-1.34 13.04v304c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V320c9.32 9.32 20.28 16.5 32.04 21.87V368c0 8.84 7.16 16 16 16s16-7.16 16-16v-17.31c9.1 1.12 12.81 2.36 32-.01V368c0 8.84 7.16 16 16 16s16-7.16 16-16v-26.18c11.71-5.36 22.64-12.51 31.92-21.79V432c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V256l32 32v41.48a63.97 63.97 0 0 0 10.75 35.5l41.33 61.99a47.233 47.233 0 0 0 39.3 21.03c22.52 0 41.9-15.89 46.32-37.97l21.73-108.63c1.72-8.62-.23-17.57-5.38-24.68zM377.24 167.36l-22.89 22.75c-21.82 21.7-51.41 33.88-82.26 33.88h-.17c-30.86 0-60.45-12.19-82.26-33.88l-22.89-22.75c-15.72-15.63-2.3-39.36 22.25-39.36h165.96c24.56 0 37.98 23.73 22.26 39.36zM576.01 352c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.17 16-16 16z\"]\n};\nvar faCowbell = {\n prefix: 'fas',\n iconName: 'cowbell',\n icon: [448, 512, [], \"f8b3\", \"M384.19 122.35A32 32 0 0 0 352.64 96h-16V48a48.1 48.1 0 0 0-48.12-48H160.29a48.1 48.1 0 0 0-48.09 48v48H95.36a32 32 0 0 0-31.55 26.35l-63.3 352A32 32 0 0 0 32.07 512h383.86a32 32 0 0 0 31.56-37.65zM176.32 64h96.17v32h-96.17z\"]\n};\nvar faCowbellMore = {\n prefix: 'fas',\n iconName: 'cowbell-more',\n icon: [640, 512, [], \"f8b4\", \"M287.78 352c0-75.21 43.66-140.27 106.92-171.76l-10.41-57.89A32.06 32.06 0 0 0 352.72 96h-15.91V48a48.05 48.05 0 0 0-48-48h-128a48.05 48.05 0 0 0-48 48v48H95.38a32 32 0 0 0-31.56 26.35l-63.31 352A32 32 0 0 0 32.07 512h342c-51.95-34.42-86.29-93.26-86.29-160zm-15-256h-96V64h96zM480 192a160 160 0 1 0 160 160 160 160 0 0 0-160-160zm80 168a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-16a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [], \"f09d\", \"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\"]\n};\nvar faCreditCardBlank = {\n prefix: 'fas',\n iconName: 'credit-card-blank',\n icon: [576, 512, [], \"f389\", \"M528 40H48C21.5 40 0 61.5 0 88v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V88c0-26.5-21.5-48-48-48zM160 404c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40zm192 0c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faCreditCardFront = {\n prefix: 'fas',\n iconName: 'credit-card-front',\n icon: [576, 512, [], \"f38a\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM192 268c0-6.6 5.4-12 12-12h64c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-64c-6.6 0-12-5.4-12-12v-40zm-32 136c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v8zm16-96c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h88c6.6 0 12 5.4 12 12v40zm176 96c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v8zm32-96c0 6.6-5.4 12-12 12h-64c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h64c6.6 0 12 5.4 12 12v40zm128 0c0 6.6-5.4 12-12 12h-88c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h88c6.6 0 12 5.4 12 12v40zm0-140c0 13.3-10.7 24-24 24h-80c-13.3 0-24-10.7-24-24v-48c0-13.3 10.7-24 24-24h80c13.3 0 24 10.7 24 24v48z\"]\n};\nvar faCricket = {\n prefix: 'fas',\n iconName: 'cricket',\n icon: [640, 512, [], \"f449\", \"M421.5 321.5L158 506c-8.9 6.2-20.5 7.9-30.4 3.5C54.8 477 5.7 406.9.1 327.4c-.8-10.8 4.8-21.2 13.7-27.4l263.5-184.5-30.9 175.1 175.1 30.9zM635.7 30.4l-15.2-20.2C612.9-.6 597.9-3.3 587 4.3L443 104.8c-14.5 10.1-34.4 6.6-44.6-7.9l-21.9-31.3c-5.1-7.2-15-9-22.3-3.9l-21.3 14.9L302 251.7l175.1 30.9 21.3-14.9c7.2-5.1 9-15 3.9-22.3l-24.5-35c-10.1-14.5-6.6-34.4 7.9-44.6L629.8 63.9c10.8-7.6 13.5-22.6 5.9-33.5zM496 352c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80z\"]\n};\nvar faCroissant = {\n prefix: 'fas',\n iconName: 'croissant',\n icon: [512, 512, [], \"f7f6\", \"M209.1 387.94L110 465.73a215.54 215.54 0 0 0 70.67 44.19 32 32 0 0 0 42.91-35.18zm300.82-207.28A215.54 215.54 0 0 0 465.73 110l-77.79 99.1 86.8 14.47a32.36 32.36 0 0 0 5.26.43 32 32 0 0 0 29.92-43.34zM234.9 22.59A32 32 0 0 0 196.55 1 268.35 268.35 0 0 0 1 196.55a32 32 0 0 0 21.6 38.35l208 64a32 32 0 0 0 32-8l28.31-28.31a32 32 0 0 0 8-32zm212.84 43a32 32 0 0 0-12.33-21.39A217.11 217.11 0 0 0 304.46 0a215.78 215.78 0 0 0-43.26 4.48c1.41 2.93 3.3 5.52 4.28 8.7l64 208c.06.2 0 .41.1.62 6-1.93 11.61-5 15.6-10l96-122.32a32 32 0 0 0 6.56-23.85zM221.8 329.57c-.2-.06-.42 0-.62-.09l-208-64a62.68 62.68 0 0 1-8.54-3.57 215.1 215.1 0 0 0 39.59 173.5 32 32 0 0 0 21.39 12.33 32.51 32.51 0 0 0 4.05.26 32 32 0 0 0 19.76-6.83l122.32-96c5.1-3.99 8.12-9.58 10.05-15.6z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faCropAlt = {\n prefix: 'fas',\n iconName: 'crop-alt',\n icon: [512, 512, [], \"f565\", \"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [], \"f654\", \"M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [640, 512, [], \"f521\", \"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCrutches = {\n prefix: 'fas',\n iconName: 'crutches',\n icon: [640, 512, [], \"f7f8\", \"M635.31 185.71l-181-181a16 16 0 0 0-22.62 0L409 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zM441 395.76a128.09 128.09 0 0 1-33.67 13L371.74 417l90.32 90.32a16 16 0 0 0 22.63 0l22.62-22.62a16 16 0 0 0 0-22.63zm-245.19-42.1l9.7-9.7 13.22-57.32L106.51 174.4l67.89-67.89 78.75 78.75a126.75 126.75 0 0 1 12.29-14.34L297.37 139l-77.72-77.74L231 49.94a16 16 0 0 0 0-22.63L208.33 4.69a16 16 0 0 0-22.62 0l-181 181a16 16 0 0 0 0 22.62L27.31 231a16 16 0 0 0 22.63 0l11.32-11.31 132.29 132.25c.68.68 1.58 1.06 2.28 1.72zm259.96-101.54l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L234.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L510.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\"]\n};\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [512, 512, [], \"f1b3\", \"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\"]\n};\nvar faCurling = {\n prefix: 'fas',\n iconName: 'curling',\n icon: [640, 512, [], \"f44a\", \"M554.1 192H85.9c13.2-37.2 48.4-64 90.1-64h48v-16C224 50.1 274.1 0 336 0h128c8.8 0 16 7.2 16 16v32c0 8.8-7.2 16-16 16-117.7 0-176-11.4-176 48v16h176c41.7 0 76.9 26.8 90.1 64zM0 416c0 53 43 96 96 96h448c53 0 96-43 96-96v-32H0v32zm544-176H96c-53 0-96 43-96 96v16h640v-16c0-53-43-96-96-96z\"]\n};\nvar faCut = {\n prefix: 'fas',\n iconName: 'cut',\n icon: [448, 512, [], \"f0c4\", \"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faDagger = {\n prefix: 'fas',\n iconName: 'dagger',\n icon: [384, 512, [], \"f6cb\", \"M336 128H224V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112H48c-26.51 0-48 21.49-48 48s21.49 48 48 48c20.87 0 38.45-13.4 45.06-32h197.88c6.61 18.6 24.19 32 45.06 32 26.51 0 48-21.49 48-48s-21.49-48-48-48zM128 428.84l50.69 76.03c6.33 9.5 20.29 9.5 26.63 0L256 428.84V224H128v204.84z\"]\n};\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\"]\n};\nvar faDeaf = {\n prefix: 'fas',\n iconName: 'deaf',\n icon: [512, 512, [], \"f2a4\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\"]\n};\nvar faDebug = {\n prefix: 'fas',\n iconName: 'debug',\n icon: [512, 512, [], \"f7f9\", \"M146.27 303.84l30.88-4.41a79.07 79.07 0 0 0 6.77 22.72l-24.8 16.54a16 16 0 1 0 17.75 26.62l26.39-17.59a76.88 76.88 0 0 0 71.68 17.73L176 266.5v.76l-34.27 4.9a16 16 0 0 0 4.54 31.68zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 432c-101.46 0-184-82.54-184-184a182.89 182.89 0 0 1 33.38-105.37l256 256A182.89 182.89 0 0 1 256 440zm150.62-78.63l-60.3-60.3 19.41 2.77a16.23 16.23 0 0 0 2.27.16 16 16 0 0 0 2.25-31.84l-34.25-4.9v-22.52l34.27-4.9a16 16 0 1 0-4.54-31.68l-30.88 4.41a79.07 79.07 0 0 0-6.77-22.72l24.79-16.54a16 16 0 1 0-17.75-26.62l-26.38 17.59a78.43 78.43 0 0 0-102-2.79l-56.11-56.11A182.89 182.89 0 0 1 256 72c101.46 0 184 82.54 184 184a182.89 182.89 0 0 1-33.38 105.37z\"]\n};\nvar faDeer = {\n prefix: 'fas',\n iconName: 'deer',\n icon: [512, 512, [], \"f78e\", \"M488.7 133.3l-91.9-25.8 11.1-5.6c12.4-6.2 23-15.6 30.7-27.1l18.1-27.2c2.5-3.7 1.5-8.6-2.2-11.1l-13.3-8.9c-3.7-2.5-8.6-1.5-11.1 2.2l-18 27.2c-4.6 7-11 12.6-18.5 16.3L351 94.6l-33.8-9.5 8.3-10.3c6.8-8.5 10.5-19.1 10.5-30V8c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v36.8c0 3.6-1.2 7.1-3.5 10l-16.8 20.9-16.1-4.5c-6.9-1.9-11.7-8.2-11.7-15.4V8c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v47.8c0 21.5 14.3 40.4 35 46.2l78.9 22.2L304 192H64c-35.3 0-64 28.7-64 64v64l32-21.3v48.9l-11.9 31.8c-4.6 12.2-5.3 25.4-2.2 38l24.9 82.5C44.6 507 51 512 58.3 512h63.8c10.4 0 18-9.8 15.5-19.9l-26.3-88.4 19.4-51.7H288v144c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V288l32-64h64c17.7 0 32-14.3 32-32v-27.9c0-14.3-9.6-26.9-23.3-30.8zM416 176c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDeerRudolph = {\n prefix: 'fas',\n iconName: 'deer-rudolph',\n icon: [512, 512, [], \"f78f\", \"M480 96c-17.7 0-32 14.3-32 32 0 1.1.5 2 .6 3l-83.8-23.5 11.1-5.6c12.4-6.2 23-15.6 30.7-27.1l18.1-27.2c2.5-3.7 1.5-8.6-2.2-11.1l-13.3-8.9c-3.7-2.5-8.6-1.5-11.1 2.2l-18 27.2c-4.6 7-11 12.6-18.5 16.3L319 94.6l-33.8-9.5 8.3-10.3c6.8-8.5 10.5-19.1 10.5-30V8c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v36.8c0 3.6-1.2 7.1-3.5 10l-16.8 20.9-16.1-4.5c-6.9-1.9-11.7-8.2-11.7-15.4V8c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v47.8c0 21.5 14.3 40.4 35 46.2l78.9 22.2L272 192H64c-35.3 0-64 28.7-64 64v64l32-21.3v48.9l-11.9 31.8c-4.6 12.2-5.3 25.4-2.2 38l24.9 82.5C44.6 507 51 512 58.3 512h63.8c10.4 0 18-9.8 15.5-19.9l-26.3-88.4 19.4-51.7H256v144c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V288l32-64h64c17.7 0 32-14.3 32-32v-27.9c0-1.5-.5-2.8-.7-4.2.2 0 .5.1.7.1 17.7 0 32-14.3 32-32s-14.3-32-32-32zm-96 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\"]\n};\nvar faDesktopAlt = {\n prefix: 'fas',\n iconName: 'desktop-alt',\n icon: [576, 512, [], \"f390\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 288H64V64h448v224z\"]\n};\nvar faDewpoint = {\n prefix: 'fas',\n iconName: 'dewpoint',\n icon: [512, 512, [], \"f748\", \"M160.1 22.1C109.1 179.8 0 222.7 0 333.9 0 432.3 85.9 512 192 512s192-79.7 192-178.1c0-111.8-108.9-153.3-160.1-311.8-8.7-28.8-54-30.1-63.8 0zM416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [], \"f655\", \"M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z\"]\n};\nvar faDiagnoses = {\n prefix: 'fas',\n iconName: 'diagnoses',\n icon: [640, 512, [], \"f470\", \"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDiamond = {\n prefix: 'fas',\n iconName: 'diamond',\n icon: [448, 512, [], \"f219\", \"M242.2 8.3c-9.6-11.1-26.8-11.1-36.4 0l-200 232c-7.8 9-7.8 22.3 0 31.3l200 232c9.6 11.1 26.8 11.1 36.4 0l200-232c7.8-9 7.8-22.3 0-31.3l-200-232z\"]\n};\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [], \"f522\", \"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faDiceD10 = {\n prefix: 'fas',\n iconName: 'dice-d10',\n icon: [512, 512, [], \"f6cd\", \"M11.09 255.29l130.38-27.25 67.78-212.5c2.95-9.2-8.4-15.92-14.45-8.54L3.01 240.87c-5.24 6.38.2 16.07 8.08 14.42zm359.43-27.24L500.9 255.3c7.89 1.65 13.32-8.05 8.09-14.43L317.19 6.99c-6.04-7.37-17.39-.66-14.46 8.55l67.79 212.51zm-106.49-222c-2.57-8.06-13.49-8.06-16.06 0l-73.4 230.11L256 292.87l81.43-56.72-73.4-230.1zm241.16 286.22l-144.06-30.11-88.2 61.45v179.53c0 7.59 8.55 11.66 14.02 6.67l222.13-202.2c5.31-4.82 3-13.9-3.89-15.34zm-498.38 0c-6.89 1.44-9.2 10.52-3.9 15.34L225.05 509.8c5.48 4.98 14.02.92 14.02-6.67V323.61l-88.2-61.45L6.81 292.27z\"]\n};\nvar faDiceD12 = {\n prefix: 'fas',\n iconName: 'dice-d12',\n icon: [512, 512, [], \"f6ce\", \"M256 273.89l-108.59 54.29L206.23 512h99.53l58.82-183.82L256 273.89zm16-27.78l108.84 54.42 123.62-123.62-51.43-102.84L272 139.24v106.87zm-32 0V139.24L58.97 74.07 7.54 176.92l123.62 123.62L240 246.11zM422.28 51.14L333.51 6.76A63.874 63.874 0 0 0 304.89 0H207.1c-9.94 0-19.73 2.31-28.62 6.76L89.72 51.14 256 111l166.28-59.86zm-24.23 277.43l-55.01 171.91 85.88-42.94a64.02 64.02 0 0 0 28.62-28.62l47.7-95.4A64.07 64.07 0 0 0 512 304.9v-90.27L398.05 328.57zM0 214.62v90.27c0 9.94 2.31 19.74 6.76 28.62l47.7 95.4a63.972 63.972 0 0 0 28.62 28.62l85.88 42.94-55.01-171.91L0 214.62z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [480, 512, [], \"f6cf\", \"M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z\"]\n};\nvar faDiceD4 = {\n prefix: 'fas',\n iconName: 'dice-d4',\n icon: [512, 512, [], \"f6d0\", \"M225.28 3.34L1.68 309.48C-1 313.15-.4 318.4 3.03 321.3l223.61 188.81c5.3 4.47 13.17.51 13.17-6.64V8.53C239.8.4 229.99-3.1 225.28 3.34zm285.04 306.14L286.72 3.34C282.01-3.1 272.2.4 272.2 8.53v494.94c0 7.15 7.87 11.11 13.17 6.64l223.6-188.81c3.44-2.9 4.04-8.15 1.35-11.82z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z\"]\n};\nvar faDiceD8 = {\n prefix: 'fas',\n iconName: 'dice-d8',\n icon: [512, 512, [], \"f6d2\", \"M225.53 2.52L2.36 233.83c-4.21 4.37-2.56 11.71 3.1 13.77l234.13 85.06V8.39c-.01-7.49-8.91-11.21-14.06-5.87zm284.11 231.31L286.47 2.52C281.32-2.82 272.41.9 272.41 8.4v324.27l234.13-85.06c5.66-2.07 7.31-9.42 3.1-13.78zM33.53 310.38l192 199.1c5.15 5.34 14.06 1.62 14.06-5.88V368.29L42.13 296.61c-8.21-2.98-14.72 7.43-8.6 13.77zm436.34-13.77l-197.46 71.68V503.6c0 7.5 8.91 11.22 14.06 5.88l192-199.1c6.12-6.34-.39-16.75-8.6-13.77z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDigging = {\n prefix: 'fas',\n iconName: 'digging',\n icon: [576, 512, [], \"f85e\", \"M272 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-62.24 261.36q-38.7-25.78-79.55-48.09l-71.56-39-57.42 201a32 32 0 1 0 61.56 17.59l36.6-128.16L160 401.11V480a32 32 0 0 0 64 0v-96a32 32 0 0 0-14.24-26.64zM311.07 416a32 32 0 0 0-30.36 21.88L256 512h320L474.07 305.68c-11.29-22.59-43.07-23.81-56.07-2.15l-31.86 54.29-65.3-35.62L296.85 201a129.78 129.78 0 0 0-69.72-91.2c-1-.5-2.11-.66-3.11-1.13a31 31 0 0 0-7.22-2.67c-15.34-6.1-31.56-10-48.07-10H96a32 32 0 0 0-24.07 10.92l-56 64a25.89 25.89 0 0 0-2.3 3.16c-8.83 14.1-3 32.86 11.62 40.85l336.6 184.3L352 416zM105.9 205l-23.49-12.85L110.54 160h34.33zm93.74 51.13l34.73-41.23 13.5 67.54z\"]\n};\nvar faDigitalTachograph = {\n prefix: 'fas',\n iconName: 'digital-tachograph',\n icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\"]\n};\nvar faDiploma = {\n prefix: 'fas',\n iconName: 'diploma',\n icon: [640, 512, [], \"f5ea\", \"M384 268.67V128H256v140.67l-95.16 164c-3.05 7.49 2.65 15.63 10.73 15.32l36.64.01 25.21 28.52c5.56 5.87 15.33 4.04 18.39-3.45L320 352l68.2 121.07c3.05 7.49 12.83 9.32 18.39 3.45l25.2-28.52 36.64-.01c8.08.31 13.78-7.83 10.73-15.32l-95.16-164zm-160-8.61V115.94c-9.64-2.45-19.21-5.19-28.65-8.37L68.39 64.78c-15.03-3.1-30.25 3.27-37.03 14.77-41.81 70.94-41.81 217.95 0 288.89 6.78 11.5 22.01 17.88 37.03 14.77l104.6-35.24L224 260.06zm384.64-180.5c-6.78-11.5-22.01-17.88-37.03-14.77l-126.96 42.78c-9.44 3.18-19.01 5.93-28.65 8.37v144.12l51.01 87.92 104.6 35.24c15.03 3.1 30.25-3.27 37.03-14.77 41.81-70.94 41.81-217.95 0-288.89z\"]\n};\nvar faDirections = {\n prefix: 'fas',\n iconName: 'directions',\n icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\"]\n};\nvar faDiscDrive = {\n prefix: 'fas',\n iconName: 'disc-drive',\n icon: [512, 512, [], \"f8b5\", \"M496 416h-16V96a64 64 0 0 0-64-64H96a64 64 0 0 0-64 64v320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-240 0a160 160 0 1 1 160-160 160 160 0 0 1-160 160zm0-192a32 32 0 1 0 32 32 32 32 0 0 0-32-32z\"]\n};\nvar faDisease = {\n prefix: 'fas',\n iconName: 'disease',\n icon: [512, 512, [], \"f7fa\", \"M472.29 195.9l-67.06-23c-19.28-6.6-33.54-20.92-38.14-38.31l-16-60.45c-11.58-43.77-76.57-57.13-110-22.62L195 99.24c-13.26 13.71-33.54 20.93-54.2 19.31l-71.9-5.62c-52-4.07-86.93 44.89-59 82.84l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24l-28.43 57C4 396.67 47.46 440.29 98.11 429.23l70-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101 7.57 104.45-37.22l4.7-61.86c1.35-17.8 12.8-33.87 30.63-43l62-31.74c44.84-22.96 39.55-80.17-8.99-96.79zM160 256a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm128 96a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm16-128a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [], \"f529\", \"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faDizzy = {\n prefix: 'fas',\n iconName: 'dizzy',\n icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\"]\n};\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [], \"f471\", \"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\"]\n};\nvar faDoNotEnter = {\n prefix: 'fas',\n iconName: 'do-not-enter',\n icon: [496, 512, [], \"f5ec\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm176 296H72c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h352c8.84 0 16 7.16 16 16v64c0 8.84-7.16 16-16 16z\"]\n};\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [], \"f6d3\", \"M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDogLeashed = {\n prefix: 'fas',\n iconName: 'dog-leashed',\n icon: [576, 512, [], \"f6d4\", \"M67.64,3.37,288,168.08V192H239.54L38.17,41.25a16,16,0,0,1-2.8-22.45L45.19,6.18A16,16,0,0,1,67.64,3.37ZM128,224H288V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.1C58.83,268.85,32,233.66,32,192a32,32,0,0,1,64,0A32,32,0,0,0,128,224ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.23-21.39,27.32-11.31L374.6,64h53.62c10.92,0,23.74,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112ZM320,231.84l128,45.71V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H320ZM432,112a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [288, 512, [], \"f155\", \"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [], \"f472\", \"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyEmpty = {\n prefix: 'fas',\n iconName: 'dolly-empty',\n icon: [576, 512, [], \"f473\", \"M575.2 326.4L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6L565 346.6c8.4-2.8 13-11.8 10.2-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n prefix: 'fas',\n iconName: 'dolly-flatbed',\n icon: [640, 512, [], \"f474\", \"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDollyFlatbedAlt = {\n prefix: 'fas',\n iconName: 'dolly-flatbed-alt',\n icon: [640, 512, [], \"f475\", \"M624 384H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-416-64h160c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm224-160h96c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm0 160h160c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16H432c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16z\"]\n};\nvar faDollyFlatbedEmpty = {\n prefix: 'fas',\n iconName: 'dolly-flatbed-empty',\n icon: [640, 512, [], \"f476\", \"M624 384H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n prefix: 'fas',\n iconName: 'donate',\n icon: [512, 512, [], \"f4b9\", \"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [640, 512, [], \"f52a\", \"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\"]\n};\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [640, 512, [], \"f52b\", \"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\"]\n};\nvar faDotCircle = {\n prefix: 'fas',\n iconName: 'dot-circle',\n icon: [512, 512, [], \"f192\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [], \"f4ba\", \"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faDraftingCompass = {\n prefix: 'fas',\n iconName: 'drafting-compass',\n icon: [512, 512, [], \"f568\", \"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [], \"f6d5\", \"M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z\"]\n};\nvar faDrawCircle = {\n prefix: 'fas',\n iconName: 'draw-circle',\n icon: [512, 512, [], \"f5ed\", \"M512 256c0-26.93-16.67-49.88-40.23-59.32-20.88-75.84-80.61-135.56-156.45-156.45C305.88 16.68 282.93 0 256 0s-49.88 16.68-59.32 40.23C120.84 61.11 61.11 120.84 40.23 196.68 16.67 206.12 0 229.07 0 256s16.67 49.88 40.23 59.32c20.88 75.84 80.61 135.56 156.45 156.45C206.12 495.33 229.07 512 256 512s49.88-16.67 59.32-40.23c75.84-20.88 135.56-80.61 156.45-156.45C495.33 305.88 512 282.93 512 256zm-64-16c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM272 64c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 272c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16zm176 176c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm65.15-40.53C293.41 393.25 275.88 384 256 384s-37.41 9.25-49.15 23.47a159.62 159.62 0 0 1-102.32-102.32C118.75 293.41 128 275.88 128 256s-9.25-37.42-23.47-49.15a159.62 159.62 0 0 1 102.32-102.32C218.59 118.75 236.12 128 256 128s37.41-9.25 49.15-23.47a159.62 159.62 0 0 1 102.32 102.32C393.25 218.58 384 236.12 384 256s9.25 37.41 23.47 49.15a159.598 159.598 0 0 1-102.32 102.32z\"]\n};\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrawSquare = {\n prefix: 'fas',\n iconName: 'draw-square',\n icon: [448, 512, [], \"f5ef\", \"M416 360.88V151.12c19.05-11.09 32-31.49 32-55.12 0-35.35-28.65-64-64-64-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-23.63-12.94-44.04-31.99-55.12zm-320 0V151.12A63.825 63.825 0 0 0 119.12 128h209.75a63.825 63.825 0 0 0 23.12 23.12v209.75a63.825 63.825 0 0 0-23.12 23.12H119.12A63.798 63.798 0 0 0 96 360.88zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDreidel = {\n prefix: 'fas',\n iconName: 'dreidel',\n icon: [448, 512, [], \"f792\", \"M19.6 224C7 236.5 0 253.5 0 271.3v141.8c0 37 29.9 66.9 66.9 66.9h141.8c17.7 0 34.7-7 47.3-19.6l58.9-58.9L78.5 165.1 19.6 224zM443.3 59.3l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-109 109-71.9-71.9c-13.1-13.1-34.2-13.1-47.3 0l-68.7 68.7 236.4 236.4 68.7-68.7c13.1-13.1 13.1-34.2 0-47.3l-72-71.9 109-109c6.3-6.3 6.3-16.4 0-22.7z\"]\n};\nvar faDrone = {\n prefix: 'fas',\n iconName: 'drone',\n icon: [512, 512, [], \"f85f\", \"M112 224a110.32 110.32 0 0 0 16.26-1.64l-35.93-49.77a63.82 63.82 0 1 1 80.26-80.26l49.77 35.93A110.45 110.45 0 0 0 224 112a112 112 0 1 0-112 112zM339.41 92.33a63.82 63.82 0 1 1 80.26 80.26l-35.93 49.77A110.32 110.32 0 0 0 400 224a112 112 0 1 0-112-112 110.32 110.32 0 0 0 1.64 16.26zM172.59 419.67a63.82 63.82 0 1 1-80.26-80.26l35.93-49.77A110.32 110.32 0 0 0 112 288a112 112 0 1 0 112 112 110.32 110.32 0 0 0-1.64-16.26zM400 288a110.32 110.32 0 0 0-16.26 1.64l35.93 49.77a63.82 63.82 0 1 1-80.26 80.25l-49.77-35.92A110.32 110.32 0 0 0 288 400a112 112 0 1 0 112-112zm1-144.2a31.91 31.91 0 1 0-32.8-32.8l-67.86 49h-88.68l-67.86-49a31.91 31.91 0 1 0-32.8 32.8l49 67.86v88.68l-49 67.86a31.91 31.91 0 1 0 32.8 32.8l67.86-49h88.68l67.86 49a31.91 31.91 0 1 0 32.8-32.8l-49-67.86v-88.68z\"]\n};\nvar faDroneAlt = {\n prefix: 'fas',\n iconName: 'drone-alt',\n icon: [640, 512, [], \"f860\", \"M288 136a24 24 0 0 0-24-24h-97.62a23.66 23.66 0 0 0-44.77 0H24a24 24 0 0 0 0 48h240a24 24 0 0 0 24-24zm328.4-23.93l-97.82.31a23.58 23.58 0 0 0-45 .14l-98 .31a23.55 23.55 0 0 0 .15 47.09l240.81-.77a23.54 23.54 0 0 0-.15-47.08zM472 237.65l-96.85-29.05a191.9 191.9 0 0 0-110.33 0L168 237.65V192h-48v64.05a32 32 0 0 0 32 32h45.4a179 179 0 0 0-53.33 110.24 16.14 16.14 0 0 0 16 17.71h16.25c8.34 0 14.76-6.58 15.68-14.87a130 130 0 0 1 53.67-91.38l32.92 32.93a32 32 0 0 0 22.63 9.37h37.49a32 32 0 0 0 22.63-9.37l32.92-32.93A130.06 130.06 0 0 1 448 401.13c.92 8.29 7.34 14.85 15.68 14.87h16.25a16.14 16.14 0 0 0 16-17.71 179 179 0 0 0-53.33-110.24H488a32 32 0 0 0 32-32V192h-48z\"]\n};\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [], \"f569\", \"M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\"]\n};\nvar faDrumstick = {\n prefix: 'fas',\n iconName: 'drumstick',\n icon: [512, 512, [], \"f6d6\", \"M462.43 49.57a169.21 169.21 0 0 0-239.31 0C187.66 85 160 128 160 192v85.83l-40.59 40.59c-9.71 9.69-24 11.07-36.76 6a60.31 60.31 0 0 0-65 98.72c15.27 15.27 36.5 19.58 56.1 15.09-4.49 19.6-.18 40.83 15.09 56.1a60.32 60.32 0 0 0 98.73-65c-5.09-12.73-3.72-27 6-36.75l40.6-40.58H320c64 0 107-27.66 142.44-63.12a169.22 169.22 0 0 0-.01-239.31z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z\"]\n};\nvar faDryer = {\n prefix: 'fas',\n iconName: 'dryer',\n icon: [448, 512, [], \"f861\", \"M384 0H64A64 64 0 0 0 0 64v416a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a64 64 0 0 0-64-64zM184 64a24 24 0 1 1-24 24 24 24 0 0 1 24-24zM64 88a24 24 0 1 1 24 24 24 24 0 0 1-24-24zm160 360a144 144 0 1 1 144-144 144 144 0 0 1-144 144zm-8-176c0-22.64-11.95-34.59-20.69-43.33-5.82-5.82-9.24-9.45-10.6-14.62A8 8 0 0 0 177 208h-16.29a8.16 8.16 0 0 0-8 9.53c2.77 16.64 12.51 26.38 19.93 33.8C180.53 259.17 184 263 184 272s-3.47 12.86-11.31 20.7C164 301.47 152 313.42 152 336.06s11.95 34.56 20.69 43.28c5.82 5.82 9.23 9.44 10.6 14.59A8 8 0 0 0 191 400h16.32a8.16 8.16 0 0 0 8-9.53c-2.77-16.61-12.51-26.35-19.93-33.75C187.47 348.88 184 345 184 336.06s3.47-12.86 11.31-20.7C204.05 306.62 216 294.67 216 272zm80 0c0-22.64-11.95-34.59-20.69-43.33-5.82-5.82-9.24-9.45-10.6-14.62A8 8 0 0 0 257 208h-16.29a8.16 8.16 0 0 0-8 9.53c2.77 16.64 12.51 26.38 19.93 33.8C260.53 259.17 264 263 264 272s-3.47 12.86-11.31 20.7C244 301.47 232 313.42 232 336.06s11.95 34.56 20.69 43.28c5.82 5.82 9.23 9.44 10.6 14.59A8 8 0 0 0 271 400h16.32a8.16 8.16 0 0 0 7.95-9.53c-2.77-16.61-12.51-26.35-19.93-33.75C267.47 348.88 264 345 264 336.06s3.47-12.86 11.31-20.7C284.05 306.62 296 294.67 296 272z\"]\n};\nvar faDryerAlt = {\n prefix: 'fas',\n iconName: 'dryer-alt',\n icon: [448, 512, [], \"f862\", \"M384 0H64A64 64 0 0 0 0 64v416a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a64 64 0 0 0-64-64zM184 64a24 24 0 1 1-24 24 24 24 0 0 1 24-24zM64 88a24 24 0 1 1 24 24 24 24 0 0 1-24-24zm160 360a144 144 0 1 1 144-144 144 144 0 0 1-144 144zm0-256a112 112 0 1 0 112 112 112 112 0 0 0-112-112zm0 192a80 80 0 0 1-78.39-64H184a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8h-38.39A80 80 0 1 1 224 384z\"]\n};\nvar faDuck = {\n prefix: 'fas',\n iconName: 'duck',\n icon: [512, 512, [], \"f6d8\", \"M416 224c53.02 0 96-42.98 96-96h-64c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 23.15 8.37 44.15 22.1 60.59 6.25 7.48 9.9 16.78 9.9 26.53 0 22.58-18.3 40.88-40.88 40.88h-21.69c-31.51 0-80.18-13.2-101.68-36.24C113.73 209.03 96 216.17 96 230.63 96 315.33 164.67 384 249.37 384h-32c-76.01 0-138.67-55.44-150.82-128h-50.4C7.03 256-.64 263.66.03 272.75 8.61 388.64 105.35 480 223.42 480h107.2c55.51 0 110.81-44.52 116.72-99.71 4.54-42.43-14.76-80.4-46.04-102.86-10.85-7.79-17.3-20.27-17.3-33.63 0-7.12 1.97-13.83 5.33-19.79H416zm-64-80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z\"]\n};\nvar faEar = {\n prefix: 'fas',\n iconName: 'ear',\n icon: [384, 512, [], \"f5f0\", \"M192 0C85.96 0 0 85.96 0 192v176c0 79.53 64.47 144 144 144s144-64.47 144-144v-9.9c57.33-33.21 96-95.08 96-166.1C384 85.96 298.04 0 192 0zm128 200c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-8c0-52.94-43.06-96-96-96s-96 43.06-96 96c0 17.64 14.36 32 32 32h32c35.3 0 64 28.7 64 64s-28.7 64-64 64h-8c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h8c17.64 0 32-14.36 32-32s-14.36-32-32-32h-32c-35.3 0-64-28.7-64-64 0-70.58 57.42-128 128-128s128 57.42 128 128v8z\"]\n};\nvar faEarMuffs = {\n prefix: 'fas',\n iconName: 'ear-muffs',\n icon: [640, 512, [], \"f795\", \"M152 224c-11.9 0-22.3 5.4-29.6 13.7-10.6-6.9-23.8-9.3-36.4-4.4-11.8 4.8-20.2 14.7-23.7 26.2-11.8-.3-23.4 4.8-31.7 14.4-8 9.9-10.6 22.1-8.3 33.6-10.2 5.1-18.6 14.7-21.1 26.9-2.9 12.2.3 24 7.4 33.3-7 9-10.2 21.1-7.7 33.3 2.9 12.2 10.9 21.8 21.4 27.2-2.6 11.2 0 23.7 8 33.3 8 9.9 19.8 14.7 31.7 14.7 3.2 11.5 11.5 21.1 23.4 26.2 5.1 1.9 9.9 2.9 15 2.9 7.9 0 15.6-2.4 22.1-6.8 7.3 8.2 17.7 13.5 29.5 13.5 22.1 0 40-17.9 40-40 0-10-4-18.9-10.1-25.9 6.1-7 10.1-15.9 10.1-25.9 0-9.9-3.5-19.2-9.6-26.2 6.1-7 9.6-16 9.6-25.9s-3.5-18.9-9.6-25.9c6.1-7 9.6-16 9.6-25.9 0-10.2-4.1-19.1-10.2-26.1 6.1-7 10.2-16 10.2-26 0-22.3-17.9-40.2-40-40.2zm487.1 111c-2.9-12.2-10.9-21.8-21.4-26.9 2.6-11.5 0-24-8-33.6-8-9.9-19.8-14.7-31.7-14.7-3.2-11.5-11.5-21.4-23.4-26.2-12.7-5-26.1-2.5-36.8 4.5-7.3-8.4-17.8-14.1-29.9-14.1-22.1 0-40 17.9-40 40 0 10.1 4.1 19 10.2 26-6.1 7-10.2 15.9-10.2 26.1 0 9.9 3.5 18.9 9.6 25.9-6.1 7-9.6 16-9.6 25.9s3.5 18.9 9.6 25.9c-6.1 7-9.6 16-9.6 25.9 0 10.2 4.1 19.1 10.2 26.1-6.1 7-10.2 16-10.2 26 0 22.1 17.9 40 40 40 11.7 0 22-5.2 29.3-13.2 6.5 4.2 14.1 6.5 22 6.5 4.8 0 9.9-.6 14.7-2.9 11.8-4.5 20.2-14.4 23.4-25.9 11.8.3 23.7-4.8 32-14.4 8-9.9 10.6-22.1 8.3-33.6 10.2-5.1 18.2-14.7 21.1-26.9s-.3-24.3-7.4-33.3c7.2-8.7 10.4-20.9 7.8-33.1zM506.3 194.5c5.7 1.6 11.3 3.8 16.5 6.8 5.9-1.5 11.9-2.3 18-2.3 5.3 0 10.5.8 15.7 2C537.8 87.2 439 0 320 0S102.3 87.1 83.5 200.9c5.3-1.3 10.7-2.1 16.2-2.1 6.1 0 12.1.8 18 2.3 5.1-2.8 10.5-5 16-6.5C154.2 110.6 229.8 48 320 48c90.2 0 165.8 62.6 186.3 146.5z\"]\n};\nvar faEclipse = {\n prefix: 'fas',\n iconName: 'eclipse',\n icon: [640, 512, [], \"f749\", \"M464 80c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176S561.2 80 464 80zM165.5 346.5c-49.9-49.9-49.9-131.1 0-181 35.1-35.1 85.5-45 129.8-30.7 7.5-10.4 15.8-20.1 25.1-28.9L271.5 9.6c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 5.3 1.8c-10.7-9.7-20.3-20.5-28.8-32.3-44.2 14.3-94.6 4.4-129.7-30.7zM256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96c7.7 0 15.1-1.2 22.3-2.9-14.2-28-22.3-59.6-22.3-93.1 0-33.5 8.1-65.1 22.3-93.1-7.2-1.7-14.6-2.9-22.3-2.9z\"]\n};\nvar faEclipseAlt = {\n prefix: 'fas',\n iconName: 'eclipse-alt',\n icon: [512, 512, [], \"f74a\", \"M502.4 240.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181s131.1-49.9 181 0c49.9 49.9 49.9 131.1 0 181zm-20.4-37.3c-46.5 8.9-89.3-26.8-89.3-73.9 0-27.1 14.5-52 38-65.4 3.6-2.1 2.7-7.6-1.4-8.3-5.8-1.1-11.6-1.6-17.5-1.6-52.9 0-95.9 42.9-95.9 96 0 53 42.9 96 95.9 96 29.6 0 56.6-13.5 74.5-35.5 2.7-3.3-.2-8.1-4.3-7.3z\"]\n};\nvar faEdit = {\n prefix: 'fas',\n iconName: 'edit',\n icon: [576, 512, [], \"f044\", \"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\"]\n};\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z\"]\n};\nvar faEggFried = {\n prefix: 'fas',\n iconName: 'egg-fried',\n icon: [512, 512, [], \"f7fc\", \"M478.32 150.45c-39.5-40.71-100.73-46.29-144.39-82.24C284.12 27.2 245.81-9.25 175.39 2.1c-86.78 14-111.71 80-125 157.14-11.1 64.34-54.41 127-50 192.91s52.83 128.43 114.97 150.74c93 33.39 146.94-31.71 204.64-86.45 43.68-41.44 93.4-37.72 140.93-73.89 56.28-42.82 71.71-140.55 17.39-192.1zM224 352.38c-61.74 0-112-50.3-112-112.11s50.26-112.12 112-112.12 112 50.29 112 112.12-50.19 112.11-112 112.11zM216 160a72.09 72.09 0 0 0-72 72 16 16 0 0 0 32 0 40.05 40.05 0 0 1 40-40 16 16 0 0 0 0-32z\"]\n};\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [], \"f052\", \"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\"]\n};\nvar faElephant = {\n prefix: 'fas',\n iconName: 'elephant',\n icon: [640, 512, [], \"f6da\", \"M512 32c-13.16 0-25.52 2.66-37.4 6.4C464.71 15.82 442.23 0 416 0c-35.35 0-64 28.65-64 64 0 23.63 12.95 44.04 32 55.12V160c0 17.67 14.33 32 32 32h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-35.29 0-64-28.71-64-64v-24.8c-20.08-18.03-32-43.92-32-71.2 0-11.28 2.31-21.94 5.9-32H192C85.96 32 0 117.96 0 224v112c0 8.84 7.16 16 16 16h16v144c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V388.15C160.35 405.7 198.72 416 240 416s79.65-10.3 112-27.85V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h64c23.44 0 45.11-6.76 64-17.75V368c0 8.83-7.17 16-16 16s-16-7.17-16-16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16 0 46.87 40.52 84.46 88.36 79.57 41.62-4.25 71.64-42.46 71.64-84.3V160c0-70.69-57.31-128-128-128zm16 128c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faEllipsisH = {\n prefix: 'fas',\n iconName: 'ellipsis-h',\n icon: [512, 512, [], \"f141\", \"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisHAlt = {\n prefix: 'fas',\n iconName: 'ellipsis-h-alt',\n icon: [512, 512, [], \"f39b\", \"M256 242c7.7 0 14 6.3 14 14s-6.3 14-14 14-14-6.3-14-14 6.3-14 14-14m0-58c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm176 58c7.7 0 14 6.3 14 14s-6.3 14-14 14-14-6.3-14-14 6.3-14 14-14m0-58c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zM80 242c7.7 0 14 6.3 14 14s-6.3 14-14 14-14-6.3-14-14 6.3-14 14-14m0-58c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisV = {\n prefix: 'fas',\n iconName: 'ellipsis-v',\n icon: [192, 512, [], \"f142\", \"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\"]\n};\nvar faEllipsisVAlt = {\n prefix: 'fas',\n iconName: 'ellipsis-v-alt',\n icon: [192, 512, [], \"f39c\", \"M96 242c7.7 0 14 6.3 14 14s-6.3 14-14 14-14-6.3-14-14 6.3-14 14-14m0-58c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0-118c7.7 0 14 6.3 14 14s-6.3 14-14 14-14-6.3-14-14 6.3-14 14-14m0-58C56.2 8 24 40.2 24 80s32.2 72 72 72 72-32.2 72-72S135.8 8 96 8zm0 410c7.7 0 14 6.3 14 14s-6.3 14-14 14-14-6.3-14-14 6.3-14 14-14m0-58c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEmptySet = {\n prefix: 'fas',\n iconName: 'empty-set',\n icon: [512, 512, [], \"f656\", \"M507.31 27.31L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0l-72.09 72.09C352.57 48.78 306.31 32 256 32 132.29 32 32 132.29 32 256c0 50.3 16.78 96.57 44.78 133.96l-72.09 72.1c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l72.09-72.09C159.43 463.22 205.7 480 256 480c123.71 0 224-100.29 224-224 0-50.3-16.78-96.57-44.78-133.96l72.09-72.09c6.25-6.26 6.25-16.39 0-22.64zM112 256c0-79.4 64.6-144 144-144 28.11 0 54.16 8.41 76.35 22.39L134.39 332.35C120.41 310.16 112 284.11 112 256zm288 0c0 79.4-64.6 144-144 144-28.11 0-54.16-8.41-76.35-22.39L377.6 179.65C391.59 201.84 400 227.89 400 256z\"]\n};\nvar faEngineWarning = {\n prefix: 'fas',\n iconName: 'engine-warning',\n icon: [640, 512, [], \"f5f2\", \"M48 256c0-59.53 19.55-117.38 55.36-164.51 5.18-6.81 4.48-16.31-2.03-21.86l-12.2-10.41c-6.91-5.9-17.62-5.06-23.15 2.15C23.32 117.02 0 185.5 0 256c0 70.47 23.32 138.96 65.96 194.62 5.53 7.21 16.23 8.05 23.15 2.16l12.19-10.4c6.51-5.55 7.21-15.04 2.04-21.86C67.55 373.37 48 315.53 48 256zM320 32C196.3 32 96 132.3 96 256c0 123.76 100.3 224 224 224s224-100.24 224-224c0-123.7-100.3-224-224-224zm0 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.44-110.41c-.82 8.18-7.7 14.41-15.92 14.41h-19.04c-8.22 0-15.1-6.23-15.92-14.41l-12.8-128c-.94-9.42 6.45-17.59 15.92-17.59h44.64c9.47 0 16.86 8.17 15.92 17.59l-12.8 128zM572.73 59.71c-5.58-7.18-16.29-7.95-23.17-2l-12.15 10.51c-6.47 5.6-7.1 15.09-1.88 21.87C572.04 137.47 592 195.81 592 256c0 60.23-19.96 118.57-56.46 165.95-5.22 6.78-4.59 16.27 1.88 21.87l12.15 10.5c6.87 5.95 17.59 5.18 23.17-2C616.21 396.38 640 327.31 640 256c0-71.27-23.79-140.34-67.27-196.29z\"]\n};\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [], \"f0e0\", \"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [], \"f2b6\", \"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\"]\n};\nvar faEnvelopeOpenDollar = {\n prefix: 'fas',\n iconName: 'envelope-open-dollar',\n icon: [512, 512, [], \"f657\", \"M256 417.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.18 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77zM264 136h-16c-4.42 0-8 3.58-8 8v16.12c-23.62.63-42.67 20.55-42.67 45.07 0 19.97 12.98 37.81 31.58 43.39l45 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.11c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V336c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.62-.63 42.67-20.54 42.67-45.07 0-19.97-12.98-37.81-31.58-43.39l-45-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V144c0-4.42-3.58-8-8-8z\"]\n};\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z\"]\n};\nvar faEnvelopeSquare = {\n prefix: 'fas',\n iconName: 'envelope-square',\n icon: [448, 512, [], \"f199\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [], \"f52c\", \"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [512, 512, [], \"f12d\", \"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [], \"f153\", \"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\"]\n};\nvar faExchange = {\n prefix: 'fas',\n iconName: 'exchange',\n icon: [512, 512, [], \"f0ec\", \"M0 168v-16c0-13.255 10.745-24 24-24h381.97l-30.467-27.728c-9.815-9.289-10.03-24.846-.474-34.402l10.84-10.84c9.373-9.373 24.568-9.373 33.941 0l82.817 82.343c12.497 12.497 12.497 32.758 0 45.255l-82.817 82.343c-9.373 9.373-24.569 9.373-33.941 0l-10.84-10.84c-9.556-9.556-9.341-25.114.474-34.402L405.97 192H24c-13.255 0-24-10.745-24-24zm488 152H106.03l30.467-27.728c9.815-9.289 10.03-24.846.474-34.402l-10.84-10.84c-9.373-9.373-24.568-9.373-33.941 0L9.373 329.373c-12.497 12.497-12.497 32.758 0 45.255l82.817 82.343c9.373 9.373 24.569 9.373 33.941 0l10.84-10.84c9.556-9.556 9.341-25.113-.474-34.402L106.03 384H488c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExchangeAlt = {\n prefix: 'fas',\n iconName: 'exchange-alt',\n icon: [512, 512, [], \"f362\", \"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [192, 512, [], \"f12a\", \"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\"]\n};\nvar faExclamationCircle = {\n prefix: 'fas',\n iconName: 'exclamation-circle',\n icon: [512, 512, [], \"f06a\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExclamationSquare = {\n prefix: 'fas',\n iconName: 'exclamation-square',\n icon: [448, 512, [], \"f321\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-207.691 96h63.382c6.884 0 12.357 5.78 11.982 12.654l-7.418 136c-.347 6.364-5.609 11.346-11.982 11.346h-48.546c-6.373 0-11.635-4.982-11.982-11.346l-7.418-136c-.375-6.874 5.098-12.654 11.982-12.654zM224 398c-25.405 0-46-20.595-46-46s20.595-46 46-46 46 20.595 46 46-20.595 46-46 46z\"]\n};\nvar faExclamationTriangle = {\n prefix: 'fas',\n iconName: 'exclamation-triangle',\n icon: [576, 512, [], \"f071\", \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n prefix: 'fas',\n iconName: 'expand-alt',\n icon: [448, 512, [], \"f424\", \"M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z\"]\n};\nvar faExpandArrows = {\n prefix: 'fas',\n iconName: 'expand-arrows',\n icon: [448, 512, [], \"f31d\", \"M448 312v136c0 17.7-14.3 32-32 32H280c-13.3 0-24-10.7-24-24v-15.3c0-13.5 11.2-24.4 24.7-24l66.3 1.9-123-123-123 123 66.3-1.9c13.5-.4 24.7 10.5 24.7 24V456c0 13.3-10.7 24-24 24H32c-17.7 0-32-14.3-32-32V312c0-13.3 10.7-24 24-24h15.3c13.5 0 24.4 11.2 24 24.7L61.4 379l123-123-123-123 1.9 66.3c.4 13.5-10.5 24.7-24 24.7H24c-13.3 0-24-10.7-24-24V64c0-17.7 14.3-32 32-32h136c13.3 0 24 10.7 24 24v15.3c0 13.5-11.2 24.4-24.7 24L101 93.4l123 123 123-123-66.3 1.9c-13.5.4-24.7-10.5-24.7-24V56c0-13.3 10.7-24 24-24h136c17.7 0 32 14.3 32 32v136c0 13.3-10.7 24-24 24h-15.3c-13.5 0-24.4-11.2-24-24.7l1.9-66.3-123 123 123 123-1.9-66.3c-.4-13.5 10.5-24.7 24-24.7H424c13.3 0 24 10.7 24 24z\"]\n};\nvar faExpandArrowsAlt = {\n prefix: 'fas',\n iconName: 'expand-arrows-alt',\n icon: [448, 512, [], \"f31e\", \"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z\"]\n};\nvar faExpandWide = {\n prefix: 'fas',\n iconName: 'expand-wide',\n icon: [512, 512, [], \"f320\", \"M0 212V88c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM352 76v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V88c0-13.3-10.7-24-24-24H364c-6.6 0-12 5.4-12 12zm148 212h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V300c0-6.6-5.4-12-12-12zM160 436v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExternalLink = {\n prefix: 'fas',\n iconName: 'external-link',\n icon: [512, 512, [], \"f08e\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM474.67,0H316a28,28,0,0,0-28,28V46.71A28,28,0,0,0,316.79,73.9L384,72,135.06,319.09l-.06.06a24,24,0,0,0,0,33.94l23.94,23.85.06.06a24,24,0,0,0,33.91-.09L440,128l-1.88,67.22V196a28,28,0,0,0,28,28H484a28,28,0,0,0,28-28V37.33h0A37.33,37.33,0,0,0,474.67,0Z\"]\n};\nvar faExternalLinkAlt = {\n prefix: 'fas',\n iconName: 'external-link-alt',\n icon: [512, 512, [], \"f35d\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"]\n};\nvar faExternalLinkSquare = {\n prefix: 'fas',\n iconName: 'external-link-square',\n icon: [448, 512, [], \"f14c\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-64 47.111C384 109.929 370.071 96 352.889 96H220.667c-12.887 0-23.333 10.447-23.333 23.334v14.904c0 13.138 10.843 23.686 23.976 23.324l56.002-1.588L69.908 361.908c-7.858 7.802-7.88 20.504-.05 28.334l19.899 19.899c7.83 7.83 20.532 7.808 28.334-.05l205.935-207.404-1.588 56.003c-.362 13.133 10.186 23.976 23.324 23.976h14.904c12.887 0 23.334-10.447 23.334-23.333V127.111z\"]\n};\nvar faExternalLinkSquareAlt = {\n prefix: 'fas',\n iconName: 'external-link-square-alt',\n icon: [448, 512, [], \"f360\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\"]\n};\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [], \"f06e\", \"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z\"]\n};\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [], \"f1fb\", \"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\"]\n};\nvar faEyeEvil = {\n prefix: 'fas',\n iconName: 'eye-evil',\n icon: [640, 512, [], \"f6db\", \"M627.03 239.08l-111.87-30.3c-4.79-6.56-10.15-13.4-16.13-20.45 1.35-2.07 55.18-87.98 55.18-87.98 8.94-14.32-6.1-31.35-22.45-25.42L412 118.29c-9.68-4.81-19.91-8.91-30.65-12.32l-44.47-95.24c-6.68-14.31-27.08-14.31-33.76 0l-44.47 95.24c-10.74 3.4-20.97 7.51-30.65 12.32L108.23 74.93C91.88 69 76.85 86.03 85.78 100.35c0 0 53.84 85.92 55.18 87.98a359.126 359.126 0 0 0-16.13 20.45l-111.87 30.3c-17.29 4.68-17.29 29.15 0 33.83l111.87 30.3c4.78 6.54 10.11 13.35 16.07 20.38-1.34 2.09-55.12 88.05-55.12 88.05-8.94 14.32 6.1 31.35 22.45 25.43L228 393.71c9.68 4.81 19.91 8.92 30.65 12.32l44.47 95.24c6.68 14.31 27.08 14.31 33.76 0l44.47-95.24c10.74-3.4 20.97-7.51 30.65-12.32l119.77 43.36c16.35 5.92 31.39-11.11 22.45-25.43 0 0-53.78-85.96-55.12-88.05 5.96-7.03 11.29-13.84 16.07-20.38l111.87-30.3c17.28-4.68 17.28-29.14-.01-33.83zM320 352c-53.02 0-96-42.98-96-96 0-19.73 5.99-38.06 16.2-53.31 15.91 9.57 34.77 16.33 55.59 19.33-4.41 9.25-7.79 20.41-7.79 33.98 0 42.67 32 64 32 64s32-21.33 32-64c0-13.57-3.37-24.73-7.79-33.98 20.82-3 39.68-9.76 55.59-19.33C410.01 217.94 416 236.27 416 256c0 53.02-42.98 96-96 96z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faFanTable = {\n prefix: 'fas',\n iconName: 'fan-table',\n icon: [448, 512, [], \"e004\", \"M320,448H248V414.51C351.55,402.59,432,314.75,432,208,432,93.13,338.88,0,224,0S16,93.13,16,208c0,106.75,80.45,194.59,184,206.51V448H128c-28.42,0-54.95,18.53-63.3,44.16C61.48,502,69.88,512,80.26,512H367.74c10.38,0,18.78-10,15.56-19.84C375,466.53,348.42,448,320,448ZM119.67,334.8c-7.09-4.08-14.57-16.86-5.14-28.28l67.47-82c-57.17-20.29-69.18-77.3-59.64-113a93.77,93.77,0,0,1,44-57.34l0,0c13-7.39,24.26,2.35,27,9.73l37.08,99A94.36,94.36,0,0,1,386,235a18.84,18.84,0,0,1-21.91,18.58l-104.7-17.45a93.41,93.41,0,0,1-10.7,64.11A94.47,94.47,0,0,1,119.67,334.8ZM224,192a16,16,0,1,1-16,16A16,16,0,0,1,224,192Z\"]\n};\nvar faFarm = {\n prefix: 'fas',\n iconName: 'farm',\n icon: [576, 512, [], \"f864\", \"M221.5 91.08l.37-.17A111.93 111.93 0 0 0 0 112v400h128V260.54a64.35 64.35 0 0 1 6.76-28.63l55.48-111a64.12 64.12 0 0 1 31.26-29.83zm351.12 155.14l-55.49-111a32 32 0 0 0-15.62-14.93L381 66.76a32 32 0 0 0-26 0l-120.51 53.56a32 32 0 0 0-15.62 14.93l-55.49 111a32.08 32.08 0 0 0-3.38 14.29V512h128v-96h160v96h128V260.54a32.08 32.08 0 0 0-3.38-14.32zM416 320h-96v-96h96z\"]\n};\nvar faFastBackward = {\n prefix: 'fas',\n iconName: 'fast-backward',\n icon: [512, 512, [], \"f049\", \"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\"]\n};\nvar faFastForward = {\n prefix: 'fas',\n iconName: 'fast-forward',\n icon: [512, 512, [], \"f050\", \"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\"]\n};\nvar faFaucet = {\n prefix: 'fas',\n iconName: 'faucet',\n icon: [512, 512, [], \"e005\", \"M352,256H313.39c-15.71-13.44-35.46-23.07-57.39-28V180.44l-32-3.38-32,3.38V228c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,272v96a16,16,0,0,0,16,16h92.79C129.38,421.73,173,448,224,448s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,256ZM81.59,159.91l142.41-15,142.41,15c9.42,1,17.59-6.81,17.59-16.8V112.89c0-10-8.17-17.8-17.59-16.81L256,107.74V80a16,16,0,0,0-16-16H208a16,16,0,0,0-16,16v27.74L81.59,96.08C72.17,95.09,64,102.9,64,112.89v30.22C64,153.1,72.17,160.91,81.59,159.91Z\"]\n};\nvar faFaucetDrip = {\n prefix: 'fas',\n iconName: 'faucet-drip',\n icon: [512, 512, [], \"e006\", \"M416,480a32,32,0,0,0,64,0c0-17.67-32-64-32-64S416,462.33,416,480ZM352,192H313.39c-15.71-13.44-35.46-23.07-57.39-28V116.44l-32-3.38-32,3.38V164c-21.93,5-41.68,14.6-57.39,28H16A16,16,0,0,0,0,208v96a16,16,0,0,0,16,16h92.79C129.38,357.73,173,384,224,384s94.62-26.27,115.21-64H352a32,32,0,0,1,32,32,32,32,0,0,0,32,32h64a32,32,0,0,0,32-32A160,160,0,0,0,352,192ZM81.59,95.91,224,80.89l142.41,15c9.42,1,17.59-6.81,17.59-16.8V48.89c0-10-8.17-17.8-17.59-16.8L256,43.74V16A16,16,0,0,0,240,0H208a16,16,0,0,0-16,16V43.74L81.59,32.09C72.17,31.09,64,38.9,64,48.89V79.11C64,89.1,72.17,96.91,81.59,95.91Z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [], \"f1ac\", \"M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [], \"f52d\", \"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\"]\n};\nvar faFeatherAlt = {\n prefix: 'fas',\n iconName: 'feather-alt',\n icon: [512, 512, [], \"f56b\", \"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\"]\n};\nvar faFemale = {\n prefix: 'fas',\n iconName: 'female',\n icon: [256, 512, [], \"f182\", \"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\"]\n};\nvar faFieldHockey = {\n prefix: 'fas',\n iconName: 'field-hockey',\n icon: [640, 512, [], \"f44c\", \"M560.7 0H628c6.6 0 12 5.4 12 12v124.9c0 3.2-1.3 6.2-3.5 8.5L592 190 479 76.9l73.3-73.3c2.2-2.3 5.2-3.6 8.4-3.6zm-53.4 274.7l50.8-50.8-113-113.1-230.7 231c-30 29.9-75-15.4-45.2-45.3 31.2-31.2 31.2-81.9 0-113.1-31.2-31.2-81.8-31.2-113 0C19.9 219.7 0 267.9 0 319.2c0 106 85.6 192 191.8 192 86.1 0 132.5-53.2 147.4-68-19.3-100.5 68.5-187.6 168.1-168.5zM480.2 320c-53 0-95.9 43-95.9 96s42.9 96 95.9 96 95.9-43 95.9-96-42.9-96-95.9-96z\"]\n};\nvar faFighterJet = {\n prefix: 'fas',\n iconName: 'fighter-jet',\n icon: [640, 512, [], \"f0fb\", \"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\"]\n};\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [], \"f15b\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileAlt = {\n prefix: 'fas',\n iconName: 'file-alt',\n icon: [384, 512, [], \"f15c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileArchive = {\n prefix: 'fas',\n iconName: 'file-archive',\n icon: [384, 512, [], \"f1c6\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileCertificate = {\n prefix: 'fas',\n iconName: 'file-certificate',\n icon: [512, 512, [], \"f5f3\", \"M504.99 105.01l-97.9-98c-7.71-7.71-16-7-23.1-7v128h128c0-7.53.64-15.35-7-23zm-153 31V.01H152c-13.3 0-24 10.7-24 24V133c18.3-5 19.58-5 26.45-5 16.23 0 32.1 6.67 43.53 18.3 8.72 9.59 4.41 6.98 18.28 10.76 21.07 5.75 37.64 22.53 43.23 43.8 3.11 13.2.6 8.66 10.75 18.99 15.25 15.51 21.26 38.26 15.7 59.36-3.75 13.23-3.71 8.01 0 22.12 5.57 21.11-.45 43.85-15.69 59.37-9.64 9.36-7.04 4.88-10.75 18.99-4.89 18.59-18.16 33.75-35.5 41.12V512h263.99c13.3 0 24-10.7 24-24V160.01h-136c-13.2 0-24-10.8-24-24zM247.42 338.28c7.4-7.53 10.29-18.5 7.58-28.79-5.43-20.65-5.44-17.74 0-38.42 2.71-10.28-.18-21.26-7.58-28.79-14.86-15.12-13.43-12.61-18.87-33.27-2.71-10.28-10.6-18.32-20.71-21.07-20.28-5.53-17.84-4.1-32.69-19.21-7.4-7.53-18.18-10.47-28.28-7.71-20.32 5.54-17.46 5.53-37.75 0-10.1-2.76-20.88.19-28.28 7.71-14.91 15.18-12.5 13.7-32.69 19.21-10.11 2.76-18 10.79-20.71 21.07-5.46 20.74-4 18.13-18.87 33.27-7.4 7.53-10.29 18.5-7.58 28.79 5.45 20.71 5.42 17.79 0 38.41-2.71 10.28.18 21.26 7.58 28.79 14.85 15.11 13.43 12.61 18.87 33.27 2.71 10.28 10.6 18.32 20.71 21.07 14.31 3.9 11.52 2.97 15.84 5V512l64-32 64 32V397.62c4.31-2.02 1.52-1.1 15.84-5 10.11-2.76 18-10.79 20.71-21.07 5.47-20.74 4.01-18.13 18.88-33.27zM128 352.01c-35.34 0-64-28.65-64-64s28.66-64 64-64 64 28.65 64 64-28.66 64-64 64z\"]\n};\nvar faFileChartLine = {\n prefix: 'fas',\n iconName: 'file-chart-line',\n icon: [384, 512, [], \"f659\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 299.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-70.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v70.4zm96 0c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V236.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v198.4zm32-134.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v134.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V300.8z\"]\n};\nvar faFileChartPie = {\n prefix: 'fas',\n iconName: 'file-chart-pie',\n icon: [384, 512, [], \"f65a\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-87.49 302.53c-28.73-11.16-51.87-34.3-63.04-63.03C43.42 298.14 90.91 224.8 160 210.66V352h141.34c-14.14 69.09-87.48 116.58-164.83 86.53zm175.63-118.55c0 .01.01.02 0 .02H192V199.86c0-.01.01 0 .02 0 66.34.01 120.11 53.78 120.12 120.12zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCheck = {\n prefix: 'fas',\n iconName: 'file-check',\n icon: [384, 512, [], \"f316\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160h136v328c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V24C0 10.745 10.745 0 24 0h200v136c0 13.2 10.8 24 24 24zm65.296 109.732l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L162.12 346.45l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068L70.772 328.2c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [384, 512, [], \"f6dd\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileDownload = {\n prefix: 'fas',\n iconName: 'file-download',\n icon: [384, 512, [], \"f56d\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileEdit = {\n prefix: 'fas',\n iconName: 'file-edit',\n icon: [384, 512, [], \"f31c\", \"M384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-59.6 109.6l-95 95-5.4 48.2c-.7 6.4 4.7 11.9 11.2 11.2l48.2-5.4 95-95c2-2 2-5.2 0-7.2l-46.8-46.8c-2-2-5.2-2-7.2 0zm109.7-30.3l-25.4-25.4c-7.9-7.9-20.7-7.9-28.6 0l-26 26c-2 2-2 5.2 0 7.2l46.8 46.8c2 2 5.2 2 7.2 0l26-26c7.9-7.9 7.9-20.7 0-28.6z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileExclamation = {\n prefix: 'fas',\n iconName: 'file-exclamation',\n icon: [384, 512, [], \"f31a\", \"M384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9zm0 38.1v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24h136zm-231.2 60.8l7.2 112c.4 6.3 5.6 11.2 12 11.2h40c6.3 0 11.6-4.9 12-11.2l7.2-112c.4-6.9-5-12.8-12-12.8h-54.4c-6.9 0-12.4 5.8-12 12.8zM232 400c0-22.1-17.9-40-40-40s-40 17.9-40 40 17.9 40 40 40 40-17.9 40-40z\"]\n};\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [], \"f56e\", \"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [], \"f1c5\", \"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\"]\n};\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [], \"f56f\", \"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z\"]\n};\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\"]\n};\nvar faFileMedicalAlt = {\n prefix: 'fas',\n iconName: 'file-medical-alt',\n icon: [448, 512, [], \"f478\", \"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileMinus = {\n prefix: 'fas',\n iconName: 'file-minus',\n icon: [384, 512, [], \"f318\", \"M377,105,279.1,7a24,24,0,0,0-17-7H256V128H384v-6.1A23.92,23.92,0,0,0,377,105ZM224,136V0H24A23.94,23.94,0,0,0,0,24V488a23.94,23.94,0,0,0,24,24H360a23.94,23.94,0,0,0,24-24V160H248A24.07,24.07,0,0,1,224,136Zm72,176v16a16,16,0,0,1-16,16H104a16,16,0,0,1-16-16V312a16,16,0,0,1,16-16H280A16,16,0,0,1,296,312Z\"]\n};\nvar faFileMusic = {\n prefix: 'fas',\n iconName: 'file-music',\n icon: [384, 512, [], \"f8b6\", \"M224 136V0H24A23.94 23.94 0 0 0 0 24v464a23.94 23.94 0 0 0 24 24h336a23.94 23.94 0 0 0 24-24V160H248a24.08 24.08 0 0 1-24-24zm64 88v160c0 17.67-21.5 32-48 32s-48-14.33-48-32 21.5-32 48-32a69.89 69.89 0 0 1 16 2v-76.36l-96 37.52V416c0 17.67-21.5 32-48 32s-48-14.33-48-32 21.5-32 48-32a69.89 69.89 0 0 1 16 2V271.25A16 16 0 0 1 139.19 256l128-47.25A16 16 0 0 1 288 224zm89-119L279.09 7a24 24 0 0 0-17-7H256v128h128v-6.09a23.91 23.91 0 0 0-7-16.91z\"]\n};\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\"]\n};\nvar faFilePlus = {\n prefix: 'fas',\n iconName: 'file-plus',\n icon: [384, 512, [], \"f319\", \"M377,105,279.1,7a24,24,0,0,0-17-7H256V128H384v-6.1A23.92,23.92,0,0,0,377,105ZM224,136V0H24A23.94,23.94,0,0,0,0,24V488a23.94,23.94,0,0,0,24,24H360a23.94,23.94,0,0,0,24-24V160H248A24.07,24.07,0,0,1,224,136Zm72,176v16a16,16,0,0,1-16,16H216v64a16,16,0,0,1-16,16H184a16,16,0,0,1-16-16V344H104a16,16,0,0,1-16-16V312a16,16,0,0,1,16-16h64V232a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64A16,16,0,0,1,296,312Z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileSearch = {\n prefix: 'fas',\n iconName: 'file-search',\n icon: [640, 512, [], \"f865\", \"M288 320c0-65.45 39.59-121.68 96-146.44V160H248a24.07 24.07 0 0 1-24-24V0H24A23.94 23.94 0 0 0 0 24v464a23.94 23.94 0 0 0 24 24h336a23.94 23.94 0 0 0 24-24v-21.56c-56.41-24.75-96-80.99-96-146.44zm96-198.1a23.92 23.92 0 0 0-7-16.9L279.1 7a24 24 0 0 0-17-7H256v128h128zm251.31 340.16l-77.41-77.41A126.69 126.69 0 0 0 576 320a128 128 0 1 0-128 128c23.7 0 45.61-6.88 64.65-18.11l77.41 77.42a16 16 0 0 0 22.63 0l22.62-22.62a16 16 0 0 0 0-22.63zM448 384a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\"]\n};\nvar faFileSpreadsheet = {\n prefix: 'fas',\n iconName: 'file-spreadsheet',\n icon: [384, 512, [], \"f65b\", \"M296 368h-48v48h48v-48zm-80-80h-48v48h48v-48zm80 0h-48v48h48v-48zm-80 80h-48v48h48v-48zm8-232V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm104 104v192c0 8.84-7.16 16-16 16H72c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h240c8.84 0 16 7.16 16 16zm49-135L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM136 288H88v48h48v-48zm0 80H88v48h48v-48z\"]\n};\nvar faFileTimes = {\n prefix: 'fas',\n iconName: 'file-times',\n icon: [384, 512, [], \"f317\", \"M224,136V0H24A23.94,23.94,0,0,0,0,24V488a23.94,23.94,0,0,0,24,24H360a23.94,23.94,0,0,0,24-24V160H248A24.07,24.07,0,0,1,224,136Zm35.88,104.8,11.32,11.32a16,16,0,0,1,0,22.63L225.94,320l45.26,45.25a16,16,0,0,1,0,22.63L259.88,399.2a16,16,0,0,1-22.63,0L192,353.94,146.75,399.2a16,16,0,0,1-22.63,0L112.8,387.88a16,16,0,0,1,0-22.63L158.06,320,112.8,274.75a16,16,0,0,1,0-22.63l11.32-11.32a16,16,0,0,1,22.63,0L192,286.06l45.25-45.26A16,16,0,0,1,259.88,240.8ZM377,105,279.1,7a24,24,0,0,0-17-7H256V128H384v-6.1A23.92,23.92,0,0,0,377,105Z\"]\n};\nvar faFileUpload = {\n prefix: 'fas',\n iconName: 'file-upload',\n icon: [384, 512, [], \"f574\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileUser = {\n prefix: 'fas',\n iconName: 'file-user',\n icon: [384, 512, [], \"f65c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm80 273.6v19.2c0 10.61-10.03 19.2-22.4 19.2H102.4c-12.37 0-22.4-8.6-22.4-19.2v-19.2c0-31.81 30.09-57.6 67.2-57.6h4.95c12.29 5.12 25.73 8 39.85 8s27.56-2.88 39.85-8h4.95c37.11 0 67.2 25.79 67.2 57.6zM192 320c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm185-215L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\"]\n};\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFilesMedical = {\n prefix: 'fas',\n iconName: 'files-medical',\n icon: [448, 512, [], \"f7fd\", \"M96 392V96H24a24 24 0 0 0-24 24v368a24 24 0 0 0 24 24h272a24 24 0 0 0 24-24v-40H152a56.06 56.06 0 0 1-56-56zm224-288V0H152a24 24 0 0 0-24 24v368a24 24 0 0 0 24 24h272a24 24 0 0 0 24-24V128H344a24.07 24.07 0 0 1-24-24zm64 128v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm57-159L375 7a24 24 0 0 0-17-7h-6v96h96v-6.06A24 24 0 0 0 441 73z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\"]\n};\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilmAlt = {\n prefix: 'fas',\n iconName: 'film-alt',\n icon: [512, 512, [], \"f3a0\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm384 192c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilmCanister = {\n prefix: 'fas',\n iconName: 'film-canister',\n icon: [576, 512, [], \"f8b7\", \"M544 128H352v288h128a32 32 0 0 0 32-32v-32a32 32 0 0 1 32-32 32 32 0 0 0 32-32V160a32 32 0 0 0-32-32zM440 360a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16zm0-160a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16zm96 0a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16zM336 448h-16V96h16a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-80V16a16 16 0 0 0-16-16H112a16 16 0 0 0-16 16v16H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h16v352H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [384, 512, [], \"f06d\", \"M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z\"]\n};\nvar faFireAlt = {\n prefix: 'fas',\n iconName: 'fire-alt',\n icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z\"]\n};\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [448, 512, [], \"f134\", \"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\"]\n};\nvar faFireSmoke = {\n prefix: 'fas',\n iconName: 'fire-smoke',\n icon: [640, 512, [], \"f74b\", \"M528 288c-37.1 0-69.7 18.3-90.1 46.1C418.4 288.2 373 256 320 256s-98.4 32.2-117.9 78.1c-20.4-27.8-53-46.1-90.1-46.1C50.1 288 0 338.1 0 400s50.1 112 112 112h416c61.9 0 112-50.1 112-112s-50.1-112-112-112zm-332.3-4.8c9.7-12 21.3-22.3 33.9-31-4.7-11.6-7.4-24.7-7.4-39.3 0-29.8 18.2-56.1 54.4-101.1 5.2 6.2 73.8 96.9 73.8 96.9l43.8-51.7c3.1 5.3 5.9 10.5 8.4 15.4 12.4 24.5 13.9 53.1 5.1 77.8 13.7 9 26.1 20 36.5 32.8 13.5-9.7 28.6-16.7 44.5-21.3 4.6-15.5 7.2-31.9 7.2-48.9 0-40.3-40.8-123.4-97.8-174.2C381.8 53.2 367 68.5 353.9 84 332.6 55.7 306.1 26.9 276 0c-77.2 68.9-132 158.8-132 213 0 17 2.6 33.4 7.2 48.9 15.9 4.6 31 11.6 44.5 21.3z\"]\n};\nvar faFireplace = {\n prefix: 'fas',\n iconName: 'fireplace',\n icon: [640, 512, [], \"f79a\", \"M32 512h96V384c0-106 86-192 192-192s192 86 192 192v128h96V128H32v384zm310.3-200.4c-14-18.8-31.4-37.8-51.1-55.6-50.5 45.6-86.4 105-86.4 140.8 0 63.6 51.6 115.2 115.2 115.2s115.2-51.6 115.2-115.2c0-26.6-26.7-81.6-64-115.2-10.7 9.6-20.4 19.8-28.9 30zm15.5 136.9c-10.6 7.7-23.7 12.3-37.8 12.3-35.3 0-64-24.4-64-64 0-19.7 11.9-37.1 35.6-66.8 3.4 4.1 48.3 64.1 48.3 64.1l28.7-34.2c2 3.5 3.9 6.9 5.5 10.2 13.4 26.6 7.8 60.8-16.3 78.4zM624 0H16C7.2 0 0 7.2 0 16v64c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16z\"]\n};\nvar faFirstAid = {\n prefix: 'fas',\n iconName: 'first-aid',\n icon: [576, 512, [], \"f479\", \"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [], \"f578\", \"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFishCooked = {\n prefix: 'fas',\n iconName: 'fish-cooked',\n icon: [640, 512, [], \"f7fe\", \"M363.44 64c-100 0-187.26 65.72-235.85 122l-97-79.26C17.08 95.68-3 107.42.4 124.29L27.27 256 .39 387.73C-3 404.6 17.07 416.32 30.54 405.32l97-79.26C176.17 382.28 263.48 448 363.44 448 516.18 448 640 294.4 640 256S516.18 64 363.44 64zM245.66 261.65l-11.31-11.31a8 8 0 0 1 0-11.31L319 154.34a8 8 0 0 1 11.32 0l11.31 11.31a8 8 0 0 1 0 11.32L257 261.65a8 8 0 0 1-11.34 0zm59.31 80a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L431 170.34a8 8 0 0 1 11.32 0l11.31 11.31a8 8 0 0 1 0 11.32zM501.66 273L417 357.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L479 250.34a8 8 0 0 1 11.32 0l11.31 11.31a8 8 0 0 1 .03 11.35z\"]\n};\nvar faFistRaised = {\n prefix: 'fas',\n iconName: 'fist-raised',\n icon: [384, 512, [], \"f6de\", \"M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [512, 512, [], \"f024\", \"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\"]\n};\nvar faFlagAlt = {\n prefix: 'fas',\n iconName: 'flag-alt',\n icon: [512, 512, [], \"f74c\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm430.6 4.2C291.3 91.5 305.4-62.2 96 32.4V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8V30.8c0-25.1-26.8-38.1-49.4-26.6z\"]\n};\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [512, 512, [], \"f11e\", \"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z\"]\n};\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [512, 512, [], \"f74d\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z\"]\n};\nvar faFlame = {\n prefix: 'fas',\n iconName: 'flame',\n icon: [384, 512, [], \"f6df\", \"M192 0C79.7 101.33 0 220.92 0 300.55 0 425.05 78.95 512 192 512s192-86.95 192-211.45C384 220.6 303.78 100.86 192 0zm0 448c-70.58 0-128-52.89-128-117.89 0-44.13 25.84-71.51 34.34-79.76 3.12-3.12 8.19-3.12 11.31 0a7.98 7.98 0 0 1 2.34 5.66v40c0 30.93 25.07 56 56 56s56-25.07 56-56c0-72-112.64-64.77-39.43-164.33 2.89-3.93 7.48-4.16 10.58-3.17 1.62.53 5.38 2.24 5.38 6.78 0 33.55 25.05 54.97 51.57 77.63 33.38 28.54 67.9 58.04 67.9 117.21C320 395.11 262.58 448 192 448z\"]\n};\nvar faFlashlight = {\n prefix: 'fas',\n iconName: 'flashlight',\n icon: [640, 512, [], \"f8b8\", \"M384 160H32a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h352l16.12 10.75c43.14 28.76 92.62 45.67 143.88 50.89V98.36c-51.26 5.22-100.74 22.13-143.88 50.89zm-96 128h-32a32 32 0 0 1 0-64h32a32 32 0 0 1 0 64zM608 96h-32v320h32a32 32 0 0 0 32-32V128a32 32 0 0 0-32-32z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"]\n};\nvar faFlaskPoison = {\n prefix: 'fas',\n iconName: 'flask-poison',\n icon: [416, 512, [], \"f6e0\", \"M80 48V16c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16zm88 240c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm247.95 68.67c-1.14 51.68-21.15 98.7-53.39 134.48-12.09 13.41-29.52 20.85-47.58 20.85H100.94c-17.78 0-35.05-7.13-47-20.3C20.43 454.79 0 405.79 0 352c0-80.12 45.61-149.15 112-183.88V96h192v73.05c67.19 36.13 113.71 107.67 111.95 187.62zM320 312c0-48.6-50.14-88-112-88S96 263.4 96 312c0 29.87 19.04 56.17 48 72.08V416c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-31.92c28.96-15.91 48-42.21 48-72.08zm-72-24c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24z\"]\n};\nvar faFlaskPotion = {\n prefix: 'fas',\n iconName: 'flask-potion',\n icon: [416, 512, [], \"f6e1\", \"M415.95 356.67c-1.14 51.68-21.15 98.7-53.39 134.48-12.09 13.41-29.52 20.85-47.58 20.85H100.94c-17.78 0-35.05-7.13-47-20.3C20.43 454.79 0 405.79 0 352c0-80.12 45.61-149.15 112-183.88V96h64v110.86C155.79 217.44 75.67 245.6 65.15 335.42c65.85-32.92 127.64-31.03 181.8-3.95C291.94 353.97 328.27 352 351.8 352c-.27-91.84-75.33-125.09-111.79-144.7V96h64v73.05c67.18 36.13 113.7 107.67 111.94 187.62zM96 64h224c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H96c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlower = {\n prefix: 'fas',\n iconName: 'flower',\n icon: [512, 512, [], \"f7ff\", \"M480 160A128 128 0 0 0 352 32c-38.45 0-72.54 17.3-96 44.14C232.54 49.3 198.45 32 160 32A128 128 0 0 0 32 160c0 38.45 17.3 72.54 44.14 96C49.3 279.46 32 313.55 32 352a128 128 0 0 0 128 128c38.45 0 72.54-17.3 96-44.14C279.46 462.7 313.55 480 352 480a128 128 0 0 0 128-128c0-38.45-17.3-72.54-44.14-96C462.7 232.54 480 198.45 480 160zM256 336a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faFlowerDaffodil = {\n prefix: 'fas',\n iconName: 'flower-daffodil',\n icon: [512, 512, [], \"f800\", \"M495.87 320h-47.26c-63 0-119.82 22.23-160.61 57.92v-96.67A79.8 79.8 0 0 0 367.56 144 79.78 79.78 0 1 0 256 32.44 79.78 79.78 0 1 0 144.44 144 79.81 79.81 0 0 0 224 281.25v96.67C183.21 342.23 126.37 320 63.39 320H16.13c-9.19 0-17 7.72-16.06 16.84C10.06 435 106.43 512 223.83 512h64.34c117.4 0 213.77-77 223.76-175.16.92-9.12-6.87-16.84-16.06-16.84zM256 192a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faFlowerTulip = {\n prefix: 'fas',\n iconName: 'flower-tulip',\n icon: [512, 512, [], \"f801\", \"M495.87 320h-47.26c-63 0-119.82 22.23-160.61 57.92V256a128 128 0 0 0 128-128V32l-80 48-78.86-80L176 80 96 32v96a128 128 0 0 0 128 128v121.92C183.21 342.23 126.37 320 63.39 320H16.13c-9.19 0-17 7.72-16.06 16.84C10.06 435 106.43 512 223.83 512h64.34c117.4 0 213.77-77 223.76-175.16.92-9.12-6.87-16.84-16.06-16.84z\"]\n};\nvar faFlushed = {\n prefix: 'fas',\n iconName: 'flushed',\n icon: [496, 512, [], \"f579\", \"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\"]\n};\nvar faFlute = {\n prefix: 'fas',\n iconName: 'flute',\n icon: [640, 512, [], \"f8b9\", \"M0 208v96a32 32 0 0 0 32 32h64V176H32a32 32 0 0 0-32 32zm608-32H128v160h480a32 32 0 0 0 32-32v-96a32 32 0 0 0-32-32zM320 280a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm96 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm96 0a24 24 0 1 1 24-24 24 24 0 0 1-24 24z\"]\n};\nvar faFluxCapacitor = {\n prefix: 'fas',\n iconName: 'flux-capacitor',\n icon: [448, 512, [], \"f8ba\", \"M448,112V400a80.15451,80.15451,0,0,1-80,80H80A80.15451,80.15451,0,0,1,0,400V112A80.15451,80.15451,0,0,1,80,32H368A80.15451,80.15451,0,0,1,448,112ZM139.0625,238.82812l-45-44.95312c-7.60938-7.73438-13.78125-22.8125-13.78125-33.65625a48.01238,48.01238,0,0,1,48-48c10.84375,0,25.92187,6.17187,33.65625,13.78125l44.95312,45A96.07,96.07,0,0,0,208,160a80,80,0,1,0-80,80A93.8335,93.8335,0,0,0,139.0625,238.82812ZM208,262.625V352a16,16,0,0,0,32,0V262.625l91.31249-91.3125a18.49794,18.49794,0,0,0,4.39063-11.01562,15.99079,15.99079,0,0,0-16-16,18.498,18.498,0,0,0-11.01563,4.39062L224,233.375l-84.6875-84.6875a18.498,18.498,0,0,0-11.01562-4.39062,15.99079,15.99079,0,0,0-16,16,18.498,18.498,0,0,0,4.39062,11.01562ZM224.23438,432A79.79393,79.79393,0,0,0,304,352.23438c0-22.04688-14.34375-50.67188-32-63.875V352a48,48,0,0,1-96,0V288.35938c-17.65625,13.20312-32,41.82812-32,63.875A79.79393,79.79393,0,0,0,223.76562,432h.46876ZM400,160a80,80,0,0,0-160,0,93.8335,93.8335,0,0,0,1.17188,11.0625l44.95312-45c7.73438-7.60938,22.81249-13.78125,33.65625-13.78125a48.01238,48.01238,0,0,1,48,48c0,10.84375-6.17187,25.92187-13.78125,33.65625l-45,44.95312A96.06972,96.06972,0,0,0,320,240,80.034,80.034,0,0,0,400,160Z\"]\n};\nvar faFog = {\n prefix: 'fas',\n iconName: 'fog',\n icon: [640, 512, [], \"f74e\", \"M160 320h320c53 0 96-43 96-96s-43-96-96-96c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C320.4 24.8 283.3 0 240 0c-61.9 0-112 50.1-112 112 0 7.3.8 14.3 2.1 21.2C91.8 145.8 64 181.5 64 224c0 53 43 96 96 96zm48 144H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H288c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-48-56v-16c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [], \"f07b\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\"]\n};\nvar faFolderDownload = {\n prefix: 'fas',\n iconName: 'folder-download',\n icon: [512, 512, [], \"e053\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM364.44,283.36,268,379.06a17.05,17.05,0,0,1-24,0l-96.42-95.7A16,16,0,0,1,158.81,256H224V208a16,16,0,0,1,16-16h32a16,16,0,0,1,16,16v48h65.18A16,16,0,0,1,364.44,283.36Z\"]\n};\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [], \"f07c\", \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM359.5,296a16,16,0,0,1-16,16h-64v64a16,16,0,0,1-16,16h-16a16,16,0,0,1-16-16V312h-64a16,16,0,0,1-16-16V280a16,16,0,0,1,16-16h64V200a16,16,0,0,1,16-16h16a16,16,0,0,1,16,16v64h64a16,16,0,0,1,16,16Z\"]\n};\nvar faFolderTimes = {\n prefix: 'fas',\n iconName: 'folder-times',\n icon: [512, 512, [], \"f65f\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zM340.85 338.91c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L256 321.94l-50.91 50.91c-6.25 6.25-16.38 6.25-22.63 0l-11.31-11.31c-6.25-6.25-6.25-16.38 0-22.63L222.06 288l-50.91-50.91c-6.25-6.25-6.25-16.38 0-22.63l11.31-11.31c6.25-6.25 16.38-6.25 22.63 0L256 254.06l50.91-50.91c6.25-6.25 16.38-6.25 22.63 0l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63L289.94 288l50.91 50.91z\"]\n};\nvar faFolderTree = {\n prefix: 'fas',\n iconName: 'folder-tree',\n icon: [576, 512, [], \"f802\", \"M544 32H432L400 0h-80a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm0 288H432l-32-32h-80a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V352a32 32 0 0 0-32-32zM64 16A16 16 0 0 0 48 0H16A16 16 0 0 0 0 16v400a32 32 0 0 0 32 32h224v-64H64V160h192V96H64z\"]\n};\nvar faFolderUpload = {\n prefix: 'fas',\n iconName: 'folder-upload',\n icon: [512, 512, [], \"e054\", \"M464,128H272L208,64H48A48,48,0,0,0,0,112V400a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48V176A48,48,0,0,0,464,128ZM353.19,320H288v48a16,16,0,0,1-16,16H240a16,16,0,0,1-16-16V320H158.83a16,16,0,0,1-11.27-27.34L244,197a17.05,17.05,0,0,1,24,0l96.42,95.7A16,16,0,0,1,353.19,320Z\"]\n};\nvar faFolders = {\n prefix: 'fas',\n iconName: 'folders',\n icon: [640, 512, [], \"f660\", \"M96 336V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48v-48H176c-44.11 0-80-35.89-80-80zM592 64H400L336 0H176c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V112c0-26.51-21.49-48-48-48z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'fas',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFontCase = {\n prefix: 'fas',\n iconName: 'font-case',\n icon: [640, 512, [], \"f866\", \"M229.88 85.69A32 32 0 0 0 199.58 64h-47.16a32 32 0 0 0-30.3 21.69L.85 426.89A16 16 0 0 0 16 448h50.62a16 16 0 0 0 15.16-10.89L100.85 384h150.3l19.07 53.11A16 16 0 0 0 285.38 448H336a16 16 0 0 0 15.16-21.11zM129.58 304L176 174.74 222.42 304zM624 160h-32a16 16 0 0 0-16 16v1.81c-18.9-11-40.58-17.81-64-17.81a128.14 128.14 0 0 0-128 128v32a128.14 128.14 0 0 0 128 128c23.42 0 45.1-6.78 64-17.81V432a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V176a16 16 0 0 0-16-16zm-64 160a48 48 0 0 1-96 0v-32a48 48 0 0 1 96 0z\"]\n};\nvar faFootballBall = {\n prefix: 'fas',\n iconName: 'football-ball',\n icon: [496, 512, [], \"f44e\", \"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\"]\n};\nvar faFootballHelmet = {\n prefix: 'fas',\n iconName: 'football-helmet',\n icon: [512, 512, [], \"f44f\", \"M480 320H355.5l-15.2-76 136.8-17.8c9-1.2 15.6-9.8 13.9-18.7C466.2 82.6 347.9-8.6 211.9 10.6 104.6 25.7 17.8 112.6 2.6 219.9-7.6 292 13.3 359 53.7 409.9c3.1 3.9 7.8 6.1 12.8 6.1H120l85.7 45c25.2 12.6 55.7 7.7 75.7-12.3 36.2-36.2 10.9-81.9 5-96.7h42.9l9.5 47.3c9.5 47.4 48 85.3 95.9 91.3 44 5.5 42.5 5.4 45.3 5.4 22.5 0 32-19.7 32-32V352c0-17.7-14.3-32-32-32zm-304 40c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm97.6-40l-10.3-25.7c-7.8-19.4 4.9-40.9 25.6-43.6l19.6-2.6 14.4 71.9h-49.3zM480 464l-41.3-5.2c-25.9-3.2-48-18.7-60.1-40.7H480V464zm0-80H368.3l-6.4-32H480v32z\"]\n};\nvar faForklift = {\n prefix: 'fas',\n iconName: 'forklift',\n icon: [640, 512, [], \"f47a\", \"M624 384h-80V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v416c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM416 237.1c0-8.7-1.8-17.2-5.2-25.2L332.5 29.1C324.9 11.4 307.6 0 288.3 0H144c-26.5 0-48 21.5-48 48v112H48c-26.5 0-48 21.5-48 48v208c0 53 43 96 96 96s96-43 96-96h64c0 53 43 96 96 96s96-43 96-96c0-28.3-12.5-53.5-32-71.1V237.1zM96 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm160-208l-96-96V64h117.8L352 237.1V256h-96zm96 208c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [], \"f04e\", \"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\"]\n};\nvar faFragile = {\n prefix: 'fas',\n iconName: 'fragile',\n icon: [288, 512, [], \"f4bb\", \"M287.4 192.7l-16-178.1C270.7 6.3 263.9 0 255.7 0h-63.5l30.6 63.7-85.5 56L186.7 224 65.2 104.3l85.5-56L117.9 0H32.3c-8.2 0-15 6.3-15.7 14.6L.6 192.7c-7.2 80 50.7 148.9 127.4 157.6V480H74.1c-24.5 0-33.2 32-20 32h179.8c13.1 0 4.5-32-20-32H160V350.3c76.7-8.8 134.6-77.6 127.4-157.6z\"]\n};\nvar faFrenchFries = {\n prefix: 'fas',\n iconName: 'french-fries',\n icon: [512, 512, [], \"f803\", \"M432 224h-34c-6.92 0-13.7 4.27-15.19 11-8.6 39-62.09 69-126.79 69s-118.19-30-126.79-69c-1.49-6.76-8.27-11-15.19-11H80a16 16 0 0 0-15.62 19.47l54.1 243.47A32 32 0 0 0 149.73 512h212.54a32 32 0 0 0 31.24-25.06l54.1-243.47A16 16 0 0 0 432 224zm-80.45 4.14c.4-1.78 1.46-3.22 2.06-4.91l30.14-172.46a16 16 0 0 0-20.34-18.08l-34.28 10.25c-4.24 1.27-7.17 4.51-9.13 8.33v207.27c17.55-8.38 29.15-19.54 31.54-30.4zm79.9-36.14l16.3-93.23a16 16 0 0 0-20.34-18.08l-17.31 5.17-18.75 107.26c2.24-.32 4.33-1.12 6.63-1.12zM288 268.78V32a16 16 0 0 0-8.84-14.31l-32-16A16 16 0 0 0 224 16v252.78a160.62 160.62 0 0 0 64 0zM114 192c3.6 0 7 1 10.35 1.75l-20-107.16-19.74-5.9a16 16 0 0 0-20.36 18.08L80.55 192zm78 66.54V33.17l-3.76-20.1a16 16 0 0 0-25.39-9.81l-28.51 21.62a16 16 0 0 0-6.07 15.69l36.9 197.22c5.3 7.58 14.49 14.86 26.83 20.75z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFrostyHead = {\n prefix: 'fas',\n iconName: 'frosty-head',\n icon: [384, 512, [], \"f79b\", \"M320 16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v192h256V16zm48 224H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h24.4C29.9 310.1 24 334.8 24 360.9c0 59.9 31.3 112.1 78.2 142 10.2 6.5 22.5 9.1 34.6 9.1h109.6c14.7 0 29.1-4.6 41.1-13 51.4-35.8 82.2-99.4 69.5-169.6-2.6-14.5-7.5-28.3-13.7-41.4H368c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM130.7 362.7c-11.8 0-21.3-9.6-21.3-21.3 0-11.8 9.6-21.3 21.3-21.3 11.8 0 21.3 9.6 21.3 21.3 0 11.7-9.6 21.3-21.3 21.3zM192 464s-32-46.3-32-64c0-17.7 14.3-32 32-32s32 14.3 32 32-32 64-32 64zm61.3-101.3c-11.8 0-21.3-9.6-21.3-21.3 0-11.8 9.6-21.3 21.3-21.3 11.8 0 21.3 9.6 21.3 21.3.1 11.7-9.5 21.3-21.3 21.3z\"]\n};\nvar faFrown = {\n prefix: 'fas',\n iconName: 'frown',\n icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"]\n};\nvar faFrownOpen = {\n prefix: 'fas',\n iconName: 'frown-open',\n icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faFunction = {\n prefix: 'fas',\n iconName: 'function',\n icon: [640, 512, [], \"f661\", \"M288.73 320c0-52.34 16.96-103.22 48.01-144.95 5.17-6.94 4.45-16.54-2.15-22.14l-24.69-20.98c-7-5.95-17.83-5.09-23.38 2.23C246.09 187.42 224 252.78 224 320c0 67.23 22.09 132.59 62.52 185.84 5.56 7.32 16.38 8.18 23.38 2.23l24.69-20.99c6.59-5.61 7.31-15.2 2.15-22.14-31.06-41.71-48.01-92.6-48.01-144.94zM224 16c0-8.84-7.16-16-16-16h-48C102.56 0 56 46.56 56 104v64H16c-8.84 0-16 7.16-16 16v48c0 8.84 7.16 16 16 16h40v128c0 13.2-10.8 24-24 24H16c-8.84 0-16 7.16-16 16v48c0 8.84 7.16 16 16 16h16c57.44 0 104-46.56 104-104V248h40c8.84 0 16-7.16 16-16v-48c0-8.84-7.16-16-16-16h-40v-64c0-13.2 10.8-24 24-24h48c8.84 0 16-7.16 16-16V16zm353.48 118.16c-5.56-7.32-16.38-8.18-23.38-2.23l-24.69 20.98c-6.59 5.61-7.31 15.2-2.15 22.14 31.05 41.71 48.01 92.61 48.01 144.95 0 52.34-16.96 103.23-48.01 144.95-5.17 6.94-4.45 16.54 2.15 22.14l24.69 20.99c7 5.95 17.83 5.09 23.38-2.23C617.91 452.57 640 387.22 640 320c0-67.23-22.09-132.59-62.52-185.84zm-54.17 231.9L477.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L432 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L386.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L432 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63z\"]\n};\nvar faFunnelDollar = {\n prefix: 'fas',\n iconName: 'funnel-dollar',\n icon: [640, 512, [], \"f662\", \"M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [], \"f1e3\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\"]\n};\nvar faGalaxy = {\n prefix: 'fas',\n iconName: 'galaxy',\n icon: [512, 512, [], \"e008\", \"M506.578,274.10351C489.78116,202.99807,431.23821,146.26567,359.5898,131.959a194.38794,194.38794,0,0,0-101.80269,6.61719,143.73889,143.73889,0,0,1,85.51364-110.7441C356.6152,22.13681,353.61715,2.41416,339.207.963a196.56477,196.56477,0,0,0-65.10349,4.459C202.99807,22.21884,146.26567,80.76179,131.959,152.4102a194.38794,194.38794,0,0,0,6.61719,101.80269,143.73889,143.73889,0,0,1-110.7441-85.51364C22.13681,155.3848,2.41416,158.38285.963,172.793a196.56477,196.56477,0,0,0,4.459,65.10349C22.21884,309.00193,80.76179,365.73433,152.4102,380.041a194.38794,194.38794,0,0,0,101.80269-6.61719,143.73889,143.73889,0,0,1-85.51364,110.7441c-13.31445,5.69531-10.3164,25.418,4.09375,26.86913a196.56477,196.56477,0,0,0,65.10349-4.459C309.00193,489.78116,365.73433,431.23821,380.041,359.5898a194.38794,194.38794,0,0,0-6.61719-101.80269,143.73889,143.73889,0,0,1,110.7441,85.51364c5.69531,13.31445,25.418,10.3164,26.86913-4.09375A196.56477,196.56477,0,0,0,506.578,274.10351ZM256,304a48,48,0,1,1,48-48A47.99985,47.99985,0,0,1,256,304Z\"]\n};\nvar faGameBoard = {\n prefix: 'fas',\n iconName: 'game-board',\n icon: [512, 512, [], \"f867\", \"M256 160h-96v96h96zm0 192h96v-96h-96zM480 0H32A32 32 0 0 0 0 32v448a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zm-32 160h-96v96h96v96h-96v96h-96v-96h-96v96H64v-96h96v-96H64v-96h96V64h96v96h96V64h96z\"]\n};\nvar faGameBoardAlt = {\n prefix: 'fas',\n iconName: 'game-board-alt',\n icon: [512, 512, [], \"f868\", \"M480 0H32A32 32 0 0 0 0 32v448a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zm-32 256H256v192H64V256h192V64h192z\"]\n};\nvar faGameConsoleHandheld = {\n prefix: 'fas',\n iconName: 'game-console-handheld',\n icon: [384, 512, [], \"f8bb\", \"M352 0H32A32 32 0 0 0 0 32v448a32 32 0 0 0 32 32h256a96 96 0 0 0 96-96V32a32 32 0 0 0-32-32zM160 344a8 8 0 0 1-8 8h-24v24a8 8 0 0 1-8 8h-16a8 8 0 0 1-8-8v-24H72a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h24v-24a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v24h24a8 8 0 0 1 8 8zm72 40a24 24 0 1 1 24-24 24 24 0 0 1-24 24zM112 224a16 16 0 0 1-16-16V80a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v112a32 32 0 0 1-32 32zm184 112a24 24 0 1 1 24-24 24 24 0 0 1-24 24z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGamepadAlt = {\n prefix: 'fas',\n iconName: 'gamepad-alt',\n icon: [640, 512, [], \"f8bc\", \"M638.59 368.22l-33.37-211.59c-8.86-50.26-48.4-90.77-100.66-103.13h-.07a803.19 803.19 0 0 0-369 0C83.17 65.86 43.64 106.36 34.78 156.63L1.41 368.22C-8.9 426.73 38.8 480 101.51 480c49.67 0 93.77-30.07 109.48-74.64l7.52-21.36h203l7.49 21.36C444.72 449.93 488.82 480 538.49 480c62.71 0 110.41-53.27 100.1-111.78zM280 236a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52h-52a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm152 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGarage = {\n prefix: 'fas',\n iconName: 'garage',\n icon: [640, 512, [], \"e009\", \"M128,512H512V352H128.11Zm144-96h96a16,16,0,0,1,0,32H272a16,16,0,0,1,0-32ZM128,320H511.47l.53-96H128S128,320,128,320ZM610.5,117,338.41,3.67A57.4,57.4,0,0,0,320,0,57.4,57.4,0,0,0,301.5,3.67L29.5,117A48.11,48.11,0,0,0,0,161.28V496a16,16,0,0,0,16,16H80a16,16,0,0,0,16-16V224c0-17.59,14.59-32,32.59-32H511.41c18,0,32.59,14.41,32.59,32V496a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16V161.28A48.11,48.11,0,0,0,610.5,117Z\"]\n};\nvar faGarageCar = {\n prefix: 'fas',\n iconName: 'garage-car',\n icon: [640, 512, [], \"e00a\", \"M610.5,117,338.41,3.67A57.4,57.4,0,0,0,320,0,57.4,57.4,0,0,0,301.5,3.67L29.5,117A48.11,48.11,0,0,0,0,161.28V496a16,16,0,0,0,16,16H80a16,16,0,0,0,16-16V224c0-17.59,14.59-32,32.59-32H511.41c18,0,32.59,14.41,32.59,32V496a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16V161.28A48.11,48.11,0,0,0,610.5,117Zm-145,238.42-15.75-63A69.09,69.09,0,0,0,382.61,240H257.39a69.09,69.09,0,0,0-67.11,52.39l-15.75,63A47.9,47.9,0,0,0,144,400v32c0,11.72,6.61,21.52,16,27.1V488a24,24,0,0,0,24,24h32a24,24,0,0,0,24-24V464H400v24a24,24,0,0,0,24,24h32a24,24,0,0,0,24-24V459.1c9.39-5.58,16-15.38,16-27.1V400A47.9,47.9,0,0,0,465.47,355.4ZM236.84,304.05A21.15,21.15,0,0,1,257.39,288H382.61a21.15,21.15,0,0,1,20.55,16.05l12,47.95H224.86ZM208,431.85c-14.4,0-24-9.56-24-23.92S193.6,384,208,384s36,21.53,36,35.89S222.4,431.85,208,431.85Zm224,0c-14.4,0-36,2.39-36-12S417.6,384,432,384s24,9.58,24,23.93S446.4,431.85,432,431.85Z\"]\n};\nvar faGarageOpen = {\n prefix: 'fas',\n iconName: 'garage-open',\n icon: [640, 512, [], \"e00b\", \"M128,224v64H511.47l.53-64S128,224,128,224ZM465.47,355.4,456.62,320H407.14l8,32H224.86l8-32H183.38l-8.85,35.4A47.9,47.9,0,0,0,144,400v32c0,11.72,6.61,21.52,16,27.1V488a24,24,0,0,0,24,24h32a24,24,0,0,0,24-24V464H400v24a24,24,0,0,0,24,24h32a24,24,0,0,0,24-24V459.1c9.39-5.58,16-15.38,16-27.1V400A47.9,47.9,0,0,0,465.47,355.4ZM208,431.85c-14.4,0-24-9.56-24-23.92S193.6,384,208,384s36,21.53,36,35.89S222.4,431.85,208,431.85Zm224,0c-14.4,0-36,2.39-36-12S417.6,384,432,384s24,9.58,24,23.93S446.4,431.85,432,431.85ZM610.5,117,338.41,3.67A57.4,57.4,0,0,0,320,0,57.4,57.4,0,0,0,301.5,3.67L29.5,117A48.11,48.11,0,0,0,0,161.28V496a16,16,0,0,0,16,16H80a16,16,0,0,0,16-16V224c0-17.59,14.59-32,32.59-32H511.41c18,0,32.59,14.41,32.59,32V496a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16V161.28A48.11,48.11,0,0,0,610.5,117Z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [], \"f52f\", \"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\"]\n};\nvar faGasPumpSlash = {\n prefix: 'fas',\n iconName: 'gas-pump-slash',\n icon: [640, 512, [], \"f5f4\", \"M633.82 458.1l-65.45-50.58c4.72-9.54 7.63-20.15 7.63-31.52V152.57c0-16.97-6.74-33.25-18.75-45.26l-80.97-80.97c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L480 97.94V160c0 28.14 20.93 51.27 48 55.19V376c0 .1-.05.18-.05.27L384 265.02V64c0-35.35-28.65-64-64-64H160c-28.65 0-52.62 18.96-60.78 44.92L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM96 416h274.03L96 204.21V416zm304 32H80c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [], \"f0e3\", \"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [576, 512, [], \"f3a5\", \"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [288, 512, [], \"f22d\", \"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [], \"f6e2\", \"M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [], \"f06b\", \"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faGiftCard = {\n prefix: 'fas',\n iconName: 'gift-card',\n icon: [576, 512, [], \"f663\", \"M528 128h-58.07c6.22-12.06 10.07-25.52 10.07-40 0-48.52-39.48-88-88-88-41.6 0-68.51 21.34-103.04 68.33C254.44 21.33 227.53 0 185.93 0c-48.52 0-88 39.48-88 88 0 14.48 3.85 27.94 10.07 40H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zM392 48c22.06 0 40 17.94 40 40 0 22.05-17.94 40-40 40h-86.07c51.36-76.47 65.72-80 86.07-80zM145.93 88c0-22.06 17.94-40 40-40 19.94 0 34.58 3.27 86.07 80h-86.07c-22.06 0-40-17.95-40-40zm60.13 104l-35.72 35.72c-6.25 6.25-6.25 16.38 0 22.63l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0L273.94 192h28.13l69.65 69.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L369.94 192H512v128H64V192h142.06zM64 448v-64h448v64H64z\"]\n};\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z\"]\n};\nvar faGingerbreadMan = {\n prefix: 'fas',\n iconName: 'gingerbread-man',\n icon: [416, 512, [], \"f79d\", \"M322.2 304H352c38.9 0 69.6-34.7 63.1-74.8-5.1-31.5-34.7-53.2-66.5-53.2h-65.9c-7.1 0-10.5-8.4-5.5-13.5 20.8-21.6 31.6-52.8 24.9-86.3-7.5-37.5-38.5-67.8-76-74.6C165-9.4 112 37.1 112 96c0 25.7 10.2 49.1 26.7 66.3 5 5.2 1.7 13.7-5.5 13.7H67.4C35.5 176 6 197.8.9 229.2-5.6 269.3 25.1 304 64 304h29.8c10.1 0 18.2 8.2 18.2 18.2 0 4.3-1.5 8.4-4.2 11.7l-58.2 69.8c-23.3 27.9-21.6 72.4 7.1 94.7C68.3 507.6 82.2 512 96 512c18.3 0 36.5-7.8 49.2-23l38.3-45.9c12.8-15.4 36.4-15.4 49.2 0L271 489c12.7 15.2 30.8 23 49.2 23 13.8 0 27.7-4.4 39.3-13.5 28.7-22.4 30.4-66.8 7.1-94.7L308.4 334c-2.7-3.3-4.2-7.4-4.2-11.7-.2-10.1 8-18.3 18-18.3zM176 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-144c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faGlass = {\n prefix: 'fas',\n iconName: 'glass',\n icon: [384, 512, [], \"f804\", \"M354 0H34A32 32 0 0 0 2.06 34l32 448A32 32 0 0 0 66 512h256a32 32 0 0 0 31.94-30l32-448A32 32 0 0 0 354 0zm-34.37 64l-6.86 96H75.22l-6.86-96z\"]\n};\nvar faGlassChampagne = {\n prefix: 'fas',\n iconName: 'glass-champagne',\n icon: [256, 512, [], \"f79e\", \"M216 464h-56V347.7c60.7-15.2 103.3-72 95-135.4L228 27.4C225.7 11.7 212.2 0 196.3 0H59.7C43.8 0 30.3 11.7 28 27.4L1 212.3c-8.3 63.4 34.3 120.2 95 135.4V464H40c-22.1 0-40 17.9-40 40 0 4.4 3.6 8 8 8h240c4.4 0 8-3.6 8-8 0-22.1-17.9-40-40-40zM61.8 128l11.7-80h109l11.7 80H61.8z\"]\n};\nvar faGlassCheers = {\n prefix: 'fas',\n iconName: 'glass-cheers',\n icon: [640, 512, [], \"f79f\", \"M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z\"]\n};\nvar faGlassCitrus = {\n prefix: 'fas',\n iconName: 'glass-citrus',\n icon: [512, 512, [], \"f869\", \"M368 0c-62.61 0-115.35 40.2-135.18 96h52.54C302 67.45 332.63 48 368 48a96.11 96.11 0 0 1 96 96c0 50.07-38.67 90.84-87.63 95.15l-4.84 48.49C449.39 285.73 512 222.32 512 144A144 144 0 0 0 368 0zm-48 128H32A32 32 0 0 0 .16 163.18l32 320A32 32 0 0 0 64 512h224a32 32 0 0 0 31.84-28.82l32-320A32 32 0 0 0 320 128zm-41.76 128H73.76l-6.4-64h217.28z\"]\n};\nvar faGlassMartini = {\n prefix: 'fas',\n iconName: 'glass-martini',\n icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\"]\n};\nvar faGlassMartiniAlt = {\n prefix: 'fas',\n iconName: 'glass-martini-alt',\n icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n prefix: 'fas',\n iconName: 'glass-whiskey',\n icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z\"]\n};\nvar faGlassWhiskeyRocks = {\n prefix: 'fas',\n iconName: 'glass-whiskey-rocks',\n icon: [512, 512, [], \"f7a1\", \"M252.1 345.4l45.3 45.3c12.5 12.5 32.8 12.5 45.3 0l45.3-45.3c12.5-12.5 12.5-32.8 0-45.3l-45.3-45.3c-12.5-12.5-32.8-12.5-45.3 0l-45.3 45.3c-12.5 12.5-12.5 32.8 0 45.3zM480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-66.3 249.4c9.9 11.6 15.6 26 15.6 41.4 0 17.1-6.7 33.2-18.7 45.3l-45.3 45.3C353.2 425.3 337.1 432 320 432c-17.1 0-33.2-6.7-45.3-18.7L229.5 368H160c-35.3 0-64-28.7-64-64v-38.9L69.4 96h373.2l-28.9 185.4zM160 336h52.2c-.9-4.3-1.4-8.7-1.4-13.3 0-17.1 6.7-33.2 18.7-45.3L256 251v-11c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"]\n};\nvar faGlassesAlt = {\n prefix: 'fas',\n iconName: 'glasses-alt',\n icon: [576, 512, [], \"f5f5\", \"M560.51 225.9L528.75 98.64C522.05 71.78 495.01 32 443.33 32c-15.63 0-23.03 2.94-43.02 9.6-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.24 6.7 8.48 10.94 15.18 10.94 3.54 0 4.82-.74 18.23-5.21 26.07-8.68 48.2 6.13 53.53 27.54l29.67 118.68C490.97 215.88 466.47 208 440 208c-55.09 0-102.27 32.91-123.65 80h-56.7c-21.38-47.09-68.56-80-123.65-80-26.47 0-50.97 7.88-71.86 20.96l29.67-118.68c5.32-21.41 27.46-36.22 53.53-27.54 13.42 4.47 14.7 5.21 18.23 5.21 6.7 0 12.94-4.24 15.18-10.94l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24C155.7 34.94 148.3 32 132.67 32 81 32 53.95 71.78 47.25 98.64L15.49 225.9C2.16 279.34 0 300.12 0 344c0 75.11 60.89 136 136 136 72.37 0 130.97-56.69 135.19-128h33.61c4.22 71.31 62.82 128 135.19 128 75.11 0 136-60.89 136-136 .01-43.88-2.15-64.66-15.48-118.1zM136 416c-39.7 0-72-32.3-72-72s32.3-72 72-72 72 32.3 72 72-32.3 72-72 72zm304 0c-39.7 0-72-32.3-72-72s32.3-72 72-72 72 32.3 72 72-32.3 72-72 72z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [496, 512, [], \"f0ac\", \"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\"]\n};\nvar faGlobeAfrica = {\n prefix: 'fas',\n iconName: 'globe-africa',\n icon: [496, 512, [], \"f57c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\"]\n};\nvar faGlobeAmericas = {\n prefix: 'fas',\n iconName: 'globe-americas',\n icon: [496, 512, [], \"f57d\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"]\n};\nvar faGlobeAsia = {\n prefix: 'fas',\n iconName: 'globe-asia',\n icon: [496, 512, [], \"f57e\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\"]\n};\nvar faGlobeEurope = {\n prefix: 'fas',\n iconName: 'globe-europe',\n icon: [496, 512, [], \"f7a2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z\"]\n};\nvar faGlobeSnow = {\n prefix: 'fas',\n iconName: 'globe-snow',\n icon: [448, 512, [], \"f7a3\", \"M384 416H64l-47.4 71.1c-7.1 10.7.5 24.9 13.3 24.9h388.2c12.8 0 20.4-14.2 13.3-24.9L384 416zm-192-32v-32h-57.9c-14.2 0-22-15-12.9-24.9l65.5-71.1h-30.1c-10.7 0-16.5-11.2-9.7-18.7l67.4-73.2c5-5.5 14.3-5.5 19.3 0l67.4 73.2c6.8 7.4 1 18.7-9.7 18.7h-30.1l65.5 71.1c9.1 9.9 1.3 24.9-12.9 24.9H256v32h124.1c41.7-40.6 67.9-97.1 67.9-160C448 100.3 347.7 0 224 0S0 100.3 0 224c0 62.9 26.1 119.4 67.9 160H192zm144-224c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm-96-96c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zM80 224c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faGlobeStand = {\n prefix: 'fas',\n iconName: 'globe-stand',\n icon: [448, 512, [], \"f5f6\", \"M321.14 305.14c62.48-62.48 62.48-163.79 0-226.27-62.48-62.48-163.79-62.48-226.27 0-62.48 62.48-62.48 163.79 0 226.27s163.78 62.48 226.27 0zM348.12 464h-92.03v-36.98c44.6-9.01 87.14-30.71 121.75-65.31 85.25-85.22 92.73-218.44 22.91-312.38l10.7-10.7c6.25-6.25 6.25-16.38 0-22.63L400.14 4.69c-6.25-6.25-16.38-6.25-22.64 0L334.47 47.7c3.18 2.79 6.39 5.52 9.41 8.53 74.89 74.86 74.89 196.67 0 271.53C307.61 364.03 259.37 384 208.07 384s-99.53-19.97-135.81-56.24c-3.07-3.07-5.25-6.65-8.07-9.88l-59.5 59.5c-6.25 6.25-6.25 16.38 0 22.63L16 411.31c6.25 6.25 16.38 6.25 22.64 0l26.71-26.7c37.78 28.06 81.91 43.6 126.72 46.64V464h-92.03c-19.89 0-36.01 16.12-36.01 36 0 6.63 5.37 12 12 12h296.1c6.63 0 12-5.37 12-12 0-19.88-16.12-36-36.01-36z\"]\n};\nvar faGolfBall = {\n prefix: 'fas',\n iconName: 'golf-ball',\n icon: [416, 512, [], \"f450\", \"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\"]\n};\nvar faGolfClub = {\n prefix: 'fas',\n iconName: 'golf-club',\n icon: [640, 512, [], \"f451\", \"M638.4 29.9L424.3 475.7c-10.7 22.2-33.1 36.3-57.7 36.3H64c-35.3 0-64-28.7-64-64v-8h120c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H0v-48h120c4.4 0 8-3.6 8-8v-32c0-4.4-3.6-8-8-8H0v-26.9c0-40.1 36.4-70.3 75.8-62.9l389.7 73.1L595.2 9c3.8-8 13.4-11.3 21.4-7.4L631 8.5c7.9 3.9 11.2 13.5 7.4 21.4z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [], \"f19d\", \"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\"]\n};\nvar faGramophone = {\n prefix: 'fas',\n iconName: 'gramophone',\n icon: [384, 512, [], \"f8bd\", \"M69.56 317.08c62.84-43.05 161.76-94.4 238.6-73.8A26.79 26.79 0 0 1 328 269.15a34.81 34.81 0 0 1-34.78 34.77H184a24 24 0 0 0-24 24v24h133.22A82.87 82.87 0 0 0 376 269.15a74.89 74.89 0 0 0-55.41-72.27C243.17 176.13 183 80.83 150.84 13.62 141.2-6.5 111.76-3.68 106 17.79L32.82 291.06c-5.82 21.62 18.53 38.49 36.74 26.02zM368 448h-16v-32a32 32 0 0 0-32-32H64a32 32 0 0 0-32 32v32H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [], \"f531\", \"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faGrimace = {\n prefix: 'fas',\n iconName: 'grimace',\n icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\"]\n};\nvar faGrin = {\n prefix: 'fas',\n iconName: 'grin',\n icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinAlt = {\n prefix: 'fas',\n iconName: 'grin-alt',\n icon: [496, 512, [], \"f581\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeam = {\n prefix: 'fas',\n iconName: 'grin-beam',\n icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'grin-beam-sweat',\n icon: [504, 512, [], \"f583\", \"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinHearts = {\n prefix: 'fas',\n iconName: 'grin-hearts',\n icon: [496, 512, [], \"f584\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\"]\n};\nvar faGrinSquint = {\n prefix: 'fas',\n iconName: 'grin-squint',\n icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinSquintTears = {\n prefix: 'fas',\n iconName: 'grin-squint-tears',\n icon: [512, 512, [], \"f586\", \"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\"]\n};\nvar faGrinStars = {\n prefix: 'fas',\n iconName: 'grin-stars',\n icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\"]\n};\nvar faGrinTears = {\n prefix: 'fas',\n iconName: 'grin-tears',\n icon: [640, 512, [], \"f588\", \"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinTongue = {\n prefix: 'fas',\n iconName: 'grin-tongue',\n icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'grin-tongue-squint',\n icon: [496, 512, [], \"f58a\", \"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\"]\n};\nvar faGrinTongueWink = {\n prefix: 'fas',\n iconName: 'grin-tongue-wink',\n icon: [496, 512, [], \"f58b\", \"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinWink = {\n prefix: 'fas',\n iconName: 'grin-wink',\n icon: [496, 512, [], \"f58c\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\"]\n};\nvar faGripHorizontal = {\n prefix: 'fas',\n iconName: 'grip-horizontal',\n icon: [448, 512, [], \"f58d\", \"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [512, 512, [], \"f7a4\", \"M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [256, 512, [], \"f7a5\", \"M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faGuitarElectric = {\n prefix: 'fas',\n iconName: 'guitar-electric',\n icon: [512, 512, [], \"f8be\", \"M511.21 39.54a48.1 48.1 0 0 0-37.79-38.23C450.48-3 450.66.78 366.74 54.9A32.12 32.12 0 0 0 352 81.82v33.25L243.76 223.23a39.42 39.42 0 0 1-3.18-38.43l17.29-37.13a18.82 18.82 0 0 0-30.38-21.24l-38.31 38.28a77.44 77.44 0 0 0-18.24 28.84 77.63 77.63 0 0 1-40.52 44.37L54 273.29C-3.23 296.15-18.4 370 25.16 413.53l73.39 73.33c43.56 43.53 117.45 28.37 140.35-28.78l35.4-76.39a77.62 77.62 0 0 1 44.41-40.49 77.68 77.68 0 0 0 28.86-18.2l21.56-21.55a19.87 19.87 0 0 0-20.1-33L325.31 276a39.6 39.6 0 0 1-36.75-7.11L461.6 96c.82.05 1.56.35 2.4.35a48 48 0 0 0 47.21-56.81zm-329.56 354.8l-11.31 11.31a8 8 0 0 1-11.31 0L106.34 353a8 8 0 0 1 0-11.32l11.31-11.31a8 8 0 0 1 11.32 0L181.65 383a8 8 0 0 1 0 11.34zm64-64l-11.31 11.31a8 8 0 0 1-11.31 0L170.34 289a8 8 0 0 1 0-11.32l11.31-11.31a8 8 0 0 1 11.32 0L245.65 319a8 8 0 0 1 0 11.34z\"]\n};\nvar faGuitars = {\n prefix: 'fas',\n iconName: 'guitars',\n icon: [512, 512, [], \"f8bf\", \"M229.27 300.21A74.51 74.51 0 0 0 237.7 266c0-29.14-17-54.82-43.14-71.17-12.83-8-27.53-12-42.56-13.88v-54.22l16.6-33.21a29.17 29.17 0 0 0 3.08-13v-54.1A26.42 26.42 0 0 0 145.25 0h-34.53A26.41 26.41 0 0 0 84.3 26.41v54.08a29.12 29.12 0 0 0 3.07 13L104 126.74V181c-15 1.84-29.74 5.84-42.58 13.83a103.31 103.31 0 0 0-18.58 14.67c-15.39 15.39-24.62 35-24.62 56.58a74.37 74.37 0 0 0 8.42 34.2c8 15.65 6 35.59-4.88 48.78C8.11 365.55-.07 385.43 0 407c-.07 58 57.34 105 128 105 39.89 0 75.54-15 99-38.47 1.28-1.27 2.23-2.75 3.43-4.07a111.36 111.36 0 0 1 2.32-80.3L243 361.42a102.52 102.52 0 0 0-8.81-12.42c-10.89-13.16-12.89-33.16-4.92-48.79zm-73 32.08a40 40 0 1 1 0-56.58 40 40 0 0 1 .02 56.58zm349.19 68.53l-26.93-73.45a72.1 72.1 0 0 1 2.58-55.79 72.13 72.13 0 0 0 7-30.94v-28.32a18.47 18.47 0 0 0-34.88-8.47l-10.61 20.55c-5.36 10.37-15.35 17-26.62 19l-8-.1V73.38a34.72 34.72 0 0 0 5.09-3.8 40.77 40.77 0 0 0-51.44-62.75c-16.39 11.15-14 13.35-31.85 96.24a27.3 27.3 0 0 0 7.33 25L360 151v91.66l-8-.11c-11.31-3.11-20.84-11-25-22.37l-13-35.76a17.49 17.49 0 0 0-33.92 6v50.33a72.07 72.07 0 0 0 7 30.93 72.07 72.07 0 0 1 2.53 55.78l-27 73.48C240 453.53 278.54 512 335.76 512h96.41c57.23-.06 95.83-58.59 73.31-111.18zM432 392a8 8 0 0 1-8 8h-80a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h80a8 8 0 0 1 8 8zm0-64.12a8 8 0 0 1-8 8h-80a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h80a8 8 0 0 1 8 8z\"]\n};\nvar faHSquare = {\n prefix: 'fas',\n iconName: 'h-square',\n icon: [448, 512, [], \"f0fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\"]\n};\nvar faH1 = {\n prefix: 'fas',\n iconName: 'h1',\n icon: [576, 512, [], \"f313\", \"M304 96h-98.94A13.06 13.06 0 0 0 192 109.06v37.88A13.06 13.06 0 0 0 205.06 160H224v64H96v-64h18.94A13.06 13.06 0 0 0 128 146.94V112a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v34.94A13.06 13.06 0 0 0 13.06 160H32v192H13.06A13.06 13.06 0 0 0 0 365.06V400a16 16 0 0 0 16 16h98.94A13.06 13.06 0 0 0 128 402.94v-37.88A13.06 13.06 0 0 0 114.94 352H96v-64h128v64h-18.94A13.06 13.06 0 0 0 192 365.06V400a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-34.94A13.06 13.06 0 0 0 306.94 352H288V160h18.94A13.06 13.06 0 0 0 320 146.94V112a16 16 0 0 0-16-16zm256 256h-48V120a24 24 0 0 0-24-24h-40a24 24 0 0 0-21.44 13.26l-24 48A24 24 0 0 0 424 192h24v160h-48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faH2 = {\n prefix: 'fas',\n iconName: 'h2',\n icon: [576, 512, [], \"f314\", \"M560 352H440.79c17-42.95 135.21-66.57 135.21-159.62C576 132.55 528.33 96 469.14 96c-43.83 0-81.41 21.38-103.42 57a15.66 15.66 0 0 0 4.75 21.4l28.26 18.6a16.15 16.15 0 0 0 21.86-3.83c10.77-14.86 24.94-26 43.85-26s38.22 10.46 38.22 33.84c0 52.18-142.1 73.21-142.1 184.56a155.06 155.06 0 0 0 1.71 20.66A15.94 15.94 0 0 0 378.14 416H560a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM304 96h-98.94A13.06 13.06 0 0 0 192 109.06v37.88A13.06 13.06 0 0 0 205.06 160H224v64H96v-64h18.94A13.06 13.06 0 0 0 128 146.94V112a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v34.94A13.06 13.06 0 0 0 13.06 160H32v192H13.06A13.06 13.06 0 0 0 0 365.06V400a16 16 0 0 0 16 16h98.94A13.06 13.06 0 0 0 128 402.94v-37.88A13.06 13.06 0 0 0 114.94 352H96v-64h128v64h-18.94A13.06 13.06 0 0 0 192 365.06V400a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-34.94A13.06 13.06 0 0 0 306.94 352H288V160h18.94A13.06 13.06 0 0 0 320 146.94V112a16 16 0 0 0-16-16z\"]\n};\nvar faH3 = {\n prefix: 'fas',\n iconName: 'h3',\n icon: [576, 512, [], \"f315\", \"M499 217.69l64.4-72.31a15.48 15.48 0 0 0 4-10.31v-23.32A16 16 0 0 0 551.12 96H384a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h85.18c-2.29 2.45-4.65 5-7.19 7.9l-53.1 61.1a18 18 0 0 0-3.83 10.17 18.36 18.36 0 0 0 1.38 6.34l8.41 18.59c2.35 5.21 9 9.42 14.84 9.42h15.95c28.94 0 57.79 10.32 57.79 38.48 0 21.32-19.93 36.79-47.39 36.79-22.08 0-41.18-9.17-57.7-22.83a16.46 16.46 0 0 0-23.87 3.34l-19.75 28.8a15.46 15.46 0 0 0 2.53 20.35C384.9 403.21 422 416 459.51 416c71 0 116.49-48.86 116.49-106.06 0-47.3-32.73-80.89-77-92.25zM304 96h-98.94A13.06 13.06 0 0 0 192 109.06v37.88A13.06 13.06 0 0 0 205.06 160H224v64H96v-64h18.94A13.06 13.06 0 0 0 128 146.94V112a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v34.94A13.06 13.06 0 0 0 13.06 160H32v192H13.06A13.06 13.06 0 0 0 0 365.06V400a16 16 0 0 0 16 16h98.94A13.06 13.06 0 0 0 128 402.94v-37.88A13.06 13.06 0 0 0 114.94 352H96v-64h128v64h-18.94A13.06 13.06 0 0 0 192 365.06V400a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-34.94A13.06 13.06 0 0 0 306.94 352H288V160h18.94A13.06 13.06 0 0 0 320 146.94V112a16 16 0 0 0-16-16z\"]\n};\nvar faH4 = {\n prefix: 'fas',\n iconName: 'h4',\n icon: [576, 512, [], \"f86a\", \"M304 96h-98.94A13.06 13.06 0 0 0 192 109.06v37.88A13.06 13.06 0 0 0 205.06 160H224v64H96v-64h18.94A13.06 13.06 0 0 0 128 146.94V112a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v34.94A13.06 13.06 0 0 0 13.06 160H32v192H13.06A13.06 13.06 0 0 0 0 365.06V400a16 16 0 0 0 16 16h98.94A13.06 13.06 0 0 0 128 402.94v-37.88A13.06 13.06 0 0 0 114.94 352H96v-64h128v64h-18.94A13.06 13.06 0 0 0 192 365.06V400a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-34.94A13.06 13.06 0 0 0 306.94 352H288V160h18.94A13.06 13.06 0 0 0 320 146.94V112a16 16 0 0 0-16-16zm256 128h-16V112a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v112h-64V112a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v144a32 32 0 0 0 32 32h96v112a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHamburger = {\n prefix: 'fas',\n iconName: 'hamburger',\n icon: [512, 512, [], \"f805\", \"M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z\"]\n};\nvar faHammerWar = {\n prefix: 'fas',\n iconName: 'hammer-war',\n icon: [384, 512, [], \"f6e4\", \"M346.74 32.44L224 52.9V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v36.9L37.26 32.44C17.76 29.19 0 44.23 0 64.01v191.98c0 19.77 17.76 34.81 37.26 31.56L192 261.77l154.74 25.79C366.25 290.81 384 275.77 384 256V64.01c0-19.78-17.76-34.82-37.26-31.57zM160 299.54V496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V299.54l-32-5.33-32 5.33z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faHandHeart = {\n prefix: 'fas',\n iconName: 'hand-heart',\n icon: [448, 512, [], \"f4bc\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zm-62.9 261.2l-72.6 71.4c-4.7 4.6-12.3 4.6-17 0l-72.6-71.4c-21.1-20.7-19.8-55.1 3.7-74.2 20.5-16.7 51.1-13.7 70 4.8l7.4 7.3 7.4-7.3c18.8-18.5 49.4-21.5 70-4.8 23.5 19.1 24.7 53.4 3.7 74.2z\"]\n};\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingBox = {\n prefix: 'fas',\n iconName: 'hand-holding-box',\n icon: [576, 512, [], \"f47b\", \"M112 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H352v128l-64-32-64 32V0H112c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm453.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingMagic = {\n prefix: 'fas',\n iconName: 'hand-holding-magic',\n icon: [576, 512, [], \"f6e5\", \"M224 224c52.94 0 96-43.06 96-96 0 0-32 32-96 32-17.72 0-32-17.5-32-32V96c0-17.64 14.36-32 32-32h128c17.64 0 32 14.36 32 32v32c0 34.3-17.51 66.54-42.09 90.8L288 272l17.81-1.01c77.05-4.36 141.58-65.27 142.18-141.43 0-.52.01-1.04.01-1.56V96c0-52.94-43.06-96-96-96H224c-52.94 0-96 43.06-96 96v32c0 51.14 44.86 96 96 96zm341.28 104.1c-11.83-10.69-30.18-9.96-42.63 0l-92.34 73.87A64.004 64.004 0 0 1 390.33 416H272c-8.84 0-16-7.16-16-16s7.16-16 16-16h78.28c15.94 0 30.72-10.89 33.28-26.63C386.82 337.32 371.43 320 352 320H192c-26.97 0-53.11 9.27-74.06 26.27L71.44 384H16c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h356.77c14.53 0 28.63-4.95 39.98-14.03l151.23-120.99c15.19-12.13 16.38-35.27 1.3-48.88z\"]\n};\nvar faHandHoldingMedical = {\n prefix: 'fas',\n iconName: 'hand-holding-medical',\n icon: [576, 512, [], \"e05c\", \"M159.88,175.82h64v64a16,16,0,0,0,16,16h64a16,16,0,0,0,16-16v-64h64a16,16,0,0,0,16-16v-64a16,16,0,0,0-16-16h-64v-64a16,16,0,0,0-16-16h-64a16,16,0,0,0-16,16v64h-64a16,16,0,0,0-16,16v64A16,16,0,0,0,159.88,175.82ZM568.07,336.13a39.91,39.91,0,0,0-55.93-8.47L392.47,415.84H271.86a16,16,0,0,1,0-32H350.1c16,0,30.75-10.87,33.37-26.61a32.06,32.06,0,0,0-31.62-37.38h-160a117.7,117.7,0,0,0-74.12,26.25l-46.5,37.74H15.87a16.11,16.11,0,0,0-16,16v96a16.11,16.11,0,0,0,16,16h347a104.8,104.8,0,0,0,61.7-20.27L559.6,392A40,40,0,0,0,568.07,336.13Z\"]\n};\nvar faHandHoldingSeedling = {\n prefix: 'fas',\n iconName: 'hand-holding-seedling',\n icon: [576, 512, [], \"f4bf\", \"M480 0h-64c-40.7 0-77.5 15.7-105.8 40.8 25.4 32 40.9 72.2 41.6 116C424.9 142 480 77.5 480 0zM256 160v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V160C320 71.6 248.4 0 160 0H96c0 88.4 71.6 160 160 160zm309.3 168.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingUsd = {\n prefix: 'fas',\n iconName: 'hand-holding-usd',\n icon: [576, 512, [], \"f4c0\", \"M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z\"]\n};\nvar faHandHoldingWater = {\n prefix: 'fas',\n iconName: 'hand-holding-water',\n icon: [576, 512, [], \"f4c1\", \"M288 256c53 0 96-42.1 96-94 0-40-57.1-120.7-83.2-155.6-6.4-8.5-19.2-8.5-25.6 0C249.1 41.3 192 122 192 162c0 51.9 43 94 96 94zm277.3 72.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [576, 512, [], \"f258\", \"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [512, 512, [], \"f806\", \"M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z\"]\n};\nvar faHandPaper = {\n prefix: 'fas',\n iconName: 'hand-paper',\n icon: [448, 512, [], \"f256\", \"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [448, 512, [], \"f25b\", \"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [], \"f0a6\", \"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\"]\n};\nvar faHandReceiving = {\n prefix: 'fas',\n iconName: 'hand-receiving',\n icon: [640, 512, [], \"f47c\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32zm-169.3 41.6L342.4 9.3C330-3.1 310-3.1 297.6 9.3l-96.4 96.4c-12.4 12.3-12.4 32.4 0 44.7l96.4 96.4c12.3 12.3 32.4 12.3 44.7 0l96.4-96.4c12.4-12.4 12.4-32.4 0-44.8z\"]\n};\nvar faHandRock = {\n prefix: 'fas',\n iconName: 'hand-rock',\n icon: [512, 512, [], \"f255\", \"M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\"]\n};\nvar faHandSparkles = {\n prefix: 'fas',\n iconName: 'hand-sparkles',\n icon: [640, 512, [], \"e05d\", \"M106.66,170.64l.09,0,49.55-20.65a7.32,7.32,0,0,0,3.68-6h0a7.29,7.29,0,0,0-3.68-6l-49.57-20.67-.07,0L86,67.68a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L3.7,138A7.29,7.29,0,0,0,0,144H0a7.32,7.32,0,0,0,3.68,6L53.27,170.6l.07,0L74,220.26a6.65,6.65,0,0,0,11.92,0l20.69-49.62ZM471.38,467.41l-1-.42-1-.5a38.67,38.67,0,0,1,0-69.14l1-.49,1-.43,37.49-15.63,15.63-37.48.41-1,.47-.95c3.85-7.74,10.58-13.63,18.35-17.34,0-1.33.25-2.69.27-4V144a32,32,0,0,0-64,0v72a8,8,0,0,1-8,8H456a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H360a8,8,0,0,1-8-8V32a32,32,0,0,0-64,0V216a8,8,0,0,1-8,8H264a8,8,0,0,1-8-8V64a32,32,0,0,0-64,0v241l-23.59-32.49a40,40,0,0,0-64.71,47.09L229.3,492.21A48.07,48.07,0,0,0,268.09,512H465.7c19.24,0,35.65-11.73,43.24-28.79l-.07-.17ZM349.79,339.52,320,351.93l-12.42,29.78a4,4,0,0,1-7.15,0L288,351.93l-29.79-12.41a4,4,0,0,1,0-7.16L288,319.94l12.42-29.78a4,4,0,0,1,7.15,0L320,319.94l29.79,12.42a4,4,0,0,1,0,7.16ZM640,431.91a7.28,7.28,0,0,0-3.68-6l-49.57-20.67-.07,0L566,355.63a6.66,6.66,0,0,0-11.92,0l-20.7,49.63-.05,0L483.7,426a7.28,7.28,0,0,0-3.68,6h0a7.29,7.29,0,0,0,3.68,5.95l49.57,20.67.07,0L554,508.21a6.65,6.65,0,0,0,11.92,0l20.69-49.62h0l.09,0,49.55-20.66a7.29,7.29,0,0,0,3.68-5.95h0Z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [512, 512, [], \"f259\", \"M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [640, 512, [], \"f4c2\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHeart = {\n prefix: 'fas',\n iconName: 'hands-heart',\n icon: [640, 512, [], \"f4c3\", \"M436 17.5c-30.8-26.7-76.7-21.9-104.9 7.7L320 36.9l-11.1-11.6C280.7-4.4 234.8-9.2 204 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.5-33.2 29.7-88.2-5.7-118.8zM204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHelping = {\n prefix: 'fas',\n iconName: 'hands-helping',\n icon: [640, 512, [], \"f4c4\", \"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\"]\n};\nvar faHandsUsd = {\n prefix: 'fas',\n iconName: 'hands-usd',\n icon: [640, 512, [], \"f4c5\", \"M393.3 159.4c-2.9-23-20.7-41.3-42.9-47.7l-50.1-14.3c-3.6-1-6.1-4.4-6.1-8.1 0-4.6 3.8-8.4 8.4-8.4h32.8c3.6 0 7.1.8 10.3 2.2 4.8 2.2 10.4 1.7 14.1-2l17.5-17.5c5.3-5.3 4.7-14.3-1.5-18.4-9.5-6.3-20.4-10.1-31.8-11.5V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v17.6c-30.3 3.6-53.4 31-49.3 63 2.9 23 20.7 41.3 42.9 47.7l50.1 14.3c3.6 1 6.1 4.4 6.1 8.1 0 4.6-3.8 8.4-8.4 8.4h-32.8c-3.6 0-7.1-.8-10.3-2.2-4.8-2.2-10.4-1.7-14.1 2l-17.5 17.5c-5.3 5.3-4.7 14.3 1.5 18.4 9.5 6.3 20.4 10.1 31.8 11.5V240c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16v-17.6c30.3-3.6 53.4-30.9 49.3-63zm-188.5 71c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsWash = {\n prefix: 'fas',\n iconName: 'hands-wash',\n icon: [576, 512, [], \"e05e\", \"M496,224a48,48,0,1,0-48-48A48,48,0,0,0,496,224ZM311.47,178.45A56.77,56.77,0,0,1,328,176a56,56,0,0,1,19,3.49l15.35-48.61A24,24,0,0,0,342,99.74c-11.53-1.35-22.21,6.44-25.71,17.51l-20.9,66.17ZM93.65,386.33c.8-.19,1.54-.54,2.35-.71V359.93a156,156,0,0,1,107.06-148l73.7-22.76L310.92,81.05a24,24,0,0,0-20.33-31.11c-11.53-1.34-22.22,6.45-25.72,17.52L231.42,173.88a8,8,0,0,1-15.26-4.83L259.53,31.26A24,24,0,0,0,239.2.15C227.67-1.19,217,6.6,213.49,17.66L165.56,169.37a8,8,0,1,1-15.26-4.82l38.56-122a24,24,0,0,0-20.33-31.11C157,10,146.32,17.83,142.82,28.9l-60,189.85L80.76,168.7A24,24,0,0,0,56.9,144.55c-13.23-.05-24.72,10.54-24.9,23.86V281.14A123.69,123.69,0,0,0,93.65,386.33ZM519.1,336H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,279.84,498.71,272,487.1,272H288l47.09-17.06a24,24,0,0,0-14.18-45.88L213.19,242.31A123.88,123.88,0,0,0,128,360v25.65a79.78,79.78,0,0,1,58,108.63A118.9,118.9,0,0,0,248,512H456a24,24,0,0,0,23.54-28.76C477.35,471.84,466.71,464,455.1,464H360a8,8,0,0,1,0-16H488a24,24,0,0,0,23.54-28.76C509.35,407.84,498.71,400,487.1,400H360a8,8,0,0,1,0-16H520a24,24,0,0,0,23.54-28.76C541.35,343.84,530.71,336,519.1,336ZM416,64a32,32,0,1,0-32-32A32,32,0,0,0,416,64ZM112,416a48,48,0,1,0,48,48A48,48,0,0,0,112,416Z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\"]\n};\nvar faHandshakeAlt = {\n prefix: 'fas',\n iconName: 'handshake-alt',\n icon: [640, 512, [], \"f4c6\", \"M483.9 338.7L334.6 217.5l-30 27.5c-40.6 37.1-86.8 11.9-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128H16c-8.8 0-16 7.2-16 16v191.9c0 8.8 7.2 16 16 16h130.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1zM624 128H512l-54.6-54.6c-6-6-14.1-9.4-22.6-9.4h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.7 15.7-16.3 40.6-2.1 56 9.6 10.5 35 21.6 56.1 2.7.1-.1.3-.1.4-.2l53-48.5 27-24.7c6.5-5.9 16.6-5.5 22.6 1s5.5 16.6-1 22.6l-26.1 23.9 145.6 118.2c12.2 9.9 19.5 23.5 22.2 37.9H624c8.8 0 16-7.2 16-16V143.9c0-8.8-7.2-15.9-16-15.9z\"]\n};\nvar faHandshakeAltSlash = {\n prefix: 'fas',\n iconName: 'handshake-alt-slash',\n icon: [640, 512, [], \"e05f\", \"M358.59,195.6,504.2,313.8a63.4,63.4,0,0,1,22.21,37.91H624a16.05,16.05,0,0,0,16-16V143.91A16,16,0,0,0,624,128H512L457.41,73.41A32,32,0,0,0,434.8,64H348.91a32,32,0,0,0-21.61,8.41l-88.12,80.68-25.69-19.85L289.09,64H205.3a32,32,0,0,0-22.6,9.41l-20.34,20.3L45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.54,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45L303.4,202.72l32.69-29.92,27-24.7a16,16,0,0,1,21.61,23.61ZM16,128A16.05,16.05,0,0,0,0,144V335.91a16,16,0,0,0,16,16H146.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L23.56,128Z\"]\n};\nvar faHandshakeSlash = {\n prefix: 'fas',\n iconName: 'handshake-slash',\n icon: [640, 512, [], \"e060\", \"M0,128.21V384H64a32,32,0,0,0,32-32V184L23.83,128.21ZM48,320.1a16,16,0,1,1-16,16A16,16,0,0,1,48,320.1Zm80,31.81h18.3l90.5,81.89a64,64,0,0,0,90-9.3l.2-.2,17.91,15.5a37.16,37.16,0,0,0,52.29-5.39l8.8-10.82L128,208.72Zm416-223.7V352.1a32,32,0,0,0,32,32h64V128.21ZM592,352.1a16,16,0,1,1,16-16A16,16,0,0,1,592,352.1ZM303.33,202.67l59.58-54.57a16,16,0,0,1,21.59,23.61L358.41,195.6,504,313.8a73.08,73.08,0,0,1,7.91,7.7V128L457.3,73.41A31.76,31.76,0,0,0,434.7,64H348.8a31.93,31.93,0,0,0-21.6,8.41l-88.07,80.64-25.64-19.81L289.09,64H205.3a32,32,0,0,0-22.6,9.41L162.36,93.72,45.47,3.38A16,16,0,0,0,23,6.19L3.38,31.46A16,16,0,0,0,6.19,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.65-25.27a16,16,0,0,0-2.82-22.45Z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [], \"f6e6\", \"M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n prefix: 'fas',\n iconName: 'hard-hat',\n icon: [512, 512, [], \"f807\", \"M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [], \"f292\", \"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\"]\n};\nvar faHatChef = {\n prefix: 'fas',\n iconName: 'hat-chef',\n icon: [512, 512, [], \"f86b\", \"M416 32a95.17 95.17 0 0 0-57.73 19.74C334.93 20.5 298 0 256 0s-78.93 20.5-102.27 51.74A95.56 95.56 0 0 0 0 128c0 41.74 64 192 64 192h60.09L112 169.25a8 8 0 0 1 7.33-8.61l16-1.28a8 8 0 0 1 8.61 7.34L156.2 320h83.14V168a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v152h84.46l12.27-153.3a8 8 0 0 1 8.61-7.34l16 1.28a8 8 0 0 1 7.33 8.61L387.91 320H448s64-150.26 64-192a96 96 0 0 0-96-96zM64 480a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V352H64z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z\"]\n};\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z\"]\n};\nvar faHatSanta = {\n prefix: 'fas',\n iconName: 'hat-santa',\n icon: [640, 512, [], \"f7a7\", \"M480 384H32c-17.7 0-32 14.3-32 32v32c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-32c0-17.7-14.3-32-32-32zm-96-192l71.7 19.5c2.3-4.1 4.9-8 8.2-11.4.4-14.5 6.2-28.6 17-39.4 2.2-2.2 4.7-4.1 7.2-5.9L435 92.1C402.6 54 355.2 32 305.2 32c-68.6 0-130.4 41.2-156.8 104.5L58.7 352h393.9L384 192zm256 48c0-12.1-8.2-21.9-19.2-25.2 5.5-10.1 4.4-22.8-4.2-31.4s-21.3-9.7-31.4-4.2c-3.3-11-13.1-19.2-25.2-19.2s-21.9 8.2-25.2 19.2c-10.1-5.5-22.8-4.4-31.4 4.2s-9.7 21.3-4.2 31.4c-11 3.3-19.2 13.1-19.2 25.2s8.2 21.9 19.2 25.2c-5.5 10.1-4.4 22.8 4.2 31.4 5.2 5.2 12 7.8 18.9 7.8 4.4 0 8.6-1.5 12.5-3.6 3.3 11 13.1 19.2 25.2 19.2s21.9-8.2 25.2-19.2c4 2.1 8.2 3.6 12.5 3.6 6.8 0 13.6-2.6 18.9-7.8 8.6-8.6 9.7-21.3 4.2-31.4 11-3.3 19.2-13.1 19.2-25.2z\"]\n};\nvar faHatWinter = {\n prefix: 'fas',\n iconName: 'hat-winter',\n icon: [512, 512, [], \"f7a8\", \"M195.2 105.2c-5.5 10.1-4.4 22.8 4.2 31.4 5.2 5.2 12 7.8 18.9 7.8 4.4 0 8.6-1.5 12.5-3.6 3.3 11 13.1 19.2 25.2 19.2s21.9-8.2 25.2-19.2c4 2.1 8.2 3.6 12.5 3.6 6.8 0 13.6-2.6 18.9-7.8 8.6-8.6 9.7-21.3 4.2-31.4 11-3.3 19.2-13.1 19.2-25.2s-8.2-21.9-19.2-25.2c5.5-10.1 4.4-22.8-4.2-31.4s-21.3-9.7-31.4-4.2C277.9 8.2 268.1 0 256 0s-21.9 8.2-25.2 19.2c-10.1-5.5-22.8-4.4-31.4 4.2s-9.7 21.3-4.2 31.4C184.2 58.1 176 67.9 176 80s8.2 21.9 19.2 25.2zM128 270.1l64 32 64-32 64 32 64-32 64 32 7.2-3.6c-19.7-50.2-55.2-104.9-119-140.5-.4.4-.6.8-1 1.2-10.6 10.6-24.6 16.7-39.6 17.2-10.5 9.9-24.5 15.7-39.6 15.7-15.2 0-29.2-5.8-39.6-15.7-14.9-.5-28.9-6.5-39.6-17.2-.4-.4-.6-.8-1-1.2-63.9 35.6-99.4 90.4-119 140.5l7.2 3.6 64-32zM496 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-30.3-118.9l-17.7 8.8-64-32-64 32-64-32-64 32-64-32-64 32-17.7-8.8C32.2 377.8 32 416 32 416h448s-.2-38.2-14.3-86.9z\"]\n};\nvar faHatWitch = {\n prefix: 'fas',\n iconName: 'hat-witch',\n icon: [576, 512, [], \"f6e7\", \"M571.21 426.81l-22.66-22.66c-6.03-6.03-15.49-5.96-21.99-.43C492.89 432.38 450.6 448 405.89 448H170.11c-44.71 0-87.01-15.62-120.68-44.28-6.5-5.53-15.95-5.61-21.99.43L4.79 426.81c-6.44 6.44-6.45 17.25.4 23.25C50.85 490.12 108.8 512 170.11 512h235.78c61.31 0 119.26-21.88 164.93-61.94 6.84-6 6.84-16.81.39-23.25zM224 416v-64c0-17.67 14.33-32 32-32h64c17.67 0 32 14.33 32 32v64h53.89c23.94 0 46.54-5.79 67.29-15.91l-79.6-185.73a64.009 64.009 0 0 1-1.89-45.45l6.35-19.04A32.01 32.01 0 0 1 428.4 128h39.2c13.77 0 26 8.81 30.36 21.88L512 192l30.36-77.24c3.83-11.5.84-24.18-7.73-32.75L465.28 9.37c-10.21-10.2-25.97-12.32-38.5-5.16L260.43 107.18a128.004 128.004 0 0 0-53.47 59.15L103.03 400.19c20.69 10.06 43.23 15.81 67.08 15.81H224zm32 0h64v-64h-64v64z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z\"]\n};\nvar faHdd = {\n prefix: 'fas',\n iconName: 'hdd',\n icon: [576, 512, [], \"f0a0\", \"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faHeadSide = {\n prefix: 'fas',\n iconName: 'head-side',\n icon: [512, 512, [], \"f6e9\", \"M509.21 275c-20.94-47.12-48.44-151.73-73.08-186.75C397.68 33.6 334.56 0 266.09 0H192C85.96 0 0 85.96 0 192c0 56.79 24.8 107.67 64 142.82V512h256v-64h64c35.35 0 64-28.65 64-64v-64h31.96c23.16 0 38.65-23.84 29.25-45zM320 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faHeadSideBrain = {\n prefix: 'fas',\n iconName: 'head-side-brain',\n icon: [512, 512, [], \"f808\", \"M160 178.94V176c0 1-.23 1.89-.29 2.85a2.46 2.46 0 0 1 .29.09zM509.21 275c-20.94-47.12-48.44-151.73-73.08-186.75A207.94 207.94 0 0 0 266.09 0H192C86 0 0 86 0 192a191.28 191.28 0 0 0 64 142.82V512h256v-64h64a64 64 0 0 0 64-64v-64h32a32 32 0 0 0 29.21-45zM336 208h-50.94a47.5 47.5 0 0 1 2.94 16 48 48 0 0 1-48 48 47.5 47.5 0 0 1-16-2.94V320h-64v-50.94a47.5 47.5 0 0 1-16 2.94 48 48 0 0 1-48-48c0-1 .23-1.89.29-2.85A47.88 47.88 0 0 1 112 128a48 48 0 0 1 48-48 47.46 47.46 0 0 1 23.53 6.4 47.76 47.76 0 0 1 80.94 0 47.37 47.37 0 0 1 68.59 25.6H336a48 48 0 0 1 0 96z\"]\n};\nvar faHeadSideCough = {\n prefix: 'fas',\n iconName: 'head-side-cough',\n icon: [640, 512, [], \"e061\", \"M616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304ZM552,416a24,24,0,1,0,24,24A24,24,0,0,0,552,416Zm-64-56a24,24,0,1,0,24,24A24,24,0,0,0,488,360ZM616,464a24,24,0,1,0,24,24A24,24,0,0,0,616,464Zm0-104a24,24,0,1,0,24,24A24,24,0,0,0,616,360Zm-64-40a24,24,0,1,0,24,24A24,24,0,0,0,552,320Zm-74.78-45c-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192C86,0,0,86,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320a32,32,0,0,1,0-64h96V320h32A32,32,0,0,0,477.22,275ZM288,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,288,224Z\"]\n};\nvar faHeadSideCoughSlash = {\n prefix: 'fas',\n iconName: 'head-side-cough-slash',\n icon: [640, 512, [], \"e062\", \"M454.11,319.21c19.56-3.81,31.62-25,23.11-44.21-21-47.12-48.5-151.75-73.12-186.75A208.13,208.13,0,0,0,234.1,0H192A190.64,190.64,0,0,0,84.18,33.3L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM313.39,210.45,263.61,172c5.88-7.14,14.43-12,24.36-12a32.06,32.06,0,0,1,32,32C320,199,317.24,205.17,313.39,210.45ZM616,304a24,24,0,1,0-24-24A24,24,0,0,0,616,304Zm-64,64a24,24,0,1,0-24-24A24,24,0,0,0,552,368ZM288,384a32,32,0,0,1,32-32h19.54L20.73,105.59A190.86,190.86,0,0,0,0,192c0,56.75,24.75,107.62,64,142.88V512H288V480h64a64,64,0,0,0,64-64H320A32,32,0,0,1,288,384Zm328-24a24,24,0,1,0,24,24A24,24,0,0,0,616,360Z\"]\n};\nvar faHeadSideHeadphones = {\n prefix: 'fas',\n iconName: 'head-side-headphones',\n icon: [512, 512, [], \"f8c2\", \"M509.21 273c-20.94-47.12-48.44-151.73-73.1-186.75A207.87 207.87 0 0 0 266.09-2H256v107.19c37.74 18 64 56.21 64 100.81a112 112 0 1 1-224 0c0-44.6 26.26-82.79 64-100.81V.88C69.23 16.14 0 94.88 0 190a191.27 191.27 0 0 0 64 142.81V510h256v-64h64a64 64 0 0 0 64-64v-64h32a32 32 0 0 0 29.21-45zM128 206a80 80 0 1 0 80-80 80 80 0 0 0-80 80zm80-32a32 32 0 1 1-32 32 32 32 0 0 1 32-32z\"]\n};\nvar faHeadSideMask = {\n prefix: 'fas',\n iconName: 'head-side-mask',\n icon: [512, 512, [], \"e063\", \"M.15,184.42C-2.17,244.21,23,298.06,64,334.88V512H224V316.51L3.67,156.25A182.28,182.28,0,0,0,.15,184.42ZM509.22,275c-21-47.12-48.5-151.75-73.12-186.75A208.11,208.11,0,0,0,266.11,0H200C117,0,42.48,50.57,13.25,123.65L239.21,288H511.76A31.35,31.35,0,0,0,509.22,275ZM320,224a32,32,0,1,1,32-32A32.07,32.07,0,0,1,320,224Zm16,144H496l16-48H256V512H401.88a64,64,0,0,0,60.71-43.76L464,464H336a16,16,0,0,1,0-32H474.67l10.67-32H336a16,16,0,0,1,0-32Z\"]\n};\nvar faHeadSideMedical = {\n prefix: 'fas',\n iconName: 'head-side-medical',\n icon: [512, 512, [], \"f809\", \"M509.21 275c-20.94-47.12-48.44-151.73-73.08-186.75A207.94 207.94 0 0 0 266.09 0H192C86 0 0 86 0 192a191.28 191.28 0 0 0 64 142.82V512h256v-64h64a64 64 0 0 0 64-64v-64h32a32 32 0 0 0 29.21-45zM320 216a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faHeadSideVirus = {\n prefix: 'fas',\n iconName: 'head-side-virus',\n icon: [512, 512, [], \"e064\", \"M272,240a16,16,0,1,0,16,16A16,16,0,0,0,272,240Zm-64-64a16,16,0,1,0,16,16A16,16,0,0,0,208,176Zm301.2,99c-20.93-47.12-48.43-151.73-73.07-186.75A207.9,207.9,0,0,0,266.09,0H192C86,0,0,86,0,192A191.23,191.23,0,0,0,64,334.81V512H320V448h64a64,64,0,0,0,64-64V320H480A32,32,0,0,0,509.2,275ZM368,240H355.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C290.47,297.09,256,311.37,256,339.88V352a16,16,0,0,1-32,0V339.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H112a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V96a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C313.09,173.53,327.37,208,355.88,208H368a16,16,0,0,1,0,32Z\"]\n};\nvar faHeadVr = {\n prefix: 'fas',\n iconName: 'head-vr',\n icon: [512, 512, [], \"f6ea\", \"M304 64h112v160H308.56c-41.85 0-79.98-30.11-84.15-71.75C219.62 104.36 257.1 64 304 64zm208 144V80c0-8.84-7.16-16-16-16h-48v160h48c8.84 0 16-7.16 16-16zm-319.43-52.56c-3.16-31.6 7.18-63.15 28.37-86.57C242.14 45.44 272.41 32 304 32h72.3C343.87 11.68 305.97 0 266.09 0H224C140.44 0 69.54 53.48 43.16 128H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h187.49c-5.67-11.31-9.61-23.56-10.92-36.56zM501.51 256H308.56c-31.13 0-59.73-12.33-80.92-32H34.95c7.4 43.72 29.4 82.44 61.05 110.82V512h224v-64h64c35.35 0 64-28.65 64-64v-64h31.96c23.16 0 38.65-23.84 29.24-45-2.47-5.56-5.05-12.04-7.69-19z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [512, 512, [], \"f1dc\", \"M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\"]\n};\nvar faHeadphonesAlt = {\n prefix: 'fas',\n iconName: 'headphones-alt',\n icon: [512, 512, [], \"f58f\", \"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [], \"f004\", \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\"]\n};\nvar faHeartBroken = {\n prefix: 'fas',\n iconName: 'heart-broken',\n icon: [512, 512, [], \"f7a9\", \"M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeartCircle = {\n prefix: 'fas',\n iconName: 'heart-circle',\n icon: [496, 512, [], \"f4c7\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm123.5 272.3L260.9 394.5c-7.1 7.4-18.7 7.4-25.9 0L124.5 280.3c-32.1-33.2-30.2-88.2 5.7-118.8 31.3-26.7 77.9-21.9 106.6 7.7l11.3 11.6 11.3-11.6c28.7-29.6 75.3-34.4 106.6-7.7 35.8 30.6 37.7 85.6 5.5 118.8z\"]\n};\nvar faHeartRate = {\n prefix: 'fas',\n iconName: 'heart-rate',\n icon: [640, 512, [], \"f5f8\", \"M624 224H480c-12.12 0-23.21 6.85-28.63 17.69l-26.54 53.09-73.95-271.2C346.99 9.35 333.82-.51 319.13.02 304.36.43 291.8 10.86 288.7 25.3l-69.14 322.68-28.79-100.78C186.84 233.47 174.29 224 160 224H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h119.86l57.38 200.79c3.94 13.77 16.52 23.2 30.75 23.2.36 0 .73 0 1.09-.02 14.67-.5 27.14-10.92 30.22-25.28l68.44-319.4 61.39 225.12a32.012 32.012 0 0 0 27.72 23.42c13.16 1.2 25.84-5.69 31.78-17.53L499.78 288H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faHeartSquare = {\n prefix: 'fas',\n iconName: 'heart-square',\n icon: [448, 512, [], \"f4c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-52.5 248.3L236.9 394.5c-7.1 7.4-18.7 7.4-25.9 0L100.5 280.3c-32.1-33.2-30.2-88.2 5.7-118.8 31.3-26.7 77.9-21.9 106.6 7.7l11.3 11.6 11.3-11.6c28.7-29.6 75.3-34.4 106.6-7.7 35.8 30.6 37.7 85.6 5.5 118.8z\"]\n};\nvar faHeartbeat = {\n prefix: 'fas',\n iconName: 'heartbeat',\n icon: [512, 512, [], \"f21e\", \"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeat = {\n prefix: 'fas',\n iconName: 'heat',\n icon: [448, 512, [], \"e00c\", \"M64,152.25V112A16,16,0,0,0,48,96H16A16,16,0,0,0,0,112v40.25A218.65,218.65,0,0,0,56.48,299,154.12,154.12,0,0,1,96,402.41V464a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V402.41a218.44,218.44,0,0,0-56.42-146.69A154.3,154.3,0,0,1,64,152.25ZM391.58,255.72A154.3,154.3,0,0,1,352,152.25V112a16,16,0,0,0-16-16H304a16,16,0,0,0-16,16v40.25A218.65,218.65,0,0,0,344.48,299,154.12,154.12,0,0,1,384,402.41V464a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V402.41A218.44,218.44,0,0,0,391.58,255.72ZM208,152.25V48a16,16,0,0,0-16-16H160a16,16,0,0,0-16,16V152.25A218.65,218.65,0,0,0,200.48,299,154.12,154.12,0,0,1,240,402.41V464a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V402.41a218.44,218.44,0,0,0-56.42-146.69A154.3,154.3,0,0,1,208,152.25Z\"]\n};\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [], \"f533\", \"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\"]\n};\nvar faHelmetBattle = {\n prefix: 'fas',\n iconName: 'helmet-battle',\n icon: [576, 512, [], \"f6eb\", \"M32.01 256C49.68 256 64 243.44 64 227.94V0L.97 221.13C-4.08 238.84 11.2 256 32.01 256zm543.02-34.87L512 0v227.94c0 15.5 14.32 28.06 31.99 28.06 20.81 0 36.09-17.16 31.04-34.87zM480 210.82C480 90.35 288 0 288 0S96 90.35 96 210.82c0 82.76-22.86 145.9-31.13 180.71-3.43 14.43 3.59 29.37 16.32 35.24L256 512V256l-96-32v-32h256v32l-96 32v256l174.82-85.23c12.73-5.87 19.75-20.81 16.32-35.24-8.28-34.81-31.14-97.95-31.14-180.71z\"]\n};\nvar faHexagon = {\n prefix: 'fas',\n iconName: 'hexagon',\n icon: [576, 512, [], \"f312\", \"M441.5 39.8C432.9 25.1 417.1 16 400 16H176c-17.1 0-32.9 9.1-41.5 23.8l-112 192c-8.7 14.9-8.7 33.4 0 48.4l112 192c8.6 14.7 24.4 23.8 41.5 23.8h224c17.1 0 32.9-9.1 41.5-23.8l112-192c8.7-14.9 8.7-33.4 0-48.4l-112-192z\"]\n};\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [544, 512, [], \"f591\", \"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\"]\n};\nvar faHiking = {\n prefix: 'fas',\n iconName: 'hiking',\n icon: [384, 512, [], \"f6ec\", \"M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [], \"f6ed\", \"M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHistory = {\n prefix: 'fas',\n iconName: 'history',\n icon: [512, 512, [], \"f1da\", \"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\"]\n};\nvar faHockeyMask = {\n prefix: 'fas',\n iconName: 'hockey-mask',\n icon: [448, 512, [], \"f6ee\", \"M376.61 54.46c-82.95-72.61-222.26-72.61-305.22 0C7.36 110.5-31.01 224.44 32.63 416 64.53 512 224 512 224 512s159.47 0 191.37-96c63.64-191.56 25.27-305.5-38.76-361.54zM288 64c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm-128 0c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm16 400c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm0-64c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm0-64c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm-48-64c-35.35 0-64-28.65-64-64 0-17.67 14.33-32 32-32h64c17.67 0 32 14.33 32 32 0 35.35-28.65 64-64 64zm96-128c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm48 320c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm0-64c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm0-64c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm48-64c-35.35 0-64-28.65-64-64 0-17.67 14.33-32 32-32h64c17.67 0 32 14.33 32 32 0 35.35-28.65 64-64 64z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\"]\n};\nvar faHockeySticks = {\n prefix: 'fas',\n iconName: 'hockey-sticks',\n icon: [640, 512, [], \"f454\", \"M0 368v128c0 8.8 7.2 16 16 16h48V352H16c-8.8 0-16 7.2-16 16zM484.6 30.3L427.4 1.7c-7.9-4-17.5-.7-21.5 7.2L238.8 343.2c-2.7 5.4-8.2 8.8-14.3 8.8H96v160h126.1c24.2 0 46.4-13.7 57.2-35.4L491.8 51.8c3.9-7.9.7-17.5-7.2-21.5zm-245.1 204L293.2 127 234.1 8.8c-4-7.9-13.6-11.1-21.5-7.2l-57.3 28.6c-7.9 4-11.1 13.6-7.2 21.5l91.4 182.6zM624 352h-48v160h48c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-223.5-10.3L346.8 449c12.6 25.2 25.4 63 71.1 63H544V352H415.6c-4.6 0-10.8-1.7-15.1-10.3z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [448, 512, [], \"f7aa\", \"M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z\"]\n};\nvar faHome = {\n prefix: 'fas',\n iconName: 'home',\n icon: [576, 512, [], \"f015\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHomeAlt = {\n prefix: 'fas',\n iconName: 'home-alt',\n icon: [576, 512, [], \"f80a\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHomeHeart = {\n prefix: 'fas',\n iconName: 'home-heart',\n icon: [576, 512, [], \"f4c9\", \"M64 311.4V496c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16V311.4c-6.7-5.5-44.7-38.3-224-196.4C107.9 273.9 70.4 306.1 64 311.4zm314.1-26.3c27.6 23 29.1 64.2 4.5 89.1l-84.7 85.6c-5.5 5.5-14.3 5.5-19.8 0l-84.7-85.6c-24.6-24.9-23.2-66.1 4.3-89.1 24-20 59.7-16.4 81.6 5.8l8.6 8.7 8.6-8.7c22-22.2 57.7-25.8 81.6-5.8zM64 311.4v-.3s-2.7 2.5 0 .3zm506.7-75.1L512 184.5V48c0-8.8-7.2-16-16-16h-64c-8.8 0-16 7.2-16 16v51.7L314.7 10.3c-15.3-13.7-38.2-13.7-53.5 0l-256 226c-6.6 5.9-7.1 16-1.2 22.6l21.4 23.8c5.9 6.6 16 7.1 22.6 1.2L277.4 81.7c6-5.3 15.1-5.3 21.2 0L527.9 284c6.6 5.9 16.7 5.4 22.6-1.2l21.4-23.8c5.9-6.7 5.4-16.8-1.2-22.7zM512 311.1v.3c2.9 2.3 0-.3 0-.3z\"]\n};\nvar faHomeLg = {\n prefix: 'fas',\n iconName: 'home-lg',\n icon: [576, 512, [], \"f80b\", \"M570.69 236.28L512 184.45V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v51.69L314.75 10.31a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59zM288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16V368a16 16 0 0 1 16-16h96a16 16 0 0 1 16 16v128a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2z\"]\n};\nvar faHomeLgAlt = {\n prefix: 'fas',\n iconName: 'home-lg-alt',\n icon: [576, 512, [], \"f80c\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16V368a16 16 0 0 1 16-16h96a16 16 0 0 1 16 16v128a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm282.69 121.28l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faHoodCloak = {\n prefix: 'fas',\n iconName: 'hood-cloak',\n icon: [576, 512, [], \"f6ef\", \"M288.27 192c-70.69 0-128 57.31-128 128v192h256V320c0-70.69-57.3-128-128-128zm281.37 268.84C511.97 383.87 511.97 320 511.97 320h.06v-64c0-84.03-46.37-123.05-101.18-182.7l39.75-39.75C462.99 21.17 454.22 0 436.71 0H287.6C192 0 64.03 109.45 64.03 256v64s0 63.87-57.67 140.84C1.89 466.8-.07 473.48 0 480c.19 16.52 13.46 32 32.33 32h95.94V320c0-88.22 71.78-160 160-160s160 71.78 160 160v192h95.4c18.87 0 32.14-15.48 32.33-32 .07-6.52-1.89-13.2-6.36-19.16z\"]\n};\nvar faHorizontalRule = {\n prefix: 'fas',\n iconName: 'horizontal-rule',\n icon: [640, 512, [], \"f86c\", \"M640 239.87v31.26A15.88 15.88 0 0 1 624.14 287H15.87A15.88 15.88 0 0 1 0 271.13v-31.26A15.88 15.88 0 0 1 15.87 224h608.27A15.88 15.88 0 0 1 640 239.87z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faHorseSaddle = {\n prefix: 'fas',\n iconName: 'horse-saddle',\n icon: [576, 512, [], \"f8c3\", \"M128 160v-25.83a96.74 96.74 0 0 0-40 26.94V160a88.09 88.09 0 0 0-88 88v56a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16v-56c0-13.22 6.87-24.39 16.78-31.69-.22 2.6-.78 5.07-.78 7.69a95.47 95.47 0 0 0 30.53 69.88l-25.72 68.6a64.13 64.13 0 0 0-2.15 38l24.84 99.4c1.69 6.68 8.62 12.12 15.5 12.12h66a16 16 0 0 0 15.53-19.88l-26.34-105.26L186 323.27l22 3.66v-72.54A95.83 95.83 0 0 1 128 160zm160 0v-32H160v32a64 64 0 0 0 128 0zm287.9-83.41a31.69 31.69 0 0 0-8.56-21.79c-3.78-4-8.59-9.11-13.69-14.5 11.07-6.85 19.5-17.49 22.19-30.66A8.11 8.11 0 0 0 567.9 0h-120A127.94 127.94 0 0 0 320 127.05v33a95.83 95.83 0 0 1-80 94.39v77.87l80 13.33V496a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V318.22A111.5 111.5 0 0 0 448 240a3.55 3.55 0 0 0-.1-.64V136.89l16 7.11 18.91 37.7a32 32 0 0 0 40.5 15.36l32.56-13C567 179.61 576 166.3 576 154.34zM511.9 96a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [448, 512, [], \"f0f8\", \"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\"]\n};\nvar faHospitalAlt = {\n prefix: 'fas',\n iconName: 'hospital-alt',\n icon: [576, 512, [], \"f47d\", \"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faHospitalSymbol = {\n prefix: 'fas',\n iconName: 'hospital-symbol',\n icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\"]\n};\nvar faHospitalUser = {\n prefix: 'fas',\n iconName: 'hospital-user',\n icon: [640, 512, [], \"f80d\", \"M480 320a96 96 0 1 0-96-96 96 96 0 0 0 96 96zm48 32a22.88 22.88 0 0 0-7.06 1.09 124.76 124.76 0 0 1-81.89 0A22.82 22.82 0 0 0 432 352a112 112 0 0 0-112 112.62c.14 26.26 21.73 47.38 48 47.38h224c26.27 0 47.86-21.12 48-47.38A112 112 0 0 0 528 352zm-198.09 10.45A145.19 145.19 0 0 1 352 344.62V128a32 32 0 0 0-32-32h-32V32a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v64H32a32 32 0 0 0-32 32v368a16 16 0 0 0 16 16h288.31A78.62 78.62 0 0 1 288 464.79a143.06 143.06 0 0 1 41.91-102.34zM144 404a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H92a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm48-122a6 6 0 0 1-6 6h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26zm80 250a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z\"]\n};\nvar faHospitals = {\n prefix: 'fas',\n iconName: 'hospitals',\n icon: [640, 512, [], \"f80e\", \"M256 96V32a32 32 0 0 0-32-32H64a32 32 0 0 0-32 32v64a32 32 0 0 0-32 32v352a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V128a32 32 0 0 0-32-32zM128 404a12 12 0 0 1-12 12H76a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12H76a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm26-116h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26v26a6 6 0 0 1-6 6zm70 244a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zM608 96V32a32 32 0 0 0-32-32H416a32 32 0 0 0-32 32v64a32 32 0 0 0-32 32v352a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V128a32 32 0 0 0-32-32zM480 404a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm26-116h-20a6 6 0 0 1-6-6v-26h-26a6 6 0 0 1-6-6v-20a6 6 0 0 1 6-6h26V70a6 6 0 0 1 6-6h20a6 6 0 0 1 6 6v26h26a6 6 0 0 1 6 6v20a6 6 0 0 1-6 6h-26v26a6 6 0 0 1-6 6zm70 244a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12zm0-128a12 12 0 0 1-12 12h-40a12 12 0 0 1-12-12v-40a12 12 0 0 1 12-12h40a12 12 0 0 1 12 12z\"]\n};\nvar faHotTub = {\n prefix: 'fas',\n iconName: 'hot-tub',\n icon: [512, 512, [], \"f593\", \"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [], \"f80f\", \"M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [576, 512, [], \"f594\", \"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [], \"f254\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [], \"f253\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [], \"f252\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [], \"f251\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\"]\n};\nvar faHouse = {\n prefix: 'fas',\n iconName: 'house',\n icon: [576, 512, [], \"e00d\", \"M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.76,10.3C308.48,4.61,296.51,0,288,0s-20.45,4.61-26.73,10.3l-256,226a16,16,0,0,0-1.2,22.6l21.4,23.8A18.31,18.31,0,0,0,37.42,288a18.51,18.51,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.87l15.91,14A18.62,18.62,0,0,0,538.63,288a18.12,18.12,0,0,0,11.87-5.31l21.41-23.81A18.61,18.61,0,0,0,576,248.18,18.21,18.21,0,0,0,570.69,236.27ZM352,298.66A21.39,21.39,0,0,1,330.64,320h-85.3A21.39,21.39,0,0,1,224,298.66V213.32A21.39,21.39,0,0,1,245.34,192h85.3A21.39,21.39,0,0,1,352,213.32Z\"]\n};\nvar faHouseDamage = {\n prefix: 'fas',\n iconName: 'house-damage',\n icon: [576, 512, [], \"f6f1\", \"M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z\"]\n};\nvar faHouseDay = {\n prefix: 'fas',\n iconName: 'house-day',\n icon: [640, 512, [], \"e00e\", \"M136,176a40,40,0,1,0,40-40A40.07,40.07,0,0,0,136,176ZM635.23,292.42,576,240V144a16,16,0,0,0-16-16H528a16,16,0,0,0-16,16v39.29l-88.48-78.37a35.32,35.32,0,0,0-46.92,0L164.8,292.42a14.18,14.18,0,0,0-1.23,20l18.79,21.28a14.21,14.21,0,0,0,20,1.25L224,315.87V480a32,32,0,0,0,32,32H544a32,32,0,0,0,32-32V315.84L597.62,335a14.28,14.28,0,0,0,20-1.25l18.79-21.28A14.25,14.25,0,0,0,635.23,292.42ZM448,368a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V304a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16ZM104,176a72,72,0,0,1,144,0v0l42.83-37.93-10.54-5.26,23-69a11.88,11.88,0,0,0-15.06-15l-69,23L186.66,6.6a11.9,11.9,0,0,0-21.31,0L132.83,71.7l-69.09-23a11.88,11.88,0,0,0-15.06,15l23,69L6.6,165.34a11.91,11.91,0,0,0,0,21.32l65.11,32.51-23,69.1a11.89,11.89,0,0,0,15.06,15.06l69-23,.74,1.49a46.66,46.66,0,0,1,10.08-13.32l24.07-21.31C131.92,243,104,212.84,104,176Z\"]\n};\nvar faHouseFlood = {\n prefix: 'fas',\n iconName: 'house-flood',\n icon: [576, 512, [], \"f74f\", \"M21.4 244c-5.9-6.6-5.2-16.7 1.4-22.6L261.6 10c15.1-13.4 37.8-13.4 52.9 0L416 99.9V48c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v108.6l73.2 64.8c6.6 5.9 7.2 16 1.4 22.6l-21.2 24c-5.9 6.6-16 7.2-22.6 1.4L288 72.1 65.2 269.4c-6.6 5.9-16.7 5.2-22.6-1.4l-21.2-24zm540.7 203.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zM288 114.8l192 170v99.8h-.1c-16 0-31.6 5.5-43.9 15.4-12.2 9.8-31.5 15.6-51.7 15.6-21.2 0-40.7-6.1-53.5-16.7-11.7-9.7-26.1-14.8-41.6-14.8-16.2 0-32.3 5.7-45.5 16.1-12.4 9.8-31.1 15.4-51.5 15.4-21.2 0-40.7-6.1-53.5-16.7-11.6-9.6-26-14.7-41.4-14.7-.5 0-.9.1-1.4.1v-99.4L288 114.8zM320 224h-64c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faHouseLeave = {\n prefix: 'fas',\n iconName: 'house-leave',\n icon: [640, 512, [], \"e00f\", \"M356.87,384.5a30.05,30.05,0,0,0,6.95-10.64l20.71-51.5,11.76-29.25c-.48-3-.81-6-1-9a63.54,63.54,0,0,1-58,.39c-31.26-15.74-44.05-54.16-28.52-85.64l6.73-13.65a127.24,127.24,0,0,1,66.4-61.67l7.52-3.07L263.52,8.92a35.32,35.32,0,0,0-46.92,0L4.8,196.42a14.18,14.18,0,0,0-1.23,20l18.79,21.28a14.2,14.2,0,0,0,20,1.25L64,219.87V384a32,32,0,0,0,32,32H325.44ZM224,272a16,16,0,0,1-16,16H144a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16ZM528,96a48,48,0,1,0-48-48A48,48,0,0,0,528,96ZM393.55,385.74a61.78,61.78,0,0,1-14.18,21.49l-50,50.11a32,32,0,0,0,45.18,45.29l59.4-59.4a64.8,64.8,0,0,0,14.2-21.5l13.5-33.79c-55.29-60.29-38.7-41.79-47.4-53.69ZM622.42,245.06l-23.29-11.8-9.7-29.38c-14.7-44.61-55.7-75.81-102.19-75.9-36-.09-55.88,10.09-93.28,25.2a95.46,95.46,0,0,0-49.7,46.2L337.56,213a32.11,32.11,0,0,0,14.2,42.9,31.55,31.55,0,0,0,42.49-14.31L401,228a31.82,31.82,0,0,1,16.49-15.41l26.8-10.79-15.2,60.69A64.23,64.23,0,0,0,444,321.25l59.9,65.4a64.42,64.42,0,0,1,14.89,27.69L537,487.63a32,32,0,0,0,62.1-15.5l-22.2-89a63.81,63.81,0,0,0-14.9-27.7l-45.5-49.7,17.2-68.69,5.5,16.5a63.73,63.73,0,0,0,31.7,37l23.29,11.81a31.57,31.57,0,0,0,42.5-14.31A32.37,32.37,0,0,0,622.42,245.06Z\"]\n};\nvar faHouseNight = {\n prefix: 'fas',\n iconName: 'house-night',\n icon: [640, 512, [], \"e010\", \"M112,224a111.77,111.77,0,0,0,87-41.47,5.25,5.25,0,0,0-5.05-8.47A87.74,87.74,0,0,1,134.11,11.6a5.26,5.26,0,0,0-1.65-9.73A136.16,136.16,0,0,0,112,0a112,112,0,0,0,0,224Zm523.23,68.42L576,240V144a16,16,0,0,0-16-16H528a16,16,0,0,0-16,16v39.29l-88.48-78.37a35.32,35.32,0,0,0-46.92,0L164.8,292.42a14.19,14.19,0,0,0-1.23,20l18.79,21.28a14.2,14.2,0,0,0,20,1.25L224,315.87V480a32,32,0,0,0,32,32H544a32,32,0,0,0,32-32V315.84L597.62,335a14.28,14.28,0,0,0,20-1.25l18.79-21.28A14.25,14.25,0,0,0,635.23,292.42ZM448,368a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V304a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16ZM195,68.78l39.72,16.56,16.56,39.72a5.32,5.32,0,0,0,9.54,0l16.56-39.72,39.72-16.56a5.33,5.33,0,0,0,0-9.54L277.33,42.68,260.77,3a5.32,5.32,0,0,0-9.54,0L234.67,42.68,195,59.24a5.33,5.33,0,0,0,0,9.54Zm-37.9,310.46-39.72-16.56L100.77,323a5.32,5.32,0,0,0-9.54,0L74.67,362.68,35,379.24a5.33,5.33,0,0,0,0,9.54l39.72,16.56,16.56,39.72a5.32,5.32,0,0,0,9.54,0l16.56-39.72,39.72-16.56a5.33,5.33,0,0,0,0-9.54Z\"]\n};\nvar faHouseReturn = {\n prefix: 'fas',\n iconName: 'house-return',\n icon: [640, 512, [], \"e011\", \"M374.8,333.36a63.48,63.48,0,0,1-80.3-31.17c-15.47-31.51-2.63-69.95,28.56-85.65l11.51-5.83,5.56-16.83a143.26,143.26,0,0,1,51.95-71.1L263.52,8.92a35.32,35.32,0,0,0-46.92,0L4.8,196.41a14.19,14.19,0,0,0-1.23,20l18.79,21.29a14.21,14.21,0,0,0,20,1.24L64,219.87V384a32,32,0,0,0,32,32H341.86L352,375.38a95.83,95.83,0,0,1,22.33-41.5ZM224,272a16,16,0,0,1-16,16H144a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16Zm307-9.51-15.2-60.69,26.79,10.79A31.81,31.81,0,0,1,559,228l6.71,13.59a31.56,31.56,0,0,0,42.49,14.31,32.11,32.11,0,0,0,14.2-42.9l-6.7-13.59A95.44,95.44,0,0,0,566,153.21c-37.4-15.11-57.29-25.3-93.28-25.2-46.49.09-87.49,31.29-102.19,75.89l-9.7,29.38-23.29,11.8a32.37,32.37,0,0,0-14.3,43,31.58,31.58,0,0,0,42.5,14.31l23.29-11.81a63.75,63.75,0,0,0,31.7-37l5.5-16.49,17.2,68.69L398,355.46a63.83,63.83,0,0,0-14.9,27.69l-22.2,89a32,32,0,0,0,62.1,15.5l18.29-73.28a64.51,64.51,0,0,1,14.89-27.7l59.9-65.39A64.21,64.21,0,0,0,531,262.48ZM432,96a48,48,0,1,0-48-48A48,48,0,0,0,432,96ZM630.63,457.34l-50-50.1a61.78,61.78,0,0,1-14.18-21.49l-20.7-51.49c-8.7,11.9,7.89-6.59-47.4,53.69l13.5,33.79a64.75,64.75,0,0,0,14.2,21.49l59.4,59.4a32,32,0,0,0,45.18-45.29Z\"]\n};\nvar faHouseSignal = {\n prefix: 'fas',\n iconName: 'house-signal',\n icon: [640, 512, [], \"e012\", \"M635.23,196.42,576,144V48a16,16,0,0,0-16-16H528a16,16,0,0,0-16,16V87.29L423.52,8.92a35.32,35.32,0,0,0-46.92,0L164.8,196.42a14.19,14.19,0,0,0-1.23,20l18.79,21.28a14.2,14.2,0,0,0,20,1.25L224,219.87v64A320.42,320.42,0,0,1,305.24,416H544a32,32,0,0,0,32-32V219.84L597.62,239a14.28,14.28,0,0,0,20-1.25l18.79-21.28A14.25,14.25,0,0,0,635.23,196.42ZM448,272a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16ZM0,416v96H96A96,96,0,0,0,0,416Zm0-96v63.93A128.12,128.12,0,0,1,128.07,512H192C192,406,106,320,0,320Zm0-96H0v63.93c123.71,0,224.07,100.36,224.07,224.07H288C288,352.94,159.06,224,0,224Z\"]\n};\nvar faHouseUser = {\n prefix: 'fas',\n iconName: 'house-user',\n icon: [576, 512, [], \"e065\", \"M570.69,236.27,512,184.44V48a16,16,0,0,0-16-16H432a16,16,0,0,0-16,16V99.67L314.78,10.3C308.5,4.61,296.53,0,288,0s-20.46,4.61-26.74,10.3l-256,226A18.27,18.27,0,0,0,0,248.2a18.64,18.64,0,0,0,4.09,10.71L25.5,282.7a21.14,21.14,0,0,0,12,5.3,21.67,21.67,0,0,0,10.69-4.11l15.9-14V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V269.88l15.91,14A21.94,21.94,0,0,0,538.63,288a20.89,20.89,0,0,0,11.87-5.31l21.41-23.81A21.64,21.64,0,0,0,576,248.19,21,21,0,0,0,570.69,236.27ZM288,176a64,64,0,1,1-64,64A64,64,0,0,1,288,176ZM400,448H176a16,16,0,0,1-16-16,96,96,0,0,1,96-96h64a96,96,0,0,1,96,96A16,16,0,0,1,400,448Z\"]\n};\nvar faHryvnia = {\n prefix: 'fas',\n iconName: 'hryvnia',\n icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z\"]\n};\nvar faHumidity = {\n prefix: 'fas',\n iconName: 'humidity',\n icon: [384, 512, [], \"f750\", \"M223.9 22.1c-8.7-28.8-53.9-30.1-63.8 0C109.1 179.8 0 222.7 0 333.9 0 432.3 85.9 512 192 512s192-79.7 192-178.1c0-111.7-108.9-153.3-160.1-311.8zM96 288c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm49.5 131.8c-2.8 3.5-7.8 4-11.2 1.2l-12.5-10c-3.4-2.8-4-7.8-1.2-11.2l118-147.5c2.8-3.4 7.8-4 11.2-1.2l12.5 10c3.5 2.8 4 7.8 1.2 11.2l-118 147.5zM256 416c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faHurricane = {\n prefix: 'fas',\n iconName: 'hurricane',\n icon: [384, 512, [], \"f751\", \"M176 96l24.5-74.8C204.2 10 194.9-1.3 183.1.1 80 12.4 0 101.6 0 208c0 114.9 93.1 208 208 208l-24.5 74.8c-3.7 11.2 5.6 22.5 17.4 21.1C304 499.6 384 410.4 384 304c0-114.9-93.1-208-208-208zm16 256c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [], \"f810\", \"M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z\"]\n};\nvar faIceSkate = {\n prefix: 'fas',\n iconName: 'ice-skate',\n icon: [576, 512, [], \"f7ac\", \"M568 416h-32c-4.4 0-8 3.6-8 8v16c0 13.3-10.7 24-24 24h-72v-48h-48v48H144v-48H96v48H8c-4.4 0-8 3.6-8 8v32c0 4.4 3.6 8 8 8h504c35.3 0 64-28.7 64-64v-24c0-4.4-3.6-8-8-8zM64 384h416c17.7 0 32-14.3 32-32v-37c0-44.1-30-82.4-72.7-93.1L320 192h-56c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h56v-32h-56c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h56V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16L78.4 82.7c-27.5 7.9-46.4 33-46.4 61.5V352c0 17.7 14.3 32 32 32z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [], \"f86d\", \"M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z\"]\n};\nvar faIconsAlt = {\n prefix: 'fas',\n iconName: 'icons-alt',\n icon: [512, 512, [], \"f86e\", \"M16 160h64v48a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-48h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-96h192a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H16A16 16 0 0 0 0 16v32a16 16 0 0 0 16 16zM478.08.33L329.51 23.18C314.87 25.44 304 38.94 304 54.86V161.7a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.49-64 48s28.65 48 64 48c35.2 0 63.73-21.33 64-47.69V99.73L464 82.5v47.2a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.49-64 48s28.65 48 64 48c35.2 0 63.73-21.33 64-47.69V32c0-19.47-16-34.43-33.92-31.67zM328 368a40 40 0 1 0-40-40 40 40 0 0 0 40 40zm-108.41 15.94L197 361.31a16 16 0 0 0-22.63 0l-27.92 27.89-22.7-22.7a64 64 0 1 0-90.7-3.3l-6.92 6.92c-29.59 29.59-35.69 77.63-9.81 110.52A81.31 81.31 0 0 0 138 488.19l8.48-8.49 27.61 27.61a16 16 0 0 0 22.63 0l22.62-22.62a16 16 0 0 0 0-22.63l-27.64-27.61 27.89-27.89a16 16 0 0 0 0-22.62zM80 304a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm12.72 138.94a17.29 17.29 0 1 1-24.45-24.46l8.48-8.48 24.45 24.45zm392-150.25a16 16 0 0 0-22.63 0l-169.4 169.37a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l169.37-169.37a16 16 0 0 0 0-22.63zM472 432a40 40 0 1 0 40 40 40 40 0 0 0-40-40z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\"]\n};\nvar faIdCardAlt = {\n prefix: 'fas',\n iconName: 'id-card-alt',\n icon: [576, 512, [], \"f47f\", \"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"]\n};\nvar faImagePolaroid = {\n prefix: 'fas',\n iconName: 'image-polaroid',\n icon: [448, 512, [], \"f8c4\", \"M128 192a32 32 0 1 0-32-32 32 32 0 0 0 32 32zM416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 320H64V96h320zM268.8 209.07a16 16 0 0 0-25.6 0l-49.32 65.75L173.31 244a16 16 0 0 0-26.62 0L96 320h256z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [576, 512, [], \"f01c\", \"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\"]\n};\nvar faInboxIn = {\n prefix: 'fas',\n iconName: 'inbox-in',\n icon: [576, 512, [], \"f310\", \"M250.5 0h68.6c9.5 0 17.1 7.7 17.1 17.1V160h68.3c17.8 0 26.7 21.5 14.1 34.1l-119.4 120c-7.9 7.9-20.9 7.8-28.6-.3L157 193.8c-12.1-12.7-3.1-33.8 14.5-33.8h61.9V17.1c0-9.4 7.7-17.1 17.1-17.1zm315 338.9l-94.6-118.2c-4.5-5.6-13-6-18-.9l-28.1 28.9c-4.2 4.3-4.5 11.1-.8 15.9l44.3 55.4H376l-32 64H232l-32-64h-92.4l43.8-54.7c3.7-4.7 3.5-11.4-.6-15.7l-27.6-29.5c-5-5.3-13.6-5-18.1.7l-94.4 118c-7 8.6-10.7 19.1-10.7 30V464c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48v-95.2c0-10.9-3.7-21.4-10.5-29.9z\"]\n};\nvar faInboxOut = {\n prefix: 'fas',\n iconName: 'inbox-out',\n icon: [576, 512, [], \"f311\", \"M576 368.8V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48v-95.2c0-10.9 3.7-21.5 10.5-30l94.4-118c4.6-5.7 13.1-6 18.1-.7l27.6 29.5c4.1 4.4 4.3 11 .6 15.7L107.6 320H200l32 64h112l32-64h92.4l-44.3-55.4c-3.8-4.7-3.5-11.5.8-15.9l28.1-28.9c5-5.2 13.5-4.8 18 .9l94.6 118.2c6.7 8.5 10.4 19 10.4 29.9zm-233.4-65.9V160h61.9c17.6 0 26.6-21.1 14.5-33.8L305.3 6.2c-7.7-8.1-20.7-8.3-28.6-.3l-119.4 120c-12.6 12.6-3.7 34.1 14.1 34.1h68.3v142.9c0 9.5 7.7 17.1 17.1 17.1h68.6c9.5 0 17.2-7.7 17.2-17.1z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [512, 512, [], \"f275\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\"]\n};\nvar faIndustryAlt = {\n prefix: 'fas',\n iconName: 'industry-alt',\n icon: [512, 512, [], \"f3b3\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248zM404 384h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm-128 0h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm-128 0h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [], \"f534\", \"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\"]\n};\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\"]\n};\nvar faInfoCircle = {\n prefix: 'fas',\n iconName: 'info-circle',\n icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faInfoSquare = {\n prefix: 'fas',\n iconName: 'info-square',\n icon: [448, 512, [], \"f30f\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zm-176 86c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faInhaler = {\n prefix: 'fas',\n iconName: 'inhaler',\n icon: [640, 512, [], \"f5f9\", \"M32 448c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0-192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm0 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96-48c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zM616.27 38.02L478.47 1.1c-17.07-4.57-34.62 5.56-39.19 22.63l-15.41 57.52 168.74 168.74L638.9 77.21c4.58-17.07-5.55-34.61-22.63-39.19zm-207.08 73.8c-8.74-8.74-23.66-4.7-26.79 7.26L346.49 256H224c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h295.31c14.55 0 27.26-9.81 30.95-23.88l44.22-168.59c2.88-11-.29-22.71-8.33-30.75L409.19 111.82zM128 400c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faIntegral = {\n prefix: 'fas',\n iconName: 'integral',\n icon: [384, 512, [], \"f667\", \"M377.21 73.03l-28-36.17C328.43 9.98 295.87-3.75 262.05.89 221.86 6.41 190.54 40 181.42 80.82l-78.16 334.36-23.95-30.91c-10.69-13.79-30.18-16.03-43.53-4.98l-24.17 20c-13.35 11.05-15.51 31.19-4.82 44.98l21.42 27.65c15.98 20.63 38.53 35.82 63.89 39.21 49.82 6.67 94.4-26.18 105.34-75.22l79.2-339.11 28.03 36.2c10.68 13.8 30.17 16.04 43.52 5l24.18-20c13.36-11.03 15.53-31.17 4.84-44.97z\"]\n};\nvar faIntersection = {\n prefix: 'fas',\n iconName: 'intersection',\n icon: [384, 512, [], \"f668\", \"M166.74 33.62C69.96 46.04 0 133.11 0 230.68V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V224c0-59.2 53.85-106.04 115.13-94.14 45.58 8.85 76.87 51.5 76.87 97.93V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V224c0-114.18-100.17-205.4-217.26-190.38z\"]\n};\nvar faInventory = {\n prefix: 'fas',\n iconName: 'inventory',\n icon: [640, 512, [], \"f480\", \"M624 0h-32c-8.8 0-16 7.2-16 16v144H64V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v496h64v-32h512v32h64V16c0-8.8-7.2-16-16-16zm-48 416H64V224h512v192zM368 128h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zM112 384h96c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm160 0h96c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-96c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16z\"]\n};\nvar faIslandTropical = {\n prefix: 'fas',\n iconName: 'island-tropical',\n icon: [448, 512, [], \"f811\", \"M336.53 32c-34.88 0-65.66 13.82-86.3 35.08C235.78 28.29 193.72 0 143.47 0 87 0 40.31 35.43 32.18 81.64A12.38 12.38 0 0 0 44.6 96H80l16-32 16 32h30.17c-34.21 35-39.62 86.88-14.54 122.58 4.36 6.2 13.14 7.31 18.5 1.95l71-71c4 79.62-11 159.62-21 202.5H142.8A144 144 0 0 0 .36 474.78C-2.53 494.3 12.39 512 32.12 512H352c18.46 0 34.11-15.74 31.8-34.05-7-55.68-47.06-101-99-118.13 10.2-88.69-7.32-183.68-18.52-231.82H368l16-32 16 32h35.4a12.38 12.38 0 0 0 12.42-14.36C439.69 67.43 393 32 336.53 32z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [320, 512, [], \"f033\", \"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJackOLantern = {\n prefix: 'fas',\n iconName: 'jack-o-lantern',\n icon: [576, 512, [], \"f30e\", \"M352 106.6V35.81c0-6.06-3.42-11.6-8.84-14.31l-39.6-19.8c-8.37-4.19-18.54-.32-22.01 8.37l-36.06 90.15C258.62 97.58 272.65 96 288 96c24.28 0 45.23 3.99 64 10.6zm143.3 46.53c-27-23.09-65.36-29.76-99.49-20.93 6.09 5.5 12.16 11.02 17.19 17.8 3.1 4.26 5.46 9.42 8.15 14.17C389.39 140.55 345.54 128 288 128s-101.39 12.54-133.15 36.17c2.69-4.75 5.04-9.91 8.15-14.17 5.02-6.78 11.1-12.29 17.19-17.8-34.13-8.83-72.49-2.16-99.49 20.93-107.6 92.01-107.6 241.72 0 333.74 38.63 33.03 100.82 33.34 140.12 1.25C238.65 503.51 260.72 512 288 512s49.35-8.49 67.19-23.88c39.3 32.09 101.49 31.78 140.12-1.25 107.59-92.01 107.59-241.73-.01-333.74zM320.85 278L362 211.33c2.33-4.57 8.6-4.42 12 0L415.15 278c1.66 3.25.9 10-6 10h-82.29c-6.9 0-7.7-6.69-6.01-10zm-160 0L202 211.33c2.33-4.57 8.6-4.42 12 0L255.15 278c1.66 3.25.9 10-6 10h-82.29c-6.9 0-7.7-6.69-6.01-10zm308.95 67.6c-5.96 17.04-12.75 28.62-18.7 36.96-9.38 12.94-21.34 23.8-35.19 32.99-.25-8.62-7.23-15.55-15.91-15.55h-16c-8.84 0-16 7.16-16 16v21.48c-23.46 6.88-50.16 10.52-79.98 10.52-29.85 0-56.56-3.65-80.02-10.51V416c0-8.84-7.16-16-16-16h-16c-8.7 0-15.71 6.97-15.92 15.63-13.71-9.08-25.53-19.79-34.75-32.51-6.12-8.59-13.02-20.31-19.04-37.46-4.87-13.89 10.56-26.15 23.24-18.67 32.94 19.44 70.39 32.74 110.47 38.84V384c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-14.26h.02c58.38 0 112.72-15.74 158.54-42.79 12.66-7.48 28.09 4.77 23.24 18.65z\"]\n};\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\"]\n};\nvar faJournalWhills = {\n prefix: 'fas',\n iconName: 'journal-whills',\n icon: [448, 512, [], \"f66a\", \"M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z\"]\n};\nvar faJoystick = {\n prefix: 'fas',\n iconName: 'joystick',\n icon: [448, 512, [], \"f8c5\", \"M416 352H128v-16a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v16H32a32 32 0 0 0-32 32v96a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32v-96a32 32 0 0 0-32-32zM192 218.8V320h64V218.8c46.15-13.8 80-56.14 80-106.8a112 112 0 0 0-224 0c0 50.66 33.85 93 80 106.8zM200 48a24 24 0 1 1-24 24 24 24 0 0 1 24-24z\"]\n};\nvar faJug = {\n prefix: 'fas',\n iconName: 'jug',\n icon: [448, 512, [], \"f8c6\", \"M448 168a71.72 71.72 0 0 0-126.68-46.35L311 108.77A31.66 31.66 0 0 1 305.23 96H142.77a31.66 31.66 0 0 1-5.77 12.77l-76.95 96.17a128 128 0 0 0-28 80V448a64 64 0 0 0 64 64H352a64 64 0 0 0 64-64V284.9a127.59 127.59 0 0 0-11.1-51A72 72 0 0 0 448 168zm-96 216a32 32 0 0 1-32 32H128a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h192a32 32 0 0 1 32 32zm25.38-192.28l-24.09-30.1C356.14 151.54 365 144 376 144a23.88 23.88 0 0 1 1.38 47.72zM152 64h144a23.94 23.94 0 0 0 24-24V24a23.94 23.94 0 0 0-24-24H152a23.94 23.94 0 0 0-24 24v16a23.94 23.94 0 0 0 24 24z\"]\n};\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z\"]\n};\nvar faKazoo = {\n prefix: 'fas',\n iconName: 'kazoo',\n icon: [640, 512, [], \"f8c7\", \"M608 128h-95.42c-19.51-9.89-41.25-16-64.58-16s-45.07 6.11-64.58 16H241.93a128.3 128.3 0 0 0-35.17 4.92L23.21 185.37A32 32 0 0 0 0 216.14v79.72a32 32 0 0 0 23.21 30.77l183.55 52.44a127.93 127.93 0 0 0 35.17 4.93h141.49c19.51 9.89 41.25 16 64.58 16s45.07-6.11 64.58-16H608a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32zM448 352a96 96 0 1 1 96-96 96 96 0 0 1-96 96zm50.91-135.6l-11.31-11.31a8 8 0 0 0-11.32 0L448 233.37l-28.29-28.28a8 8 0 0 0-11.31 0l-11.31 11.31a8 8 0 0 0 0 11.31L425.37 256l-28.28 28.28a8 8 0 0 0 0 11.32l11.31 11.31a8 8 0 0 0 11.31 0L448 278.63l28.28 28.28a8 8 0 0 0 11.32 0l11.31-11.31a8 8 0 0 0 0-11.32L470.63 256l28.28-28.29a8 8 0 0 0 0-11.31z\"]\n};\nvar faKerning = {\n prefix: 'fas',\n iconName: 'kerning',\n icon: [640, 512, [], \"f86f\", \"M416.54 0h-17A8 8 0 0 0 392 5.32l-176.28 496a8 8 0 0 0 7.55 10.68h17a8 8 0 0 0 7.54-5.32l176.28-496A8 8 0 0 0 416.54 0zM304 96h-50.62a16 16 0 0 0-15.16 10.89L160 306.68 81.78 106.89A16 16 0 0 0 66.62 96H16A16 16 0 0 0 .85 117.11l105.27 277.2a32 32 0 0 0 30.3 21.69h47.16a32 32 0 0 0 30.3-21.69l105.27-277.2A16 16 0 0 0 304 96zm335.15 298.89l-105.27-277.2A32 32 0 0 0 503.58 96h-47.16a32 32 0 0 0-30.3 21.69l-105.27 277.2A16 16 0 0 0 336 416h50.61a16 16 0 0 0 15.16-10.89L416.31 368h127.38l14.53 37.11A16 16 0 0 0 573.38 416H624a16 16 0 0 0 15.15-21.11zM447.63 288L480 205.32 512.37 288z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [], \"f084\", \"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeySkeleton = {\n prefix: 'fas',\n iconName: 'key-skeleton',\n icon: [512, 512, [], \"f6f3\", \"M448 0H320c-35.35 0-64 28.65-64 64v153.6L4.69 468.91c-6.25 6.25-6.25 16.38 0 22.63l15.77 15.77c6.25 6.25 16.38 6.25 22.63 0l36.25-36.25 36.11 36.11c6.25 6.25 16.38 6.25 22.63 0l43.16-43.16c6.25-6.25 6.25-16.38 0-22.63l-36.11-36.11L176 374.4l36.91 36.91c6.25 6.25 16.38 6.25 22.63 0l15.77-15.77c6.25-6.25 6.25-16.38 0-22.63L214.4 336l80-80H448c35.35 0 64-28.65 64-64V64c0-35.35-28.65-64-64-64zm-73.37 182.63c-12.5 12.5-32.76 12.5-45.26 0s-12.5-32.76 0-45.25c12.5-12.5 32.76-12.5 45.26 0 12.49 12.49 12.49 32.75 0 45.25zm64-64c-12.5 12.5-32.76 12.5-45.26 0s-12.5-32.76 0-45.25c12.5-12.5 32.76-12.5 45.26 0 12.49 12.49 12.49 32.75 0 45.25z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [], \"f11c\", \"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faKeynote = {\n prefix: 'fas',\n iconName: 'keynote',\n icon: [512, 512, [], \"f66c\", \"M368 448h-80v-64h-64v64h-80c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm140.62-166.76l-51.78-103.55A32 32 0 0 0 428.22 160H144c0-37.62 26.21-69.06 62.68-77.55C215.31 90.81 227.03 96 240 96h64c26.51 0 48-21.49 48-48S330.51 0 304 0h-64c-22.35 0-40.96 15.34-46.31 36.02C137.77 49.72 96 99.91 96 160H83.78a32 32 0 0 0-28.62 17.69L3.38 281.24A32.066 32.066 0 0 0 0 295.55V320c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-24.45c0-4.96-1.16-9.86-3.38-14.31z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [], \"f66d\", \"M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z\"]\n};\nvar faKidneys = {\n prefix: 'fas',\n iconName: 'kidneys',\n icon: [640, 512, [], \"f5fb\", \"M231.6 32.07c-35.33-39.56-96.04-42.99-135.62-7.69C36.08 77.85 2.39 149.96.13 224c-1.28 42.04 7.47 70.91 12.89 90.06 11.94 42.31 50.46 69.93 92.35 69.93 64.31 0 109.65-61.47 92.47-122.11-1.04-3.7-23.08-50.43 26.07-94.27 39.58-35.3 43.02-95.98 7.69-135.54zm72.27 235.7c0-21.31-11.84-40.5-30.97-50.09l-35.84-17.92c-8.57 10.12-16.55 24.95-11.66 42.26l1.82 6.49 24.21 12.11c2.72 1.37 4.44 4.09 4.44 7.16v212.21l.02 16.01c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16l-.02-48V267.77zm62.97-50.09c-19.09 9.59-30.97 28.78-30.97 50.09l.02 212.21V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16l-.02-48V267.77c0-3.03 1.72-5.78 4.47-7.16l23.87-11.94 2.13-7.39c4.89-16.94-3.08-31.56-11.61-41.56l-35.89 17.96zM543.89 24.3C504.34-10.92 443.56-7.45 408.3 32.2c-35.27 39.59-31.73 100.27 7.91 135.52 49.6 44.12 26.49 91.15 25.76 93.71C424.49 322 469.62 384 534.29 384c41.74 0 80.13-27.37 92.26-69.46 5.54-19.27 14.54-48.08 13.35-90.54-2.09-74.03-35.81-146.16-96.01-199.7z\"]\n};\nvar faKiss = {\n prefix: 'fas',\n iconName: 'kiss',\n icon: [496, 512, [], \"f596\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faKissBeam = {\n prefix: 'fas',\n iconName: 'kiss-beam',\n icon: [496, 512, [], \"f597\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\"]\n};\nvar faKissWinkHeart = {\n prefix: 'fas',\n iconName: 'kiss-wink-heart',\n icon: [504, 512, [], \"f598\", \"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\"]\n};\nvar faKite = {\n prefix: 'fas',\n iconName: 'kite',\n icon: [640, 512, [], \"f6f4\", \"M113.75 315.83l53.38 35.58c10.63 7.09 24.88-.54 24.88-13.31v-68.21c0-12.78-14.24-20.4-24.88-13.31L120 288v-64c0-48.6-39.4-88-88-88H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16c22.09 0 40 17.91 40 40v64l-47.12-31.42C14.24 249.49 0 257.12 0 269.89v68.21c0 12.78 14.24 20.4 24.88 13.31l53.38-35.58a32.004 32.004 0 0 1 35.49 0zM615.8 1.57C613.24.91 610.77 0 608 0H345.46c-2.36 0-4.54.67-6.76 1.16l138.76 138.76L615.8 1.57zM331.31 331.31c-3.12 3.12-8.19 3.12-11.31 0L308.69 320c-3.12-3.12-3.12-8.19 0-11.31l146.14-146.14L315.11 22.82c-.21.7-.66 1.26-.83 1.98l-78.76 341.31c-.39 1.69-.44 3.34-.55 4.99l-88.33 88.33c-9.83 9.83-26.63 2.87-26.63-11.03v-89.95l-24-16-24 16v84.86c0 16.55 5.05 33.04 15.7 45.71 26.48 31.53 68.98 28.26 92.87 4.34l88.31-88.31c1.66-.12 3.32-.19 5.02-.58l341.31-78.76c.72-.17 1.29-.62 1.99-.83L477.46 185.17 331.31 331.31zM638.43 24.2L500.08 162.54 638.84 301.3c.49-2.22 1.16-4.4 1.16-6.75V32c0-2.77-.91-5.24-1.57-7.8z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\"]\n};\nvar faKnifeKitchen = {\n prefix: 'fas',\n iconName: 'knife-kitchen',\n icon: [576, 512, [], \"f6f5\", \"M267.52 216.6L4.87 469.83c-8.72 8.41-5.22 22.73 6.49 26.49 113.84 36.59 239.36 8.02 324.21-73.79l61.04-58.85c6.48-6.25 6.48-16.38 0-22.63L267.52 216.6zM566.28 43.31L531.07 9.37c-12.96-12.5-33.98-12.5-46.94 0l-192.31 185.4 112.1 108.08 34.35-27.71c6.22-6 9.72-14.14 9.72-22.63V208L566.28 88.57c12.96-12.5 12.96-32.76 0-45.26zM444.24 149.66c-6.48 6.25-16.99 6.25-23.47 0s-6.48-16.38 0-22.63 16.99-6.25 23.47 0 6.48 16.38 0 22.63zm60.52-58.35c-6.48 6.25-16.99 6.25-23.47 0s-6.48-16.38 0-22.63 16.99-6.25 23.47 0 6.48 16.39 0 22.63z\"]\n};\nvar faLambda = {\n prefix: 'fas',\n iconName: 'lambda',\n icon: [448, 512, [], \"f66e\", \"M424 384h-43.5L197.6 48.68A32.018 32.018 0 0 0 169.5 32H24C10.75 32 0 42.74 0 56v48c0 13.25 10.75 24 24 24h107.5l4.63 8.49L3.25 446.55C-3.53 462.38 8.08 480 25.31 480h52.23c9.6 0 18.28-5.72 22.06-14.55l95.02-221.72L314.4 463.32A32.018 32.018 0 0 0 342.5 480H424c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLamp = {\n prefix: 'fas',\n iconName: 'lamp',\n icon: [448, 512, [], \"f4ca\", \"M445.5 211.4L368 19.4C363.3 7.6 352.4 0 340.4 0H120.6c-11.4 0-21.8 6.8-27 17.7l-90.4 192c-10 21.3 4.6 46.3 27 46.3h387.7c21.6 0 36.2-23.5 27.6-44.6zM158.3 288C121 325.2 96 386.8 96 428.8c0 28.4 11.5 54.3 30.5 74.3 5.7 6 13.9 8.9 22.2 8.9h150.6c8.3 0 16.5-2.9 22.2-8.9 19-20.1 30.5-45.9 30.5-74.3 0-42-25-103.6-62.3-140.8H158.3z\"]\n};\nvar faLampDesk = {\n prefix: 'fas',\n iconName: 'lamp-desk',\n icon: [512, 512, [], \"e014\", \"M494.42,64H346.5L301.24,18.74a64,64,0,0,0-90.5,90.5l11,11L103,239a24,24,0,0,0-6.11,23.56L149.9,448H64C35.58,448,9.05,466.53.7,492.16-2.52,502,5.88,512,16.26,512H367.74c10.39,0,18.78-10,15.57-19.84C375,466.53,348.42,448,320,448H199.82L147,263,255.72,154.22l.28.28V302.42c0,15.63,18.9,23.46,30,12.4L506.82,94C517.88,82.9,510.05,64,494.42,64ZM379.71,266.33a55.73,55.73,0,0,0,78.62-78.62Z\"]\n};\nvar faLampFloor = {\n prefix: 'fas',\n iconName: 'lamp-floor',\n icon: [384, 512, [], \"e015\", \"M256,448H224V255.69H160V448H128c-28.42,0-54.95,18.53-63.3,44.16C61.48,502,69.88,512,80.26,512H303.74c10.38,0,18.78-10,15.56-19.84C311,466.53,284.42,448,256,448ZM381.38,179.4l-68.57-160A32,32,0,0,0,283.39,0H100.61A32,32,0,0,0,71.19,19.4L2.62,179.4A32,32,0,0,0,32,224H352A32,32,0,0,0,381.38,179.4Z\"]\n};\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [], \"f66f\", \"M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faLandmarkAlt = {\n prefix: 'fas',\n iconName: 'landmark-alt',\n icon: [512, 512, [], \"f752\", \"M48 256h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-18.9C431.6 111.7 368.3 48.4 288 34.9V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v18.9C143.7 48.4 80.4 111.7 66.9 192H48c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm448 192h-16v-16c0-8.8-7.2-16-16-16h-16V288h-64v128h-96V288h-64v128h-96V288H64v128H48c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"]\n};\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [], \"f109\", \"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopHouse = {\n prefix: 'fas',\n iconName: 'laptop-house',\n icon: [640, 512, [], \"e066\", \"M272,288H208a16,16,0,0,1-16-16V208a16,16,0,0,1,16-16h64a16,16,0,0,1,16,16v37.12C299.11,232.24,315,224,332.8,224H469.74l6.65-7.53A16.51,16.51,0,0,0,480,207a16.31,16.31,0,0,0-4.75-10.61L416,144V48a16,16,0,0,0-16-16H368a16,16,0,0,0-16,16V87.3L263.5,8.92C258,4,247.45,0,240.05,0s-17.93,4-23.47,8.92L4.78,196.42A16.15,16.15,0,0,0,0,207a16.4,16.4,0,0,0,3.55,9.39L22.34,237.7A16.22,16.22,0,0,0,33,242.48,16.51,16.51,0,0,0,42.34,239L64,219.88V384a32,32,0,0,0,32,32H272ZM629.33,448H592V288c0-17.67-12.89-32-28.8-32H332.8c-15.91,0-28.8,14.33-28.8,32V448H266.67A10.67,10.67,0,0,0,256,458.67v10.66A42.82,42.82,0,0,0,298.6,512H597.4A42.82,42.82,0,0,0,640,469.33V458.67A10.67,10.67,0,0,0,629.33,448ZM544,448H352V304H544Z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLasso = {\n prefix: 'fas',\n iconName: 'lasso',\n icon: [576, 512, [], \"f8c8\", \"M288 0C126.5 0 0 79.63 0 181.3c0 49.78 30.22 95.84 85 129.7 3.52 2.17 7.37 4.29 11.3 6.41 0 .89-.33 1.71-.33 2.6 0 35.35 35.82 64 80 64 .69 0 1.33-.15 2-.16a68.71 68.71 0 0 1 2.69 17.9A45.7 45.7 0 0 1 134.94 448H48a16 16 0 0 0-16 15.94v32.12A16 16 0 0 0 48 512h86.94c59.38 0 108.8-47.22 109.76-106.38A135 135 0 0 0 238 360a468.23 468.23 0 0 0 50 2.58c161.5 0 288-79.63 288-181.28S449.5 0 288 0zm0 298.82c-12.73 0-25.23-.81-37.6-2C238.79 273 210 256 176 256a94.36 94.36 0 0 0-41.2 9.4c-5.58-2.86-11.32-5.69-16.05-8.61C98.31 244.17 64 217.57 64 181.3c0-62.61 104.69-117.54 224-117.54s224 54.93 224 117.54-104.69 117.52-224 117.52z\"]\n};\nvar faLaugh = {\n prefix: 'fas',\n iconName: 'laugh',\n icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\"]\n};\nvar faLaughBeam = {\n prefix: 'fas',\n iconName: 'laugh-beam',\n icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughSquint = {\n prefix: 'fas',\n iconName: 'laugh-squint',\n icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughWink = {\n prefix: 'fas',\n iconName: 'laugh-wink',\n icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [512, 512, [], \"f5fd\", \"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLayerMinus = {\n prefix: 'fas',\n iconName: 'layer-minus',\n icon: [512, 512, [], \"f5fe\", \"M12.41 276.3l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40L266.65 130.72a25.682 25.682 0 0 0-21.29 0L12.41 236.3c-16.55 7.5-16.55 32.5 0 40zM304 64h192c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H304c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16zm195.59 300.1l-58.09-26.33-161.63 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 337.77l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLayerPlus = {\n prefix: 'fas',\n iconName: 'layer-plus',\n icon: [512, 512, [], \"f5ff\", \"M304 144h64v64c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-64h64c8.84 0 16-7.16 16-16V96c0-8.84-7.16-16-16-16h-64V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v64h-64c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16zm195.59 220.1l-58.54-26.53-161.19 73.06c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.95 337.57 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40zM12.41 275.9l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L448 299.28V280.7c-15.32 4.38-31.27 7.29-48 7.29-88.01 0-160.72-64.67-173.72-149.04L12.41 235.9c-16.55 7.5-16.55 32.5 0 40z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\"]\n};\nvar faLeafHeart = {\n prefix: 'fas',\n iconName: 'leaf-heart',\n icon: [576, 512, [], \"f4cb\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 19.2 2.9 37.7 8.1 55.1C31.6 399.5 4.3 463.2 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6zM430.6 294.4L345.9 380c-5.5 5.5-14.3 5.5-19.8 0l-84.7-85.6c-24.6-24.9-23.2-66.1 4.3-89.1 24-20 59.6-16.4 81.6 5.8l8.6 8.7 8.6-8.7c22-22.2 57.7-25.8 81.6-5.8 27.6 22.9 29.1 64.2 4.5 89.1z\"]\n};\nvar faLeafMaple = {\n prefix: 'fas',\n iconName: 'leaf-maple',\n icon: [512, 512, [], \"f6f6\", \"M503.58 166.05l-37.24-22.34 9.86-88.78c1.23-11.04-8.1-20.37-19.14-19.14l-88.78 9.86-22.33-37.23c-6.63-11.05-22.57-11.26-29.49-.39l-89.6 140.79 16.58-64.84c2.8-12.58-8.62-23.7-21.12-20.58L196.6 77.22l-45.3-51.33c-6.94-8.67-20.13-8.67-27.07 0l-45.3 51.33L53.2 63.41c-12.5-3.12-23.92 8-21.12 20.58l33.04 160.19-37.09 15.89c-14.01 6-14.01 25.86 0 31.87l102.75 44.04L9.37 457.38c-12.5 12.5-12.5 32.75 0 45.25C15.62 508.88 23.81 512 32 512s16.37-3.12 22.62-9.38L257 300.25l-66.1 115.67 29.16 68.05c6.01 14.01 25.87 14.01 31.87 0l15.89-37.09 160.19 33.04c12.58 2.79 23.7-8.62 20.58-21.12l-13.81-25.72 51.32-45.3c8.67-6.94 8.67-20.13 0-27.07l-51.32-45.3 13.81-25.72c3.12-12.5-8-23.92-20.58-21.12l-64.84 16.58 140.79-89.59c10.88-6.94 10.67-22.88-.38-29.51z\"]\n};\nvar faLeafOak = {\n prefix: 'fas',\n iconName: 'leaf-oak',\n icon: [512, 512, [], \"f6f7\", \"M488.4 155.16c-3.97-2.74-8.07-5.45-12.47-7.36-7.33-3.19-10.35-11.81-8.06-19.56 9.76-33.08 2.92-57.01-12.43-71.51l.17-.17c-14.49-15.34-38.43-22.19-71.5-12.43-7.76 2.29-16.37-.73-19.56-8.06-1.91-4.39-4.62-8.5-7.36-12.47-18.65-26.98-54.04-31.7-77.81-9.65-6.76 6.27-11.71 14.7-16.65 22.66-7.82 12.63-14.94 25.7-23.13 39.93-6.72-5.51-11.65-9.75-16.77-13.73-28.61-22.23-59.63-15.96-77.62 15.4-13.05 22.74-11.64 47.07-8.47 71.76 1.65 12.84 2.69 25.76 4.38 42.31-6.14-4.27-8.58-6.24-11.27-7.78-26.1-14.94-55.32-4.3-63.17 24.64-3.2 11.82-3.57 25.64-.86 37.58 3.93 17.31 12.87 33.46 17.61 50.66 2.6 9.41 3.91 21.04.72 29.81-7.54 20.71-11.4 40.95-5.91 61.32L9.37 457.38c-12.5 12.5-12.5 32.75 0 45.25C15.62 508.88 23.81 512 32 512s16.37-3.12 22.62-9.38l183.71-183.71-64.41 112.71c3.62-1.09 7.23-2.11 10.87-3.43 8.77-3.19 20.4-1.88 29.81.72 17.2 4.75 33.35 13.68 50.66 17.62 11.94 2.71 25.76 2.35 37.58-.86 28.94-7.85 39.58-37.07 24.64-63.17-1.54-2.69-3.52-5.12-7.78-11.27 16.55 1.69 29.46 2.72 42.31 4.38 24.69 3.17 49.01 4.57 71.76-8.47 31.37-17.99 37.63-49.02 15.4-77.62-3.98-5.12-8.21-10.05-13.73-16.77 14.24-8.19 27.31-15.31 39.93-23.13 7.96-4.94 16.4-9.89 22.66-16.65 22.06-23.77 17.35-59.16-9.63-77.81z\"]\n};\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [512, 512, [], \"f094\", \"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\"]\n};\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [], \"f536\", \"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\"]\n};\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLevelDown = {\n prefix: 'fas',\n iconName: 'level-down',\n icon: [352, 512, [], \"f149\", \"M345.04 368l-136 136.901c-9.388 9.465-24.691 9.465-34.079 0L38.96 368c-9.307-9.384-9.277-24.526.069-33.872l22.056-22.056c9.619-9.619 25.301-9.329 34.557.639L152 373.16V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v349.16l56.357-60.448c9.256-9.968 24.938-10.258 34.557-.639l22.056 22.056c9.346 9.345 9.377 24.487.07 33.871z\"]\n};\nvar faLevelDownAlt = {\n prefix: 'fas',\n iconName: 'level-down-alt',\n icon: [320, 512, [], \"f3be\", \"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\"]\n};\nvar faLevelUp = {\n prefix: 'fas',\n iconName: 'level-up',\n icon: [352, 512, [], \"f148\", \"M345.04 144l-136-136.901c-9.388-9.465-24.691-9.465-34.079 0L38.96 144c-9.307 9.384-9.277 24.526.069 33.872l22.056 22.056c9.619 9.619 25.301 9.329 34.557-.639L152 138.84V432H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V138.84l56.357 60.448c9.256 9.968 24.938 10.258 34.557.639l22.056-22.056c9.346-9.345 9.377-24.487.07-33.871z\"]\n};\nvar faLevelUpAlt = {\n prefix: 'fas',\n iconName: 'level-up-alt',\n icon: [320, 512, [], \"f3bf\", \"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\"]\n};\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\"]\n};\nvar faLightCeiling = {\n prefix: 'fas',\n iconName: 'light-ceiling',\n icon: [512, 512, [], \"e016\", \"M288,162.39V0H224V162.39C108.51,176.59,16.56,266,.31,379.85-2.41,399,13.07,416,32.54,416H479.46c19.47,0,34.95-17,32.23-36.15C495.44,266,403.49,176.59,288,162.39ZM256,512a64,64,0,0,0,64-64H192A64,64,0,0,0,256,512Z\"]\n};\nvar faLightSwitch = {\n prefix: 'fas',\n iconName: 'light-switch',\n icon: [384, 512, [], \"e017\", \"M320,0H64A64,64,0,0,0,0,64V448a64,64,0,0,0,64,64H320a64,64,0,0,0,64-64V64A64,64,0,0,0,320,0ZM192,32a16,16,0,1,1-16,16A16,16,0,0,1,192,32Zm0,448a16,16,0,1,1,16-16A16,16,0,0,1,192,480Zm96-112a48,48,0,0,1-48,48H144a48,48,0,0,1-48-48V272H288Zm0-128H96V144a48,48,0,0,1,48-48h96a48,48,0,0,1,48,48Z\"]\n};\nvar faLightSwitchOff = {\n prefix: 'fas',\n iconName: 'light-switch-off',\n icon: [384, 512, [], \"e018\", \"M320,0H64A64,64,0,0,0,0,64V448a64,64,0,0,0,64,64H320a64,64,0,0,0,64-64V64A64,64,0,0,0,320,0ZM192,32a16,16,0,1,1-16,16A16,16,0,0,1,192,32Zm0,448a16,16,0,1,1,16-16A16,16,0,0,1,192,480Zm96-192h0v80a48,48,0,0,1-48,48H144a48,48,0,0,1-48-48V272h0V240h0V144a48,48,0,0,1,48-48h96a48,48,0,0,1,48,48v80h0ZM128,352a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V256H128Z\"]\n};\nvar faLightSwitchOn = {\n prefix: 'fas',\n iconName: 'light-switch-on',\n icon: [384, 512, [], \"e019\", \"M320,0H64A64,64,0,0,0,0,64V448a64,64,0,0,0,64,64H320a64,64,0,0,0,64-64V64A64,64,0,0,0,320,0ZM192,32a16,16,0,1,1-16,16A16,16,0,0,1,192,32Zm0,448a16,16,0,1,1,16-16A16,16,0,0,1,192,480Zm96-240h0v32h0v96a48,48,0,0,1-48,48H144a48,48,0,0,1-48-48V288h0V224h0V144a48,48,0,0,1,48-48h96a48,48,0,0,1,48,48ZM224,128H160a32,32,0,0,0-32,32v96H256V160A32,32,0,0,0,224,128Z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [352, 512, [], \"f0eb\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faLightbulbDollar = {\n prefix: 'fas',\n iconName: 'lightbulb-dollar',\n icon: [352, 512, [], \"f670\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM175.45 0C73.44.31 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0zM192 255.88V272c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V80c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faLightbulbExclamation = {\n prefix: 'fas',\n iconName: 'lightbulb-exclamation',\n icon: [352, 512, [], \"f671\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM175.45 0C73.44.31 0 82.97 0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0zm.55 320c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm38.24-238.41l-12.8 128c-.82 8.18-7.7 14.41-15.92 14.41h-19.04c-8.22 0-15.1-6.23-15.92-14.41l-12.8-128c-.94-9.42 6.45-17.59 15.92-17.59h44.64c9.47 0 16.86 8.17 15.92 17.59z\"]\n};\nvar faLightbulbOn = {\n prefix: 'fas',\n iconName: 'lightbulb-on',\n icon: [640, 512, [], \"f672\", \"M240.06,454.34A32,32,0,0,0,245.42,472l17.1,25.69c5.23,7.91,17.17,14.28,26.64,14.28h61.7c9.47,0,21.41-6.37,26.64-14.28L394.59,472A37.47,37.47,0,0,0,400,454.34L400,416H240ZM319.45,0C217.44.31,144,83,144,176a175,175,0,0,0,43.56,115.78c16.52,18.85,42.36,58.22,52.21,91.44,0,.28.07.53.11.78H400.12c0-.25.07-.5.11-.78,9.85-33.22,35.69-72.59,52.21-91.44A175,175,0,0,0,496,176C496,78.63,416.91-.31,319.45,0ZM320,96a80.09,80.09,0,0,0-80,80,16,16,0,0,1-32,0A112.12,112.12,0,0,1,320,64a16,16,0,0,1,0,32ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM131.08,55.22l-55.42-32a24,24,0,1,0-24,41.56l55.42,32a24,24,0,1,0,24-41.56Zm457.26,264-55.42-32a24,24,0,1,0-24,41.56l55.42,32a24,24,0,0,0,24-41.56Zm-481.26-32-55.42,32a24,24,0,1,0,24,41.56l55.42-32a24,24,0,0,0-24-41.56ZM520.94,100a23.8,23.8,0,0,0,12-3.22l55.42-32a24,24,0,0,0-24-41.56l-55.42,32a24,24,0,0,0,12,44.78Z\"]\n};\nvar faLightbulbSlash = {\n prefix: 'fas',\n iconName: 'lightbulb-slash',\n icon: [640, 512, [], \"f673\", \"M633.82 458.1L439.73 308.09c4.51-6.26 8.87-11.94 12.71-16.31C479.55 260.85 496 220.37 496 176 496 78.8 417.2 0 320 0 208.69 0 164.65 92.77 163.64 94.71L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM320 96c-37.14 0-68.17 25.56-77.14 59.94l-26.89-20.78C232.36 93.59 272.69 64 320 64c8.84 0 16 7.16 16 16s-7.16 16-16 16zm-79.99 320l.04 38.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.02-15.21L370.03 416H240.01zm-76.28-159.44c6.57 12.69 14.49 24.57 23.83 35.22 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h88.74L163.73 256.56z\"]\n};\nvar faLightsHoliday = {\n prefix: 'fas',\n iconName: 'lights-holiday',\n icon: [640, 512, [], \"f7b2\", \"M637.4 98.8l-17.5-27.4c-4.7-7.4-14.2-9.5-21.8-5.1C522 110.7 424 135 320 135S118 110.7 41.9 66.3c-7.6-4.4-17.1-2.3-21.8 5.1L2.6 98.8c-4.9 7.8-2.7 18.3 5.2 22.9 38.1 22.4 81.1 40 127 53L114.7 230c-25.5 1.1-48.5 16.2-61.3 51.6-18.1 49.8 14.3 129 27.9 134 13.5 4.9 89.3-34.9 107.5-84.7 12.9-35.3 5-61.7-13.8-79l22.8-62.6c29.3 5.2 59.6 8.4 90.4 9.8v63c-23.6 9.8-40 31.8-40 69.5 0 53 57.6 116.4 72 116.4s72-63.3 72-116.4c0-37.6-16.4-59.7-40-69.5v-63c30.8-1.4 61-4.6 90.4-9.8l22.8 62.6c-18.8 17.3-26.7 43.6-13.8 79 18.1 49.8 93.9 89.6 107.5 84.7 13.5-4.9 46-84.2 27.9-134-12.9-35.3-35.8-50.5-61.3-51.6l-20.1-55.3c45.9-13 88.9-30.6 127-53 7.5-4.6 9.7-15.1 4.8-22.9zM145.6 309c-4.8 13.1-26.4 37.1-42.5 46.5-6.3-17.5-7.4-49.7-2.7-62.9 4.1-11.3 17.6-16.8 30-12.3s19.3 17.4 15.2 28.7zM320 384c-11.9-14.3-24-44.2-24-58.2 0-12.1 10.7-21.8 24-21.8s24 9.8 24 21.8c0 14-12.1 43.9-24 58.2zm189.5-103.7c12.5-4.5 25.9 1 30 12.3 4.8 13.1 3.7 45.4-2.7 62.9-16.1-9.3-37.7-33.3-42.5-46.5-4-11.3 2.8-24.2 15.2-28.7z\"]\n};\nvar faLineColumns = {\n prefix: 'fas',\n iconName: 'line-columns',\n icon: [512, 512, [], \"f870\", \"M496 288H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 128H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-256H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM208 288H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-384H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm0 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLineHeight = {\n prefix: 'fas',\n iconName: 'line-height',\n icon: [640, 512, [], \"f871\", \"M626.29 224H269.71c-7.57 0-13.71 7.16-13.71 16v32c0 8.84 6.14 16 13.71 16h356.58c7.57 0 13.71-7.16 13.71-16v-32c0-8.84-6.14-16-13.71-16zm0 160H269.71c-7.57 0-13.71 7.16-13.71 16v32c0 8.84 6.14 16 13.71 16h356.58c7.57 0 13.71-7.16 13.71-16v-32c0-8.84-6.14-16-13.71-16zm0-320H269.71C262.14 64 256 71.16 256 80v32c0 8.84 6.14 16 13.71 16h356.58c7.57 0 13.71-7.16 13.71-16V80c0-8.84-6.14-16-13.71-16zM176 144c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C-4.64 126 .36 144 16 144h48v224H16c-14.29 0-21.31 17.31-11.29 27.31l80 80a16 16 0 0 0 22.62 0l80-80C196.64 386 191.64 368 176 368h-48V144z\"]\n};\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [512, 512, [], \"f0c1\", \"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"]\n};\nvar faLips = {\n prefix: 'fas',\n iconName: 'lips',\n icon: [640, 512, [], \"f600\", \"M631.14 195.68C579.47 109.99 466.31 32 417.72 32c0 0-32.57 0-97.72 50-65.15-50-97.72-50-97.72-50-48.59 0-161.75 77.99-213.42 163.68-10.32 17.11-11.63 37.99-3.89 56.38C32.95 318.51 117.59 480 279.28 480h81.43c161.69 0 246.33-161.49 274.32-227.95 7.74-18.38 6.43-39.26-3.89-56.37zM320 320c-170.66 0-256-96-256-96s64-32 160-32l35.38 8.84C278.2 205.55 298.95 208 320 208s41.8-2.45 60.62-7.16L416 192c96 0 160 32 160 32s-85.34 96-256 96z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [384, 512, [], \"f195\", \"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [], \"f03a\", \"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n prefix: 'fas',\n iconName: 'list-alt',\n icon: [512, 512, [], \"f022\", \"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\"]\n};\nvar faListMusic = {\n prefix: 'fas',\n iconName: 'list-music',\n icon: [512, 512, [], \"f8c9\", \"M16 256h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0-128h256a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16H16A16 16 0 0 0 0 80v32a16 16 0 0 0 16 16zm128 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM470.94 1.33l-96.53 28.51A32 32 0 0 0 352 60.34V360a148.76 148.76 0 0 0-48-8c-61.86 0-112 35.82-112 80s50.14 80 112 80 112-35.82 112-80V148.15l73-21.39a32 32 0 0 0 23-30.71V32a32 32 0 0 0-41.06-30.67z\"]\n};\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [], \"f0ca\", \"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLocation = {\n prefix: 'fas',\n iconName: 'location',\n icon: [512, 512, [], \"f601\", \"M496 224h-50.88C431.61 143.66 368.34 80.39 288 66.88V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v50.88C143.66 80.39 80.39 143.66 66.88 224H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h50.88C80.39 368.34 143.66 431.61 224 445.12V496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-50.88c80.34-13.51 143.61-76.78 157.12-157.12H496c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM256 384c-70.7 0-128-57.31-128-128s57.3-128 128-128 128 57.31 128 128-57.3 128-128 128zm0-216c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [512, 512, [], \"f124\", \"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\"]\n};\nvar faLocationCircle = {\n prefix: 'fas',\n iconName: 'location-circle',\n icon: [496, 512, [], \"f602\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm110.24 169.74l-95.95 207.89c-11.2 23.99-46.38 15.99-46.38-9.59v-87.96h-87.96c-25.59 0-33.58-35.18-9.59-46.38l207.89-95.95c19.2-7.99 39.99 12.8 31.99 31.99z\"]\n};\nvar faLocationSlash = {\n prefix: 'fas',\n iconName: 'location-slash',\n icon: [640, 512, [], \"f603\", \"M633.82 458.1L488.95 346.13c9.66-17.86 16.68-37.35 20.18-58.13H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-50.88C495.61 143.66 432.34 80.39 352 66.88V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v50.88c-37.52 6.31-71.24 23.54-97.95 48.24L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM437.33 306.24l-33.09-25.58c2.33-7.84 3.76-16.05 3.76-24.66 0-48.6-39.4-88-88-88-16.56 0-31.84 4.8-44.99 12.78l-33.21-25.66C263.45 138.28 290.44 128 320 128c70.7 0 128 57.31 128 128 0 17.93-3.94 34.83-10.67 50.24zM320 384c-62.37 0-114.18-44.65-125.55-103.7L121.61 224H80c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h50.88c13.51 80.34 76.78 143.61 157.12 157.12V496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-50.88c14.07-2.37 27.35-6.75 40.19-11.99l-64.57-49.9c-2.57.15-5.01.77-7.62.77z\"]\n};\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [], \"f023\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockAlt = {\n prefix: 'fas',\n iconName: 'lock-alt',\n icon: [448, 512, [], \"f30d\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zM264 392c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48zm32-168H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\"]\n};\nvar faLockOpenAlt = {\n prefix: 'fas',\n iconName: 'lock-open-alt',\n icon: [576, 512, [], \"f3c2\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0zM264 392c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faLongArrowAltDown = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-down',\n icon: [256, 512, [], \"f309\", \"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\"]\n};\nvar faLongArrowAltLeft = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-left',\n icon: [448, 512, [], \"f30a\", \"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\"]\n};\nvar faLongArrowAltRight = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-right',\n icon: [448, 512, [], \"f30b\", \"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"]\n};\nvar faLongArrowAltUp = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-up',\n icon: [256, 512, [], \"f30c\", \"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\"]\n};\nvar faLongArrowDown = {\n prefix: 'fas',\n iconName: 'long-arrow-down',\n icon: [320, 512, [], \"f175\", \"M261.573 286.544L196 352.118V56c0-13.255-10.745-24-24-24h-24c-13.255 0-24 10.745-24 24v296.118l-65.573-65.574c-9.373-9.373-24.569-9.373-33.941 0L7.515 303.515c-9.373 9.373-9.373 24.569 0 33.941L143.03 472.97c9.373 9.373 24.568 9.373 33.941 0l135.515-135.514c9.373-9.373 9.373-24.569 0-33.941l-16.971-16.971c-9.373-9.373-24.569-9.373-33.942 0z\"]\n};\nvar faLongArrowLeft = {\n prefix: 'fas',\n iconName: 'long-arrow-left',\n icon: [448, 512, [], \"f177\", \"M193.456 357.573L127.882 292H424c13.255 0 24-10.745 24-24v-24c0-13.255-10.745-24-24-24H127.882l65.574-65.573c9.373-9.373 9.373-24.569 0-33.941l-16.971-16.971c-9.373-9.373-24.569-9.373-33.941 0L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l135.515 135.515c9.373 9.373 24.569 9.373 33.941 0l16.971-16.971c9.373-9.372 9.373-24.568 0-33.941z\"]\n};\nvar faLongArrowRight = {\n prefix: 'fas',\n iconName: 'long-arrow-right',\n icon: [448, 512, [], \"f178\", \"M254.544 154.427L320.118 220H24c-13.255 0-24 10.745-24 24v24c0 13.255 10.745 24 24 24h296.118l-65.574 65.573c-9.373 9.373-9.373 24.569 0 33.941l16.971 16.971c9.373 9.373 24.569 9.373 33.941 0L440.97 272.97c9.373-9.373 9.373-24.569 0-33.941L305.456 103.515c-9.373-9.373-24.569-9.373-33.941 0l-16.971 16.971c-9.373 9.372-9.373 24.568 0 33.941z\"]\n};\nvar faLongArrowUp = {\n prefix: 'fas',\n iconName: 'long-arrow-up',\n icon: [320, 512, [], \"f176\", \"M58.427 225.456L124 159.882V456c0 13.255 10.745 24 24 24h24c13.255 0 24-10.745 24-24V159.882l65.573 65.574c9.373 9.373 24.569 9.373 33.941 0l16.971-16.971c9.373-9.373 9.373-24.569 0-33.941L176.971 39.029c-9.373-9.373-24.568-9.373-33.941 0L7.515 174.544c-9.373 9.373-9.373 24.569 0 33.941l16.971 16.971c9.372 9.373 24.568 9.373 33.941 0z\"]\n};\nvar faLoveseat = {\n prefix: 'fas',\n iconName: 'loveseat',\n icon: [512, 512, [], \"f4cc\", \"M160 224v64h192v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm288-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h256v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faLowVision = {\n prefix: 'fas',\n iconName: 'low-vision',\n icon: [576, 512, [], \"f2a8\", \"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\"]\n};\nvar faLuchador = {\n prefix: 'fas',\n iconName: 'luchador',\n icon: [448, 512, [], \"f455\", \"M190.2 256H144c-26.5 0-48-23.9-48-53.3V192h48c26.5 0 48 23.9 48 53.3v8.7c-.6.7-1.2 1.3-1.8 2zm33.8 64h38.7c-6.8-14.8-18.5-33.4-38.7-53.3-20.2 19.9-31.9 38.5-38.7 53.3H224zm-64 32c-17.6 0-32 14.4-32 32s14.4 32 32 32h128c17.6 0 32-14.4 32-32s-14.4-32-32-32H160zm96-106.7v8.7c.6.7 1.2 1.3 1.8 2H304c26.5 0 48-23.9 48-53.3V192h-48c-26.5 0-48 23.9-48 53.3zM448 224v128c0 88.4-71.6 160-160 160H160C71.6 512 0 440.4 0 352V224C0 100.3 100.3 0 224 0s224 100.3 224 224zm-64-52c0-6.6-5.4-12-12-12h-68c-37.9 0-69.3 28.3-77.5 66.2-.9-.7-4.2-.7-5.1 0C213.3 188.3 182 160 144 160H76c-6.6 0-12 5.4-12 12v30.7c0 47.1 35.8 85.3 80 85.3h22.4c-7.4 12.2-12.5 23.5-15.8 32.9-30.9 4.6-54.6 31-54.6 63.1 0 35.5 29.4 64 64.9 64H287c35.5 0 64.9-28.5 64.9-64 0-32.1-23.7-58.5-54.6-63.1-3.3-9.5-8.4-20.7-15.8-32.9H304c44.2 0 80-38.2 80-85.3V172z\"]\n};\nvar faLuggageCart = {\n prefix: 'fas',\n iconName: 'luggage-cart',\n icon: [640, 512, [], \"f59d\", \"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\"]\n};\nvar faLungs = {\n prefix: 'fas',\n iconName: 'lungs',\n icon: [640, 512, [], \"f604\", \"M636.11 390.15C614.44 308.85 580.07 231 534.1 159.13 511.98 124.56 498.03 96 454.05 96 415.36 96 384 125.42 384 161.71v60.11l-32.88-21.92a15.996 15.996 0 0 1-7.12-13.31V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v170.59c0 5.35-2.67 10.34-7.12 13.31L256 221.82v-60.11C256 125.42 224.64 96 185.95 96c-43.98 0-57.93 28.56-80.05 63.13C59.93 231 25.56 308.85 3.89 390.15 1.3 399.84 0 409.79 0 419.78c0 61.23 62.48 105.44 125.24 88.62l59.5-15.95c42.18-11.3 71.26-47.47 71.26-88.62v-87.49l-85.84 57.23a7.992 7.992 0 0 1-11.09-2.22l-8.88-13.31a7.992 7.992 0 0 1 2.22-11.09L320 235.23l167.59 111.72a7.994 7.994 0 0 1 2.22 11.09l-8.88 13.31a7.994 7.994 0 0 1-11.09 2.22L384 316.34v87.49c0 41.15 29.08 77.31 71.26 88.62l59.5 15.95C577.52 525.22 640 481.01 640 419.78c0-9.99-1.3-19.94-3.89-29.63z\"]\n};\nvar faLungsVirus = {\n prefix: 'fas',\n iconName: 'lungs-virus',\n icon: [640, 512, [], \"e067\", \"M344,150.68V16A16,16,0,0,0,328,0H312a16,16,0,0,0-16,16V150.68a46.45,46.45,0,0,1,48,0ZM195.54,444.46a48.06,48.06,0,0,1,0-67.88l8.58-8.58H192a48,48,0,0,1,0-96h12.12l-8.58-8.57a48,48,0,0,1,60.46-74V161.75C256,125.38,224.62,96,186,96c-44,0-58,28.5-80.12,63.13a819.52,819.52,0,0,0-102,231A113.16,113.16,0,0,0,0,419.75C0,481,62.5,525.26,125.25,508.38l59.5-15.87a98.51,98.51,0,0,0,52.5-34.75,46.49,46.49,0,0,1-41.71-13.3Zm226.29-22.63a16,16,0,0,0,0-22.62l-8.58-8.58C393.09,370.47,407.37,336,435.88,336H448a16,16,0,0,0,0-32H435.88c-28.51,0-42.79-34.47-22.63-54.62l8.58-8.58a16,16,0,0,0-22.63-22.63l-8.57,8.58C370.47,246.91,336,232.63,336,204.12V192a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.58c20.16,20.15,5.88,54.62-22.63,54.62H192a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.58a16,16,0,1,0,22.63,22.62l8.57-8.57C269.53,393.1,304,407.38,304,435.88V448a16,16,0,0,0,32,0V435.88c0-28.5,34.47-42.78,54.63-22.62l8.57,8.57a16,16,0,0,0,22.63,0ZM288,304a16,16,0,1,1,16-16A16,16,0,0,1,288,304Zm64,64a16,16,0,1,1,16-16A16,16,0,0,1,352,368Zm284.12,22.13a819.52,819.52,0,0,0-102-231C512,124.5,498,96,454,96c-38.62,0-70,29.38-70,65.75v27.72a48,48,0,0,1,60.46,74L435.88,272H448a48,48,0,0,1,0,96H435.88l8.58,8.58a47.7,47.7,0,0,1-41.71,81.18,98.51,98.51,0,0,0,52.5,34.75l59.5,15.87C577.5,525.26,640,481,640,419.75A113.16,113.16,0,0,0,636.12,390.13Z\"]\n};\nvar faMace = {\n prefix: 'fas',\n iconName: 'mace',\n icon: [512, 512, [], \"f6f8\", \"M170.65 296.09L4.69 462.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l165.97-165.97a161.122 161.122 0 0 1-45.27-45.26zm330.33-101.12l-74.99-23.77c-12.6-41.73-45.59-74.19-87.67-85.95L313.05 10.8c-4.92-14.5-17.46-14.37-22.08.22l-23.77 75c-41.73 12.6-74.19 45.59-85.96 87.67l-74.44 25.26c-14.5 4.92-14.37 17.46.22 22.08l74.99 23.77c12.6 41.73 45.59 74.19 87.67 85.96l25.26 74.44c4.92 14.5 17.46 14.37 22.08-.22l23.77-74.99c41.73-12.6 74.19-45.59 85.95-87.67l74.44-25.26c14.52-4.93 14.39-17.47-.2-22.09zM304 240c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faMagic = {\n prefix: 'fas',\n iconName: 'magic',\n icon: [512, 512, [], \"f0d0\", \"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [512, 512, [], \"f076\", \"M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z\"]\n};\nvar faMailBulk = {\n prefix: 'fas',\n iconName: 'mail-bulk',\n icon: [576, 512, [], \"f674\", \"M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z\"]\n};\nvar faMailbox = {\n prefix: 'fas',\n iconName: 'mailbox',\n icon: [576, 512, [], \"f813\", \"M144 64A144 144 0 0 0 0 208v208a32 32 0 0 0 32 32h256V208A144 144 0 0 0 144 64zm80 176a16 16 0 0 1-16 16H80a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h128a16 16 0 0 1 16 16zM432 64H244.87C290.23 95.87 320 148.48 320 208v240h224a32 32 0 0 0 32-32V208A144 144 0 0 0 432 64zm80 208a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-48h-56a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h104a16 16 0 0 1 16 16z\"]\n};\nvar faMale = {\n prefix: 'fas',\n iconName: 'male',\n icon: [192, 512, [], \"f183\", \"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\"]\n};\nvar faMandolin = {\n prefix: 'fas',\n iconName: 'mandolin',\n icon: [512, 512, [], \"f6f9\", \"M507.31 50.67l-46-46a16 16 0 0 0-19.81-2.25l-64 40.07a32 32 0 0 0-14 19.11L349 117.73l-74.46 74.46C90.38 190.67 46 241 30.74 256.28c-46.81 46.79-39.52 150.36 17.54 207.45s160.65 64.34 207.44 17.53C271 466 321.32 421.62 319.8 237.45L394.27 163l56.11-14.51a32 32 0 0 0 19.11-14l40.07-64a16 16 0 0 0-2.25-19.82zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [], \"f279\", \"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarked = {\n prefix: 'fas',\n iconName: 'map-marked',\n icon: [576, 512, [], \"f59f\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarkedAlt = {\n prefix: 'fas',\n iconName: 'map-marked-alt',\n icon: [576, 512, [], \"f5a0\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarker = {\n prefix: 'fas',\n iconName: 'map-marker',\n icon: [384, 512, [], \"f041\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\"]\n};\nvar faMapMarkerAlt = {\n prefix: 'fas',\n iconName: 'map-marker-alt',\n icon: [384, 512, [], \"f3c5\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"]\n};\nvar faMapMarkerAltSlash = {\n prefix: 'fas',\n iconName: 'map-marker-alt-slash',\n icon: [640, 512, [], \"f605\", \"M300.8 502.4c9.6 12.8 28.8 12.8 38.4 0 18.6-26.69 35.23-50.32 50.14-71.47L131.47 231.62c10.71 52.55 50.15 99.78 169.33 270.78zm333.02-44.3L462.41 325.62C502.09 265.52 512 238.3 512 192 512 86.4 425.6 0 320 0c-68.2 0-128.24 36.13-162.3 90.12L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zm-263.7-203.81L247 159.13c12.34-27.96 40.01-47.13 73-47.13 44.8 0 80 35.2 80 80 0 25.57-11.71 47.74-29.88 62.29z\"]\n};\nvar faMapMarkerCheck = {\n prefix: 'fas',\n iconName: 'map-marker-check',\n icon: [384, 512, [], \"f606\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 9.6 12.8 28.8 12.8 38.4 0C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm114.08 163.83L175.04 293.82c-4.31 4.28-11.28 4.25-15.55-.06l-75.72-76.33c-4.28-4.31-4.25-11.28.06-15.56l26.03-25.82c4.31-4.28 11.28-4.25 15.56.06l42.15 42.49 97.2-96.42c4.31-4.28 11.28-4.25 15.55.06l25.82 26.03c4.28 4.32 4.25 11.28-.06 15.56z\"]\n};\nvar faMapMarkerEdit = {\n prefix: 'fas',\n iconName: 'map-marker-edit',\n icon: [384, 512, [], \"f607\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 9.6 12.8 28.8 12.8 38.4 0C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm-43.17 283.15l-42.83 4.8c-5.78.62-10.57-4.27-9.95-9.95l4.8-42.83 85.54-85.54 47.98 47.98-85.54 85.54zm133.91-133.9l-28.26 28.26-47.98-47.98 28.26-28.26c7.02-7.02 18.39-7.02 25.41 0l22.57 22.57c7.02 7.01 7.02 18.39 0 25.41z\"]\n};\nvar faMapMarkerExclamation = {\n prefix: 'fas',\n iconName: 'map-marker-exclamation',\n icon: [384, 512, [], \"f608\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 9.6 12.8 28.8 12.8 38.4 0C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm0 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.44-110.41c-.82 8.18-7.7 14.41-15.92 14.41h-19.04c-8.22 0-15.1-6.23-15.92-14.41l-12.8-128c-.94-9.42 6.45-17.59 15.92-17.59h44.64c9.47 0 16.86 8.17 15.92 17.59l-12.8 128z\"]\n};\nvar faMapMarkerMinus = {\n prefix: 'fas',\n iconName: 'map-marker-minus',\n icon: [384, 512, [], \"f609\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 9.6 12.8 28.8 12.8 38.4 0C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm112 200c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faMapMarkerPlus = {\n prefix: 'fas',\n iconName: 'map-marker-plus',\n icon: [384, 512, [], \"f60a\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 9.6 12.8 28.8 12.8 38.4 0C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm112 200c0 8.84-7.16 16-16 16h-72v72c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-72H96c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h72V96c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v72h72c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faMapMarkerQuestion = {\n prefix: 'fas',\n iconName: 'map-marker-question',\n icon: [384, 512, [], \"f60b\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 9.6 12.8 28.8 12.8 38.4 0C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm0 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm26.67-113.27v1.43c0 8.75-7.09 15.84-15.84 15.84h-16.32c-8.75 0-15.84-7.09-15.84-15.84V224c0-9.1 5.19-17.43 13.33-21.5 30.61-15.31 50.67-26.54 50.67-42.5 0-19.39-14.02-40-40-40-17.93 0-33.13 11.84-38.2 28.12-2.15 6.9-8.11 11.88-15.33 11.88H124.3c-10.24 0-17.72-9.56-15.44-19.55 8.91-39.15 44-68.45 85.81-68.45 55.08 0 88 44.75 88 88 0 40.95-32.75 62.47-64 78.73z\"]\n};\nvar faMapMarkerSlash = {\n prefix: 'fas',\n iconName: 'map-marker-slash',\n icon: [640, 512, [], \"f60c\", \"M633.82 458.1L462.41 325.62C502.09 265.52 512 238.3 512 192 512 86.4 425.6 0 320 0c-68.2 0-128.24 36.13-162.3 90.12L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM300.8 502.4c9.6 12.8 28.8 12.8 38.4 0 18.6-26.69 35.23-50.32 50.14-71.47L131.47 231.62c10.71 52.55 50.15 99.78 169.33 270.78z\"]\n};\nvar faMapMarkerSmile = {\n prefix: 'fas',\n iconName: 'map-marker-smile',\n icon: [384, 512, [], \"f60d\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 9.6 12.8 28.8 12.8 38.4 0C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm64 117.16c14.82 0 26.84 12.02 26.84 26.84s-12.02 26.84-26.84 26.84-26.84-12.02-26.84-26.84 12.02-26.84 26.84-26.84zm-128 0c14.82 0 26.84 12.02 26.84 26.84s-12.02 26.84-26.84 26.84-26.84-12.02-26.84-26.84 12.02-26.84 26.84-26.84zm164.17 140.97C267.3 287.28 230.78 304 192 304c-38.75 0-75.27-16.72-100.16-45.86-5.75-6.72-4.95-16.81 1.77-22.55 6.69-5.73 16.81-4.97 22.55 1.77C134.98 259.38 162.62 272 192 272c29.41 0 57.03-12.63 75.83-34.66 5.78-6.73 15.86-7.53 22.56-1.78 6.72 5.74 7.52 15.85 1.78 22.57z\"]\n};\nvar faMapMarkerTimes = {\n prefix: 'fas',\n iconName: 'map-marker-times',\n icon: [384, 512, [], \"f60e\", \"M192 0C86.4 0 0 86.4 0 192c0 76.8 25.6 99.2 172.8 310.4 9.6 12.8 28.8 12.8 38.4 0C358.4 291.2 384 268.8 384 192 384 86.4 297.6 0 192 0zm84.85 242.91c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L192 225.94l-50.91 50.91c-6.25 6.25-16.38 6.25-22.63 0l-11.31-11.31c-6.25-6.25-6.25-16.38 0-22.63L158.06 192l-50.91-50.91c-6.25-6.25-6.25-16.38 0-22.63l11.31-11.31c6.25-6.25 16.38-6.25 22.63 0L192 158.06l50.91-50.91c6.25-6.25 16.38-6.25 22.63 0l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63L225.94 192l50.91 50.91z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [288, 512, [], \"f276\", \"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"]\n};\nvar faMapSigns = {\n prefix: 'fas',\n iconName: 'map-signs',\n icon: [512, 512, [], \"f277\", \"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [384, 512, [], \"f222\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [512, 512, [], \"f227\", \"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [384, 512, [], \"f229\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsStrokeH = {\n prefix: 'fas',\n iconName: 'mars-stroke-h',\n icon: [480, 512, [], \"f22b\", \"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMarsStrokeV = {\n prefix: 'fas',\n iconName: 'mars-stroke-v',\n icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z\"]\n};\nvar faMeat = {\n prefix: 'fas',\n iconName: 'meat',\n icon: [512, 512, [], \"f814\", \"M444 68.52C399.45 24.05 345.11 0 299.17 0c-23.64 0-44.77 6.79-61.47 20a41.83 41.83 0 0 0-7.3 5.82C191.68 64.5 128.14 139.6 128.14 209.42v100.37l-8.61 8.6c-9.71 9.69-24 11.07-36.79 6a60.33 60.33 0 0 0-65 98.72c15.26 15.28 36.51 19.59 56.13 15.1-4.49 19.6-.18 40.83 15.11 56.1a60.36 60.36 0 0 0 98.83-65c-5.1-12.73-3.72-27 6-36.75l8.6-8.59h100.47c69.89 0 145.07-63.46 183.8-102.15a40.86 40.86 0 0 0 6.66-9c37.42-49.4 17.37-137.63-49.34-204.3zm8.73 179.39c-9.76 9.75-24.3 11.8-34.79 11.8-34.72 0-77.19-20.87-110.82-54.47-27.19-27.16-46.31-60.32-52.45-91-4.74-23.7-1.19-43.56 9.74-54.48C274.13 50.05 288.69 48 299.18 48c34.72 0 77.18 20.87 110.82 54.46 53.88 53.84 67 121.19 42.7 145.45zM331.89 127.23c-9.81 9.8-5.84 29.67 8.88 44.37s34.61 18.68 44.42 8.87 5.84-29.66-8.88-44.37-34.61-18.67-44.42-8.87z\"]\n};\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [], \"f5a2\", \"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\"]\n};\nvar faMedkit = {\n prefix: 'fas',\n iconName: 'medkit',\n icon: [512, 512, [], \"f0fa\", \"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\"]\n};\nvar faMegaphone = {\n prefix: 'fas',\n iconName: 'megaphone',\n icon: [576, 512, [], \"f675\", \"M32 176c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32 11.38 0 20.9-6.28 26.57-15.22l106.99 32.3c-3.35 9.76-5.56 20.04-5.56 30.92 0 52.94 43.06 96 96 96 44.49 0 81.66-30.57 92.5-71.7L480 448V64L58.57 191.22C52.9 182.28 43.38 176 32 176zm179.29 190.88l91.47 27.61C297.95 415.92 278.85 432 256 432c-26.47 0-48-21.53-48-48 0-6.05 1.24-11.79 3.29-17.12zM560 32h-32c-8.84 0-16 7.16-16 16v416c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMeh = {\n prefix: 'fas',\n iconName: 'meh',\n icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehBlank = {\n prefix: 'fas',\n iconName: 'meh-blank',\n icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehRollingEyes = {\n prefix: 'fas',\n iconName: 'meh-rolling-eyes',\n icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\"]\n};\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [640, 512, [], \"f538\", \"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z\"]\n};\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [288, 512, [], \"f223\", \"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [], \"f753\", \"M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [352, 512, [], \"f130\", \"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneAlt = {\n prefix: 'fas',\n iconName: 'microphone-alt',\n icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\"]\n};\nvar faMicrophoneAltSlash = {\n prefix: 'fas',\n iconName: 'microphone-alt-slash',\n icon: [640, 512, [], \"f539\", \"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneStand = {\n prefix: 'fas',\n iconName: 'microphone-stand',\n icon: [512, 512, [], \"f8cb\", \"M289.54 60.53c-23.85 23.84-34.57 55.55-33 86.77l108.15 108.14c31.22 1.58 62.94-9.14 86.78-33l2.19-2.18L291.72 58.34zM6.74 423.18a26.67 26.67 0 0 0 1.07 36.57l44.38 44.37a26.74 26.74 0 0 0 36.63 1.14L224 385.93V496a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V329.44L344 280 232 168zM478.46 33.54a114.49 114.49 0 0 0-161.93 0l-2.19 2.18 161.94 161.93 2.18-2.18a114.49 114.49 0 0 0 0-161.93z\"]\n};\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [], \"f610\", \"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faMicrowave = {\n prefix: 'fas',\n iconName: 'microwave',\n icon: [512, 512, [], \"e01b\", \"M464,64H48A48,48,0,0,0,0,112V368a48,48,0,0,0,48,48h0l24,32h48l24-32H368l24,32h48l24-32h0a48,48,0,0,0,48-48V112A48,48,0,0,0,464,64ZM384,352H64V128H384Zm64-72a24,24,0,1,1,24-24A24,24,0,0,1,448,280Zm0-96a24,24,0,1,1,24-24A24,24,0,0,1,448,184Z\"]\n};\nvar faMindShare = {\n prefix: 'fas',\n iconName: 'mind-share',\n icon: [640, 512, [], \"f677\", \"M410.4 273.1c7-1 13.3-1.1 18.6-1.1h51v-15.2c0-20 12-37.3 29-44.8 2.8-7.7 4.8-15.8 4.8-24.5 0-31.3-19.3-58.1-46.7-69.3 1-4.2 1.6-8.6 1.6-13.2 0-33.1-27-60-60.2-60-.7 0-1.4.2-2.1.2-6.6-25.9-30-45.2-58.2-45.2C315 0 288 26.9 288 60v324c12.6-57.1 64-102.3 122.4-110.9zM195.8 0c-28.1 0-51.5 19.3-58.2 45.2-.7 0-1.4-.2-2.1-.2-33.3 0-60.2 26.9-60.2 60 0 4.5.6 8.9 1.6 13.2-27.4 11.2-46.7 38-46.7 69.3 0 11.8 3 22.8 7.8 32.7-22.6 13-38 37-38 64.8 0 31.3 19.2 58 46.5 69.3-.8 4.3-1.3 8.7-1.3 13.2 0 37.3 30.3 67.5 67.8 67.5 3.9 0 7.6-.5 11.3-1.1 9 26.7 34.1 46.1 64 46.1 37.4 0 67.8-30.2 67.8-67.5L256 60c0-33.1-27-60-60.2-60zM635 339.8l-96-95.2c-10.1-10-27-2.6-27 12.2V304h-79.9c-5.6 0-11.2-.1-17 .8-47.1 6.9-85.6 44.5-93.4 91.5C313.9 443 335 486.7 370 510c9.8 6.5 21.6-3.2 17.8-14.4-9-26.6-5.6-95.5 60.3-95.5h64v47.2c0 14.8 16.9 22.2 27 12.2l96-95.2c6.6-6.7 6.6-17.9-.1-24.5z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [], \"f068\", \"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faMinusCircle = {\n prefix: 'fas',\n iconName: 'minus-circle',\n icon: [512, 512, [], \"f056\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\"]\n};\nvar faMinusHexagon = {\n prefix: 'fas',\n iconName: 'minus-hexagon',\n icon: [576, 512, [], \"f307\", \"M553.5 231.8c8.7 14.9 8.7 33.4 0 48.4l-112 192c-8.6 14.7-24.4 23.8-41.5 23.8H176c-17.1 0-32.9-9.1-41.5-23.8l-112-192c-8.7-14.9-8.7-33.4 0-48.4l112-192C143.1 25.1 158.9 16 176 16h224c17.1 0 32.9 9.1 41.5 23.8l112 192zM420 296c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12H156c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h264z\"]\n};\nvar faMinusOctagon = {\n prefix: 'fas',\n iconName: 'minus-octagon',\n icon: [512, 512, [], \"f308\", \"M497.9 150.5c9 9 14.1 21.2 14.1 33.9v143.1c0 12.7-5.1 24.9-14.1 33.9L361.5 497.9c-9 9-21.2 14.1-33.9 14.1H184.5c-12.7 0-24.9-5.1-33.9-14.1L14.1 361.5c-9-9-14.1-21.2-14.1-33.9V184.5c0-12.7 5.1-24.9 14.1-33.9L150.5 14.1c9-9 21.2-14.1 33.9-14.1h143.1c12.7 0 24.9 5.1 33.9 14.1l136.5 136.4zM388 296c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12H124c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h264z\"]\n};\nvar faMinusSquare = {\n prefix: 'fas',\n iconName: 'minus-square',\n icon: [448, 512, [], \"f146\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\"]\n};\nvar faMistletoe = {\n prefix: 'fas',\n iconName: 'mistletoe',\n icon: [576, 512, [], \"f7b4\", \"M373.3 117.3c23.6 0 42.7-19.1 42.7-42.7S396.9 32 373.3 32s-42.7 19.1-42.7 42.7 19.2 42.6 42.7 42.6zm168.8 144.1c-26-26-89.6-38.6-130.9-44.2L312 117.1c-8.4-12.1-13.3-26.6-13.3-42.4s5-30.3 13.3-42.4V16c0-8.8-7.2-16-16-16h-16c-8.8 0-16 7.2-16 16v102.1l-99.1 99.1C123.6 222.8 60 235.4 34 261.4c-40 40-45.4 99.4-12.1 132.7 33.3 33.3 92.8 27.9 132.7-12.1 11.4-11.4 20.1-30.2 26.9-51 6.8 12.3 19.5 20.9 34.5 20.9 22.1 0 40-17.9 40-40s-17.9-40-40-40c-8.2 0-15.4 3.1-21.7 7.3 1.8-10 3.4-19.6 4.5-28.2l65.2-65.2v72.8c14.6 13.2 24 32.1 24 53.3 0 39.7-32.3 72-72 72-6.2 0-12.1-1-17.8-2.5-3.7 9.9-6.2 19.5-6.2 28.1 0 56.6 43 102.4 96 102.4s96-45.8 96-102.4c0-38.1-43.6-94.6-72-127.3v-96.3l65.2 65.2c5.6 41.3 18.2 104.9 44.2 130.9 40 40 99.4 45.4 132.7 12.1 33.4-33.3 28-92.7-12-132.7z\"]\n};\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [320, 512, [], \"f10b\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMobileAlt = {\n prefix: 'fas',\n iconName: 'mobile-alt',\n icon: [320, 512, [], \"f3cd\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMobileAndroid = {\n prefix: 'fas',\n iconName: 'mobile-android',\n icon: [320, 512, [], \"f3ce\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-64 452c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v8z\"]\n};\nvar faMobileAndroidAlt = {\n prefix: 'fas',\n iconName: 'mobile-android-alt',\n icon: [320, 512, [], \"f3cf\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-64 452c0 6.6-5.4 12-12 12h-72c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v8zm64-80c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillAlt = {\n prefix: 'fas',\n iconName: 'money-bill-alt',\n icon: [640, 512, [], \"f3d1\", \"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [640, 512, [], \"f53a\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\"]\n};\nvar faMoneyBillWaveAlt = {\n prefix: 'fas',\n iconName: 'money-bill-wave-alt',\n icon: [640, 512, [], \"f53b\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [640, 512, [], \"f53c\", \"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMoneyCheckAlt = {\n prefix: 'fas',\n iconName: 'money-check-alt',\n icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faMoneyCheckEdit = {\n prefix: 'fas',\n iconName: 'money-check-edit',\n icon: [640, 512, [], \"f872\", \"M462.88 374.62a32 32 0 0 0 22.63 9.38H528a16 16 0 0 0 16-16v-42.46a32 32 0 0 0-9.38-22.63L303.19 71.47l-71.7 71.7zm-254-254l71.7-71.8L238.79 7a24.1 24.1 0 0 0-33.9 0L167 44.87a24 24 0 0 0 0 33.8zM608 160H437l120.27 120.28A64 64 0 0 1 576 325.54V400a16 16 0 0 1-16 16H104a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h323l-64-64H104a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h227L203 160H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32z\"]\n};\nvar faMoneyCheckEditAlt = {\n prefix: 'fas',\n iconName: 'money-check-edit-alt',\n icon: [640, 512, [], \"f873\", \"M204.78 116.47l4.1 4.1 71.69-71.8L238.78 7a24.1 24.1 0 0 0-33.9 0L167 44.87a24 24 0 0 0 0 33.8zM608 160H437l120.25 120.28A64 64 0 0 1 576 325.54V400a16 16 0 0 1-16 16H264a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h163l-64-64h-99a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h67L203 160H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM144 415.88V432a8 8 0 0 1-8 8h-16a8 8 0 0 1-8-8v-16.29a57.26 57.26 0 0 1-31.37-11.35 8 8 0 0 1-.57-12.14L91.81 381a8.21 8.21 0 0 1 10.13-.73 24.08 24.08 0 0 0 12.82 3.73h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V240a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v16.29a57.18 57.18 0 0 1 31.37 11.35 8 8 0 0 1 .57 12.14L164.18 291a8.22 8.22 0 0 1-10.14.73 23.93 23.93 0 0 0-12.81-3.73h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.57 23.42 31.57 43.39 0 24.53-19.04 44.44-42.66 45.07zm318.87-41.25a32 32 0 0 0 22.62 9.37H528a16 16 0 0 0 16-16v-42.46a32 32 0 0 0-9.37-22.63L303.17 71.47l-71.7 71.7z\"]\n};\nvar faMonitorHeartRate = {\n prefix: 'fas',\n iconName: 'monitor-heart-rate',\n icon: [576, 512, [], \"f611\", \"M480 96H96v160h100.95c3.03 0 5.8 1.71 7.15 4.42l19.9 39.8 49.69-99.38c5.9-11.79 22.72-11.79 28.62 0L329.89 256H400c8.84 0 16 7.16 16 16s-7.16 16-16 16h-89.89L288 243.78l-49.69 99.38c-5.9 11.79-22.72 11.79-28.62 0L182.11 288H96v128h384V96zm48-96H48C21.49 0 0 21.49 0 48v416c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V48c0-26.51-21.49-48-48-48zm-16 448H64V64h448v384z\"]\n};\nvar faMonkey = {\n prefix: 'fas',\n iconName: 'monkey',\n icon: [640, 512, [], \"f6fb\", \"M549.47 267.22C529.43 280.25 505.64 288 480 288c-56.67 0-104.29-37.26-121.08-88.38C262.91 224.9 192 312.05 192 416v32c-17.64 0-32-14.36-32-32V176c0-44.11-35.89-80-80-80S0 131.89 0 176v48c0 17.67 14.33 32 32 32s32-14.33 32-32v-48c0-8.83 7.17-16 16-16s16 7.17 16 16v240c0 52.94 43.06 96 96 96h240c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l155.68-103.79 34.68 104.02 1.64 10.11V496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-37.61c0-10.34-1.67-20.61-4.94-30.42l-53.59-160.75zM592 64h-21.88C556.9 26.8 521.74 0 480 0s-76.9 26.8-90.12 64H368c-26.51 0-48 21.49-48 48s21.49 48 48 48h16c0 53.02 42.98 96 96 96s96-42.98 96-96h16c26.51 0 48-21.49 48-48s-21.49-48-48-48zm-152 56c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [512, 512, [], \"f186\", \"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\"]\n};\nvar faMoonCloud = {\n prefix: 'fas',\n iconName: 'moon-cloud',\n icon: [576, 512, [], \"f754\", \"M256 256c-12 0-23.1 3.5-32.7 9.2-3.5-41-37.4-73.2-79.3-73.2-38.8 0-71.1 27.6-78.4 64.2-.5 0-1-.2-1.6-.2-35.3 0-64 28.7-64 64s28.7 64 64 64h192c35.3 0 64-28.7 64-64s-28.7-64-64-64zm309.3 106.4c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7-11.6-2.1-23.3-3.2-35-3.2-90.8 0-166.7 63.2-186.6 148.1 2.5 4 4.9 8.2 6.9 12.6 3.6-.4 7.1-.6 10.7-.6 52.9 0 96 43.1 96 96 0 36.1-20.2 67.2-49.7 83.6 33.2 27.7 76 44.4 122.7 44.4 59.2 0 113.2-26.9 149-71.1 5.2-6.6-.6-16.2-8.8-14.6z\"]\n};\nvar faMoonStars = {\n prefix: 'fas',\n iconName: 'moon-stars',\n icon: [512, 512, [], \"f755\", \"M332.2 426.4c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C108.7 109.4 0 200 0 320c0 106 85.8 192 191.8 192 59.2 0 113.2-26.9 149-71.1 5.3-6.5-.5-16.1-8.6-14.5zM304 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zm154.7 85.3L432 128l-26.7 53.3L352 208l53.3 26.7L432 288l26.7-53.3L512 208l-53.3-26.7z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [], \"f678\", \"M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [], \"f21c\", \"M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z\"]\n};\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z\"]\n};\nvar faMountains = {\n prefix: 'fas',\n iconName: 'mountains',\n icon: [640, 512, [], \"f6fd\", \"M635.73 406.91l-194.04-297.6c-11.57-17.75-39.8-17.75-51.37 0l-32.84 50.37 67.68 105.68c2.38 3.72 1.3 8.67-2.42 11.05l-13.46 8.62c-3.72 2.38-8.67 1.3-11.05-2.42l-59.9-93.54-70.81-110.55c-12.4-19.36-42.64-19.36-55.04 0L4.58 403.18C-7.99 422.81 6.81 448 30.92 448h580.22c22.5 0 36.32-23.09 24.59-41.09z\"]\n};\nvar faMouse = {\n prefix: 'fas',\n iconName: 'mouse',\n icon: [384, 512, [], \"f8cc\", \"M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z\"]\n};\nvar faMouseAlt = {\n prefix: 'fas',\n iconName: 'mouse-alt',\n icon: [384, 512, [], \"f8cd\", \"M224 0h-64A160 160 0 0 0 0 160v192a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V160A160 160 0 0 0 224 0zm0 160a32 32 0 0 1-64 0v-32a32 32 0 0 1 64 0z\"]\n};\nvar faMousePointer = {\n prefix: 'fas',\n iconName: 'mouse-pointer',\n icon: [320, 512, [], \"f245\", \"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\"]\n};\nvar faMp3Player = {\n prefix: 'fas',\n iconName: 'mp3-player',\n icon: [384, 512, [], \"f8ce\", \"M336 0H48A48 48 0 0 0 0 48v416a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zM192 448a96 96 0 1 1 96-96 96 96 0 0 1-96 96zm128-256H64V64h256zM192 320a32 32 0 1 0 32 32 32 32 0 0 0-32-32z\"]\n};\nvar faMug = {\n prefix: 'fas',\n iconName: 'mug',\n icon: [576, 512, [], \"f874\", \"M448 63H56a23.94 23.94 0 0 0-24 24v264a96 96 0 0 0 96 96h192a96 96 0 0 0 96-96v-32h32a128 128 0 0 0 0-256zm0 192h-32V127h32a64 64 0 0 1 0 128z\"]\n};\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [], \"f7b6\", \"M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faMugMarshmallows = {\n prefix: 'fas',\n iconName: 'mug-marshmallows',\n icon: [512, 512, [], \"f7b7\", \"M178.5 67.2l22.4-22.4c-5.9-7.3-14.5-12.4-24.6-12.4H64c-17.7 0-32 14.3-32 32v63.9h130.1c-5.5-21.1-.2-44.6 16.4-61.1zm18.2 61.2h151c7.2-12.3 6.1-28.1-4.4-38.6l-48.5-48.4c-12.5-12.5-32.8-12.5-45.3 0L201 89.8c-10.4 10.5-11.5 26.3-4.3 38.6zM400 160.3H160v63.5c0 17.7-14.3 32-32 32s-32-14.3-32-32v-63.5H32c-17.7 0-32 14.3-32 32v191.8c0 53 43 95.9 96 95.9h192c53 0 96-42.9 96-95.9h16c61.8 0 112-50.2 112-111.9s-50.2-111.9-112-111.9zm0 159.9h-16v-95.9h16c26.5 0 48 21.5 48 47.9s-21.5 48-48 48z\"]\n};\nvar faMugTea = {\n prefix: 'fas',\n iconName: 'mug-tea',\n icon: [640, 512, [], \"f875\", \"M595.6 416H12.36c-25 0-11.6 64 36 64h511.35c47.69 0 60.89-64 35.89-64zM192 384h192a96 96 0 0 0 96-96h32a128 128 0 0 0 0-256H240v64l38.63 38.63a32 32 0 0 1 9.37 22.62V224a32 32 0 0 1-32 32h-64a32 32 0 0 1-32-32v-66.75a32 32 0 0 1 9.37-22.62L208 96V32h-88a23.94 23.94 0 0 0-24 24v232a96 96 0 0 0 96 96zM480 96h32a64 64 0 0 1 0 128h-32z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [], \"f001\", \"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"]\n};\nvar faMusicAlt = {\n prefix: 'fas',\n iconName: 'music-alt',\n icon: [384, 512, [], \"f8cf\", \"M310.94 1.33l-96.53 28.51A32 32 0 0 0 192 60.34V360a148.76 148.76 0 0 0-48-8c-61.86 0-112 35.82-112 80s50.14 80 112 80 112-35.82 112-80V148.15l73-21.39a32 32 0 0 0 23-30.71V32a32 32 0 0 0-41.06-30.67z\"]\n};\nvar faMusicAltSlash = {\n prefix: 'fas',\n iconName: 'music-alt-slash',\n icon: [640, 512, [], \"f8d0\", \"M272 352c-61.86 0-112 35.82-112 80s50.14 80 112 80 112-35.82 112-80v-5.18l-94.91-73.36A144.39 144.39 0 0 0 272 352zm361.82 106.1L384 265V148.15l73-21.39a32 32 0 0 0 23-30.71V32a32 32 0 0 0-41.07-30.67L342.4 29.84a32 32 0 0 0-22.4 30.5v155.22L45.47 3.39A16 16 0 0 0 23 6.2L3.37 31.47a16 16 0 0 0 2.81 22.45l588.35 454.71a16 16 0 0 0 22.47-2.81l19.63-25.27a16 16 0 0 0-2.81-22.45z\"]\n};\nvar faMusicSlash = {\n prefix: 'fas',\n iconName: 'music-slash',\n icon: [640, 512, [], \"f8d1\", \"M192 387.92a139 139 0 0 0-32-3.92c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V327.88l-64-49.46zm441.82 70.18l-65.06-50.28c4.51-7.37 7.24-15.35 7.24-23.82V32a32 32 0 0 0-41.62-30.49L214.41 96a31.85 31.85 0 0 0-21 21.73L45.47 3.39A16 16 0 0 0 23 6.2L3.37 31.47a16 16 0 0 0 2.81 22.45l588.35 454.71a16 16 0 0 0 22.47-2.81l19.63-25.27a16 16 0 0 0-2.81-22.45zM512 323.92a139 139 0 0 0-32-3.92 137 137 0 0 0-22.15 2.11l-156.61-121L512 139.3z\"]\n};\nvar faNarwhal = {\n prefix: 'fas',\n iconName: 'narwhal',\n icon: [640, 512, [], \"f6fe\", \"M600.83 211.05l38.9-166.17c1.04-4.46-.94-9.25-5.14-11.57-5.07-2.8-11.45-.96-14.25 4.11L535 192s.41.17 1.12.46C299.61 197.4 227.97 416 163.88 416 144.1 416 128 399.91 128 380.13v-97.99l49.75-30.51A32.007 32.007 0 0 0 192 225v-80.98c0-12.78-14.24-20.4-24.88-13.31L96 178.13l-71.12-47.42C14.24 123.63 0 131.25 0 144.03V225c0 10.7 5.35 20.69 14.25 26.62L64 282.14v97.99C64 435.2 108.8 480 163.88 480H576c35.35 0 64-28.65 64-64V288c0-31.6-15.54-59.45-39.17-76.95zM432 352c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [576, 512, [], \"f1ea\", \"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [512, 512, [], \"f247\", \"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\"]\n};\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [576, 512, [], \"f248\", \"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\"]\n};\nvar faOctagon = {\n prefix: 'fas',\n iconName: 'octagon',\n icon: [512, 512, [], \"f306\", \"M361.5 14.1c-9-9-21.2-14.1-33.9-14.1H184.5c-12.7 0-24.9 5.1-33.9 14.1L14.1 150.5c-9 9-14.1 21.2-14.1 33.9v143.1c0 12.7 5.1 24.9 14.1 33.9l136.5 136.5c9 9 21.2 14.1 33.9 14.1h143.1c12.7 0 24.9-5.1 33.9-14.1L498 361.4c9-9 14.1-21.2 14.1-33.9v-143c0-12.7-5.1-24.9-14.1-33.9L361.5 14.1z\"]\n};\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOilTemp = {\n prefix: 'fas',\n iconName: 'oil-temp',\n icon: [640, 512, [], \"f614\", \"M320 384c44.18 0 80-35.82 80-80 0-32.79-19.77-60.89-48-73.25V208h48c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-48v-32h48c8.84 0 16-7.16 16-16V96c0-8.84-7.16-16-16-16h-48V48h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v214.75c-28.23 12.35-48 40.46-48 73.25 0 44.18 35.82 80 80 80zm-304 0h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84 5.67 0 11.01-.79 16.46-1.3-16.71-16.89-27.65-39.17-30.96-63.86-18.79-2.44-33.34-9.14-41.59-16.74-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 311.58 58.04 320 32 320H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16zm608 64h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 439.58 442.04 448 416 448s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 439.58 250.04 448 224 448s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 439.58 58.04 448 32 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-128h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1-8.24 7.6-22.8 14.3-41.59 16.74-3.32 24.69-14.25 46.97-30.96 63.86 5.46.51 10.79 1.3 16.46 1.3 38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c.02-8.84-7.14-16-15.98-16z\"]\n};\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [], \"f679\", \"M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z\"]\n};\nvar faOmega = {\n prefix: 'fas',\n iconName: 'omega',\n icon: [512, 512, [], \"f67a\", \"M488 416h-32.61c42.89-53.17 65.05-123.68 53.64-199.4C492.12 104.36 399.19 14.85 286.45 1.77 131.74-16.18 0 104.82 0 256c0 60.59 21.27 116.18 56.61 160H24c-13.25 0-24 10.75-24 24v48c0 13.25 10.75 24 24 24h136c17.67 0 32-14.33 32-32v-42.7c0-20.53-11.09-38.78-27.88-50.59-48.22-33.92-76.98-93.67-65.67-159.06 10.89-62.93 60.5-114.85 122.99-128.01C324.68 77.9 416 156.49 416 256c0 54.44-27.4 102.51-69.08 131.38-16.49 11.43-26.92 29.63-26.92 49.7V480c0 17.67 14.33 32 32 32h136c13.25 0 24-10.75 24-24v-48c0-13.25-10.75-24-24-24z\"]\n};\nvar faOrnament = {\n prefix: 'fas',\n iconName: 'ornament',\n icon: [384, 512, [], \"f7b8\", \"M288 153.9V112c0-8.8-7.2-16-16-16h-24.9c5.5-9.4 8.9-20.3 8.9-32 0-35.3-28.7-64-64-64s-64 28.7-64 64c0 11.7 3.4 22.6 8.9 32H112c-8.8 0-16 7.2-16 16v41.9C66.9 170.7 42.7 195 25.9 224h332.2c-16.8-29-41-53.3-70.1-70.1zM192 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm180.6 176H11.4C4.3 276.1 0 297.5 0 320s4.1 44 11.2 64h361.7c7.1-20 11.2-41.5 11.2-64-.1-22.5-4.4-43.9-11.5-64zM192 512c71 0 132.9-38.7 166.1-96H25.9c33.2 57.3 95.1 96 166.1 96z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [], \"f700\", \"M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z\"]\n};\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faOutlet = {\n prefix: 'fas',\n iconName: 'outlet',\n icon: [512, 512, [], \"e01c\", \"M448,0H64A64,64,0,0,0,0,64V448a64,64,0,0,0,64,64H448a64,64,0,0,0,64-64V64A64,64,0,0,0,448,0ZM386.26,409.29A22.87,22.87,0,0,1,369.85,416H142.15a22.87,22.87,0,0,1-16.41-6.71C87.71,370.28,64,316.1,64,256s23.71-114.28,61.74-153.3A22.86,22.86,0,0,1,142.15,96h227.7a22.86,22.86,0,0,1,16.41,6.7c38,39,61.74,93.2,61.74,153.3S424.29,370.28,386.26,409.29ZM256,304a32,32,0,0,0-32,32v16h64V336A32,32,0,0,0,256,304ZM192,176H176a16,16,0,0,0-16,16v80a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V192A16,16,0,0,0,192,176Zm144,0H320a16,16,0,0,0-16,16v80a16,16,0,0,0,16,16h16a16,16,0,0,0,16-16V192A16,16,0,0,0,336,176Z\"]\n};\nvar faOven = {\n prefix: 'fas',\n iconName: 'oven',\n icon: [448, 512, [], \"e01d\", \"M96,320H352V288H96ZM384,0H64A64,64,0,0,0,0,64v96H448V64A64,64,0,0,0,384,0ZM80,104a24,24,0,1,1,24-24A24,24,0,0,1,80,104Zm96,0a24,24,0,1,1,24-24A24,24,0,0,1,176,104Zm96,0a24,24,0,1,1,24-24A24,24,0,0,1,272,104Zm96,0a24,24,0,1,1,24-24A24,24,0,0,1,368,104ZM0,480a32,32,0,0,0,32,32H416a32,32,0,0,0,32-32V192H0ZM64,256H384V448H64Z\"]\n};\nvar faOverline = {\n prefix: 'fas',\n iconName: 'overline',\n icon: [448, 512, [], \"f876\", \"M432 0H16A16 16 0 0 0 0 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16zM232.19 128h-16.38A167.81 167.81 0 0 0 48 295.81v48.38A167.81 167.81 0 0 0 215.81 512h16.38A167.81 167.81 0 0 0 400 344.19v-48.38A167.81 167.81 0 0 0 232.19 128zM320 344.19A87.91 87.91 0 0 1 232.19 432h-16.38A87.91 87.91 0 0 1 128 344.19v-48.38A87.91 87.91 0 0 1 215.81 208h16.38A87.91 87.91 0 0 1 320 295.81z\"]\n};\nvar faPageBreak = {\n prefix: 'fas',\n iconName: 'page-break',\n icon: [576, 512, [], \"f877\", \"M243.6 256a19.59 19.59 0 0 0-19.6 19.6v24.8a19.59 19.59 0 0 0 19.6 19.6h88.8a19.59 19.59 0 0 0 19.6-19.6v-24.8a19.59 19.59 0 0 0-19.6-19.6zM160 64h176v64a16 16 0 0 0 16 16h64v64h64v-76.06a48.16 48.16 0 0 0-14.09-34L382 14.09A48 48 0 0 0 348.09 0H144a48.14 48.14 0 0 0-48 48.07V208h64zm400 192H432a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM416 448H160v-80H96v96a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48v-96h-64zM160 304v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16z\"]\n};\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [], \"f815\", \"M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z\"]\n};\nvar faPaintBrush = {\n prefix: 'fas',\n iconName: 'paint-brush',\n icon: [512, 512, [], \"f1fc\", \"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\"]\n};\nvar faPaintBrushAlt = {\n prefix: 'fas',\n iconName: 'paint-brush-alt',\n icon: [512, 512, [], \"f5a9\", \"M365.99 33.1L194.11 289.51l78 65 218.81-221.52C564.15 52.52 427.95-55.3 365.99 33.1zM167.87 309.29c-40.45 2.41-77.23 17.53-98.03 72.35-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.39-.68-6.64-1.06-9.96l-87.07-72.56z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\"]\n};\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [], \"f53f\", \"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPalletAlt = {\n prefix: 'fas',\n iconName: 'pallet-alt',\n icon: [640, 512, [], \"f483\", \"M80 256h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm320 0h160c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16H400c-8.8 0-16 7.2-16 16v160c0 8.8 7.2 16 16 16zm224 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [], \"f1d8\", \"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\"]\n};\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [], \"f0c6\", \"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [], \"f1dd\", \"M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z\"]\n};\nvar faParagraphRtl = {\n prefix: 'fas',\n iconName: 'paragraph-rtl',\n icon: [384, 512, [], \"f878\", \"M368 384H112v-48c0-14.25-17.23-21.39-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 516.64 112 511.64 112 496v-48h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM144 224h16v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V64h32v240a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V64h16a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H144C80 0 32 48 32 112s48 112 112 112z\"]\n};\nvar faParking = {\n prefix: 'fas',\n iconName: 'parking',\n icon: [448, 512, [], \"f540\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\"]\n};\nvar faParkingCircle = {\n prefix: 'fas',\n iconName: 'parking-circle',\n icon: [496, 512, [], \"f615\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.46 0-184-82.54-184-184S146.54 72 248 72s184 82.54 184 184-82.54 184-184 184zm32-296h-96c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h48c44.18 0 80-35.82 80-80s-35.82-80-80-80zm0 96h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16z\"]\n};\nvar faParkingCircleSlash = {\n prefix: 'fas',\n iconName: 'parking-circle-slash',\n icon: [496, 512, [], \"f616\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.46 0-184-82.54-184-184 0-30.83 7.71-59.86 21.17-85.41l286.39 221.35C338.86 421.69 295.58 440 248 440zm-9.77-232H280c8.82 0 16 7.18 16 16s-7.18 16-16 16h-.37l-41.4-32zm172.6 133.41l-76.42-59.06C350.07 267.74 360 247.1 360 224c0-44.18-35.82-80-80-80h-96c-6.91 0-12.67 4.43-14.9 10.57l-44.66-34.51C157.14 90.31 200.42 72 248 72c101.46 0 184 82.54 184 184 0 30.83-7.71 59.86-21.17 85.41zM168 352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-19.48l-64-49.46V352z\"]\n};\nvar faParkingSlash = {\n prefix: 'fas',\n iconName: 'parking-slash',\n icon: [640, 512, [], \"f617\", \"M288 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64.86L96 204.21V432c0 26.5 21.5 48 48 48h308.83L288 352.6V368zm345.82 90.1L544 388.68V80c0-26.5-21.5-48-48-48H144c-15.31 0-28.79 7.31-37.58 18.48L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM409.69 284.87l-50.53-39.05c5.4-5.73 8.84-13.34 8.84-21.82 0-17.64-14.36-32-32-32h-46.48l-65.06-50.29C225.61 134 231.98 128 240 128h96c52.94 0 96 43.06 96 96 0 23.24-8.49 44.35-22.31 60.87z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\"]\n};\nvar faPastafarianism = {\n prefix: 'fas',\n iconName: 'pastafarianism',\n icon: [640, 512, [], \"f67b\", \"M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [448, 512, [], \"f0ea\", \"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [448, 512, [], \"f04c\", \"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\"]\n};\nvar faPauseCircle = {\n prefix: 'fas',\n iconName: 'pause-circle',\n icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z\"]\n};\nvar faPawAlt = {\n prefix: 'fas',\n iconName: 'paw-alt',\n icon: [448, 512, [], \"f701\", \"M144 128c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm-48 64c0-26.51-21.49-48-48-48S0 165.49 0 192s21.49 48 48 48 48-21.49 48-48zm208-64c26.51 0 48-21.49 48-48s-21.49-48-48-48-48 21.49-48 48 21.49 48 48 48zm96 16c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-32.69 156.78c-26.29-14.84-47.14-61.41-67.17-97.83C284.41 174.31 254.21 160 224 160s-60.41 14.31-76.15 42.95c-20.29 36.96-40.12 82.56-67.17 97.83C51.63 317.18 32 348.18 32 383.95c0 53.01 42.98 95.98 96 95.98 51.71 1.76 72.19-31.99 96-31.99s44.29 33.75 96 31.99c53.02 0 96-42.97 96-95.98 0-35.77-19.63-66.77-48.69-83.17z\"]\n};\nvar faPawClaws = {\n prefix: 'fas',\n iconName: 'paw-claws',\n icon: [512, 512, [], \"f702\", \"M193.44 222.61c30.94-8.14 46.42-49.94 34.58-93.36-6.53-23.92-20.07-43.04-36.02-54.29V0l-64.01 79.99c-15.02 17.7-20.45 47.82-12.01 78.75 11.84 43.42 46.53 72.02 77.46 63.87zm125.12 0c30.94 8.14 65.62-20.45 77.46-63.87 8.44-30.94 3.01-61.05-12.01-78.75L320 0v74.96c-15.95 11.26-29.49 30.37-36.02 54.29-11.84 43.42 3.64 85.22 34.58 93.36zM256 256c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 378.76 335.41 256 256 256zm-147.28-12.61c-7.21-24.03-24.89-41.91-44.72-48.46V128l-45.51 62.37A96.204 96.204 0 0 0 0 247.09c.03 6.97 1.09 14.22 3.28 21.52 10.4 34.65 42.44 57.09 71.56 50.13 29.11-6.97 44.28-40.7 33.88-75.35zm384.79-53.02L448 128v66.94c-19.83 6.55-37.51 24.43-44.72 48.46-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 2.19-7.29 3.25-14.54 3.28-21.52a96.283 96.283 0 0 0-18.5-56.72z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z\"]\n};\nvar faPegasus = {\n prefix: 'fas',\n iconName: 'pegasus',\n icon: [576, 512, [], \"f703\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128-63.92 0-104.2-36.78-127.66-90.27-3.22-7.35-13.61-7.76-17.04-.5C165.49 57.82 160 80.8 160 105.1c0 67.04 51.01 133.09 128 147.74v3.17c-82.89 0-143.33-57.52-157.03-122.86-16.72 5.47-31.62 14.98-42.97 27.97V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [], \"f304\", \"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\"]\n};\nvar faPenAlt = {\n prefix: 'fas',\n iconName: 'pen-alt',\n icon: [512, 512, [], \"f305\", \"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [], \"f5ac\", \"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [], \"f5ad\", \"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\"]\n};\nvar faPenSquare = {\n prefix: 'fas',\n iconName: 'pen-square',\n icon: [448, 512, [], \"f14b\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faPencil = {\n prefix: 'fas',\n iconName: 'pencil',\n icon: [512, 512, [], \"f040\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilAlt = {\n prefix: 'fas',\n iconName: 'pencil-alt',\n icon: [512, 512, [], \"f303\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilPaintbrush = {\n prefix: 'fas',\n iconName: 'pencil-paintbrush',\n icon: [512, 512, [], \"f618\", \"M316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm181.85 44.53c18.75-18.76 18.75-49.17 0-67.93l-45.26-45.25c-18.76-18.76-49.18-18.76-67.94 0L338.7 60.08l113.2 113.2 46.03-46.04zm-41.18 264.38c-6.59 0-12.24-3.77-14.59-9.98-18.13-47.78-48.4-65.38-82.65-70.71L257.83 412.61C266.64 475.95 315.42 512 384 512c90.07 0 128-72.38 128-154.73-9.79 6.68-44.14 34.35-55.25 34.35zm-336.57-158.3L216 137.51 146.01 33.1C84.05-55.3-52.15 52.52 21.08 132.99l99.1 100.33z\"]\n};\nvar faPencilRuler = {\n prefix: 'fas',\n iconName: 'pencil-ruler',\n icon: [512, 512, [], \"f5ae\", \"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\"]\n};\nvar faPennant = {\n prefix: 'fas',\n iconName: 'pennant',\n icon: [576, 512, [], \"f456\", \"M571 228.5c-78.1 88.2-179.8 108.8-184.1 109.6-134.8 26.1-153.3 7.5-237.1 37.5-10.6 3.8-21.8-3.6-21.8-14.8V112.5c0-9 7.3-16.4 16.3-16 43.2 2 95.3 13.2 155.2 42.4 140.6 68.5 223.7 62.9 252.9 57.2 18-3.8 31.3 18.1 18.6 32.4zM56 0C25.1 0 0 25.1 0 56c0 22.3 13.2 41.4 32 50.4V504c0 4.4 3.6 8 8 8h32c4.4 0 8-3.6 8-8V106.4c18.8-9 32-28.1 32-50.4 0-30.9-25.1-56-56-56z\"]\n};\nvar faPeopleArrows = {\n prefix: 'fas',\n iconName: 'people-arrows',\n icon: [576, 512, [], \"e068\", \"M96,128A64,64,0,1,0,32,64,64,64,0,0,0,96,128Zm0,176.08a44.11,44.11,0,0,1,13.64-32L181.77,204c1.65-1.55,3.77-2.31,5.61-3.57A63.91,63.91,0,0,0,128,160H64A64,64,0,0,0,0,224v96a32,32,0,0,0,32,32V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V383.61l-50.36-47.53A44.08,44.08,0,0,1,96,304.08ZM480,128a64,64,0,1,0-64-64A64,64,0,0,0,480,128Zm32,32H448a63.91,63.91,0,0,0-59.38,40.42c1.84,1.27,4,2,5.62,3.59l72.12,68.06a44.37,44.37,0,0,1,0,64L416,383.62V480a32,32,0,0,0,32,32h64a32,32,0,0,0,32-32V352a32,32,0,0,0,32-32V224A64,64,0,0,0,512,160ZM444.4,295.34l-72.12-68.06A12,12,0,0,0,352,236v36H224V236a12,12,0,0,0-20.28-8.73L131.6,295.34a12.4,12.4,0,0,0,0,17.47l72.12,68.07A12,12,0,0,0,224,372.14V336H352v36.14a12,12,0,0,0,20.28,8.74l72.12-68.07A12.4,12.4,0,0,0,444.4,295.34Z\"]\n};\nvar faPeopleCarry = {\n prefix: 'fas',\n iconName: 'people-carry',\n icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\"]\n};\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [], \"f816\", \"M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [448, 512, [], \"f295\", \"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\"]\n};\nvar faPercentage = {\n prefix: 'fas',\n iconName: 'percentage',\n icon: [384, 512, [], \"f541\", \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faPersonCarry = {\n prefix: 'fas',\n iconName: 'person-carry',\n icon: [384, 512, [], \"f4cf\", \"M0 479.9c0 17.7 14.3 32 32 32s32-14.3 32-32v-74.5C48 391.7.6 350.8 0 350.3v129.6zM368 96H208c-8.8 0-16 7.2-16 16v112h-25.4l-33.3-61.8c-11.1-21.1-32.8-34.2-56.6-34.2H48c-26.5 0-48 21.5-48 48v103c0 18.7 8.2 36.4 22.4 48.6l76 65.1 14.1 92.5c1 5.7 10.1 30.7 36.8 26.3 17.4-2.9 29.2-19.4 26.3-36.8l-14.1-92.5c-2.5-14.8-10.1-28.3-21.5-38.1l-44-37.7v-78.3l32 59.9h240c8.8 0 16-7.2 16-16V112c0-8.9-7.2-16-16-16zM80 96c26.5 0 48-21.5 48-48S106.5 0 80 0 32 21.5 32 48s21.5 48 48 48z\"]\n};\nvar faPersonDolly = {\n prefix: 'fas',\n iconName: 'person-dolly',\n icon: [512, 512, [], \"f4d0\", \"M331.1 360.5c2.3 8.5 11.1 13.6 19.6 11.3l117-31.3c8.5-2.3 13.6-11.1 11.3-19.6L447.6 204c-2.3-8.5-11.1-13.6-19.6-11.3L311 224c-8.5 2.3-13.6 11.1-11.3 19.6l31.4 116.9zM0 479.9c0 17.7 14.3 32 32 32s32-14.3 32-32v-74.5C48 391.7.5 350.8 0 350.3v129.6zm503.4-106.1c-1.1-4.3-5.5-6.8-9.8-5.7l-154.1 41.3c-9.8-12.9-24.2-21.9-40.9-24.5l-59.4-221.6c-1.1-4.3-5.5-6.8-9.8-5.7l-30.9 8.3c-4.3 1.1-6.8 5.5-5.7 9.8l12.9 48.2h-39l-33.3-61.8c-11.1-21.1-32.8-34.2-56.7-34.2H48c-26.5 0-48 21.5-48 48v103c0 18.7 8.2 36.4 22.4 48.6l76 65.1 14.1 92.5c1 5.7 10.1 30.7 36.8 26.3 17.4-2.9 29.2-19.4 26.3-36.8l-14.1-92.5c-2.5-14.8-10.1-28.3-21.5-38.1l-44-37.7V228l32 59.9h94.8l28.9 107.8c-16.4 11.6-27.2 30.6-27.2 52.2 0 35.3 28.7 64 64 64 32.7 0 59.3-24.5 63.2-56.1l154.2-41.3c4.3-1.1 6.8-5.5 5.7-9.8l-8.2-30.9zm-214.8 90.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.1 16-16 16zM80 96c26.5 0 48-21.5 48-48S106.6 0 80 0 32 21.5 32 48s21.5 48 48 48z\"]\n};\nvar faPersonDollyEmpty = {\n prefix: 'fas',\n iconName: 'person-dolly-empty',\n icon: [512, 512, [], \"f4d1\", \"M0 479.9c0 17.7 14.3 32 32 32s32-14.3 32-32v-74.5C48 391.7.5 350.8 0 350.3v129.6zm503.4-106.1c-1.1-4.3-5.5-6.8-9.8-5.7l-154.1 41.3c-9.8-12.9-24.2-21.9-40.9-24.5l-59.4-221.6c-1.1-4.3-5.5-6.8-9.8-5.7l-30.9 8.3c-4.3 1.1-6.8 5.5-5.7 9.8l12.9 48.2h-39l-33.3-61.8c-11.1-21.1-32.8-34.2-56.7-34.2H48c-26.5 0-48 21.5-48 48v103c0 18.7 8.2 36.4 22.4 48.6l76 65.1 14.1 92.5c1 5.7 10.1 30.7 36.8 26.3 17.4-2.9 29.2-19.4 26.3-36.8l-14.1-92.5c-2.5-14.8-10.1-28.3-21.5-38.1l-44-37.7V228l32 59.9h94.8l28.9 107.8c-16.4 11.6-27.2 30.6-27.2 52.2 0 35.3 28.7 64 64 64 32.7 0 59.3-24.5 63.2-56.1l154.2-41.3c4.3-1.1 6.8-5.5 5.7-9.8l-8.2-30.9zm-214.8 90.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.1 16-16 16zM80 96c26.5 0 48-21.5 48-48S106.6 0 80 0 32 21.5 32 48s21.5 48 48 48z\"]\n};\nvar faPersonSign = {\n prefix: 'fas',\n iconName: 'person-sign',\n icon: [512, 512, [], \"f757\", \"M144 96c26.5 0 48-21.5 48-48S170.4 0 144 0 96 21.5 96 48s21.5 48 48 48zm357.5-29.4L433.8 42l5.5-15c3-8.3-1.3-17.5-9.6-20.5l-15-5.5c-8.3-3-17.5 1.3-20.5 9.6l-5.5 15L321.1 1c-8.3-3-17.5 1.3-20.5 9.6l-43.8 120.3c-3 8.3 1.3 17.5 9.6 20.5L334 176l-13 36-47.8-16-49.3-49.3c-12.1-12.1-28.1-18.8-45.2-18.8h-62.9c-24.4 0-46.3 13.6-57.2 35.4L3.4 273.7c-7.9 15.8-1.5 35 14.3 42.9 4.6 2.3 9.5 3.4 14.3 3.4 11.7 0 23-6.5 28.6-17.7L80 263.6v54.8L64.1 476.8c-1.7 17.6 11.1 33.3 28.6 35 1.1.1 2.2.2 3.2.2 16.2 0 30.1-12.3 31.8-28.8L140.9 352h15.3l35.8 71.5V480c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-82.5v-91.2l20 20c7 7 15.6 12.3 25 15.5l46.1 15.4-11.2 30.8c-3 8.3 1.3 17.5 9.6 20.5l15 5.5c8.3 3 17.5-1.3 20.5-9.6l46.2-126.9 67.6 24.6c8.3 3 17.5-1.3 20.5-9.6L511 87.1c3.1-8.3-1.2-17.4-9.5-20.5z\"]\n};\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [], \"f095\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\"]\n};\nvar faPhoneAlt = {\n prefix: 'fas',\n iconName: 'phone-alt',\n icon: [512, 512, [], \"f879\", \"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"]\n};\nvar faPhoneLaptop = {\n prefix: 'fas',\n iconName: 'phone-laptop',\n icon: [640, 512, [], \"f87a\", \"M604 128H420a36 36 0 0 0-36 36v312a36 36 0 0 0 36 36h184a36 36 0 0 0 36-36V164a36 36 0 0 0-36-36zm-28 320H448V192h128zM128 64h320v32h64V48a48.1 48.1 0 0 0-47.91-48H111.91A48.1 48.1 0 0 0 64 48v240H16a16 16 0 0 0-16 16v16a64.14 64.14 0 0 0 63.91 64H352v-96H128z\"]\n};\nvar faPhoneOffice = {\n prefix: 'fas',\n iconName: 'phone-office',\n icon: [576, 512, [], \"f67d\", \"M128 416h64c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v352c0 17.67 14.33 32 32 32zM528 32H256v352c0 35.29-28.71 64-64 64h-64c-35.29 0-64-28.71-64-64V32H48C21.49 32 0 53.49 0 80v384c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM384 432c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v32zm0-128c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v32zm128 128c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v32zm0-128c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v32zm0-112H320V96h192v96z\"]\n};\nvar faPhonePlus = {\n prefix: 'fas',\n iconName: 'phone-plus',\n icon: [512, 512, [], \"f4d2\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4zM16 144h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16h-64V16c0-8.8-7.2-16-16-16H96c-8.8 0-16 7.2-16 16v64H16C7.2 80 0 87.2 0 96v32c0 8.8 7.2 16 16 16z\"]\n};\nvar faPhoneRotary = {\n prefix: 'fas',\n iconName: 'phone-rotary',\n icon: [512, 512, [], \"f8d3\", \"M370.43 192.25A64 64 0 0 0 314.86 160H197.14a64 64 0 0 0-55.57 32.25L36.22 376.62A32 32 0 0 0 32 392.5V448a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32v-55.5a32 32 0 0 0-4.22-15.88zM256 384a72 72 0 1 1 72-72 72 72 0 0 1-72 72zm250.18-261C436.76 65 347.38 32 256 32S75.24 65 5.82 123A16.45 16.45 0 0 0 0 135.64V192a16 16 0 0 0 16 16h70.11a16 16 0 0 0 14.31-8.85L128 128c39.9-17.28 83.2-24 128-24 44.77 0 88.07 6.72 128 24l27.58 71.15a16 16 0 0 0 14.31 8.85H496a16 16 0 0 0 16-16v-56.36a16.45 16.45 0 0 0-5.82-12.64z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faPhoneSquare = {\n prefix: 'fas',\n iconName: 'phone-square',\n icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\"]\n};\nvar faPhoneSquareAlt = {\n prefix: 'fas',\n iconName: 'phone-square-alt',\n icon: [448, 512, [], \"f87b\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z\"]\n};\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [384, 512, [], \"f2a0\", \"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\"]\n};\nvar faPhotoVideo = {\n prefix: 'fas',\n iconName: 'photo-video',\n icon: [640, 512, [], \"f87c\", \"M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z\"]\n};\nvar faPi = {\n prefix: 'fas',\n iconName: 'pi',\n icon: [512, 512, [], \"f67e\", \"M488 160c13.25 0 24-10.75 24-24V88c0-13.26-10.75-24-24-24H99.91c-16.97 0-33.25 6.74-45.25 18.74L4.72 132.69C-5.36 142.77 1.78 160 16.03 160H128v142.46c0 38.8-12.89 75.63-36.62 105.62-7.27 9.18-5.71 22.57 2.56 30.85l34.11 34.11c10.25 10.25 26.95 8.94 36.12-2.28C202.93 423.33 224 364.51 224 302.46V160h64v202.58c0 54.98 37.28 105.36 91.32 115.42 42.26 7.87 83.64-7.87 109.62-40.34l17.8-21.66c8.28-10.35 6.6-25.45-3.75-33.73l-37.46-29.98c-10.35-8.28-25.45-6.61-33.73 3.75L414 377.67a16.806 16.806 0 0 1-13.16 6.33c-9.28 0-16.84-7.56-16.84-16.84V160h104z\"]\n};\nvar faPiano = {\n prefix: 'fas',\n iconName: 'piano',\n icon: [512, 512, [], \"f8d4\", \"M476.62,269.81l-57.24-28.62A64,64,0,0,1,384,184,184.45,184.45,0,0,0,199.55-.5h-15.1A184.45,184.45,0,0,0,0,184H0V479.5a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V327.05A64,64,0,0,0,476.62,269.81ZM448,447.5H64v-96H96v56a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-56h32v56a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-56h32v56a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-56h64v56a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-56h32v56a8,8,0,0,0,8,8h16a8,8,0,0,0,8-8v-56h32Z\"]\n};\nvar faPianoKeyboard = {\n prefix: 'fas',\n iconName: 'piano-keyboard',\n icon: [576, 512, [], \"f8d5\", \"M544 63H32A32 32 0 0 0 0 95v320a32 32 0 0 0 32 32h512a32 32 0 0 0 32-32V95a32 32 0 0 0-32-32zM144 383H64V223h64v80a16 16 0 0 0 16 16zm128 0h-96v-64a16 16 0 0 0 16-16v-80h64v80a16 16 0 0 0 16 16zm128 0h-96v-64a16 16 0 0 0 16-16v-80h64v80a16 16 0 0 0 16 16zm112 0h-80v-64a16 16 0 0 0 16-16v-80h64z\"]\n};\nvar faPie = {\n prefix: 'fas',\n iconName: 'pie',\n icon: [576, 512, [], \"f705\", \"M458.78 304c-10.12 6.94-36.19 32-85.25 32s-75.15-25-85.26-32h-.08c-7.33 5-35.19 32-85.28 32-49.13 0-75.17-25-85.34-32h-.22c-8.34 5.7-26.69 22.63-59.6 29.2l31 92.88A32 32 0 0 0 119.07 448h337.87a32 32 0 0 0 30.36-21.88l31-92.88c-33.11-6.62-52.47-24.4-59.46-29.2zM544 240c-6.44 0-10.37-1.2-14.47-3.52C494.93 136.17 400.07 64 288 64S81 136.21 46.45 236.55c-4.07 2.28-8 3.45-14.45 3.45a32 32 0 0 0 0 64c32 0 50-13.47 61.92-22.39 9.08-6.8 12.83-9.61 23.53-9.61s14.47 2.81 23.55 9.61c11.91 8.92 29.89 22.39 61.91 22.39s50-13.48 61.88-22.41c9-6.78 12.8-9.59 23.45-9.59s14.39 2.81 23.44 9.59c11.89 8.92 29.86 22.41 61.86 22.41s49.95-13.48 61.84-22.41c9.05-6.78 12.8-9.59 23.44-9.59s14.34 2.81 23.38 9.58C494.06 290.52 512 304 544 304a32 32 0 0 0 0-64zm-337.69-88.84l-16 32c-9.44 18.83-38.17 4.79-28.62-14.31l16-32c9.53-18.85 38.09-4.63 28.62 14.31zM304 176c0 21.17-32 21.18-32 0v-32c0-21.17 32-21.18 32 0zm81.69 7.16l-16-32c-9.48-18.95 19.13-33.19 28.62-14.31l16 32c9.53 19.05-19.17 33.15-28.62 14.31z\"]\n};\nvar faPig = {\n prefix: 'fas',\n iconName: 'pig',\n icon: [576, 512, [], \"f706\", \"M560 192h-29.51c-8.77-20.04-21.64-37.71-37.38-52.46L512 64h-32c-29.4 0-55.39 13.5-73 34.32-7.57-1.1-15.12-2.32-23-2.32H256c-77.4 0-141.95 54.97-156.78 128H56c-14.8 0-26.51-13.46-23.54-28.78C34.68 183.82 45.34 176 56.95 176h1.01c3.34 0 6.04-2.71 6.04-6.04v-19.92c0-3.34-2.71-6.04-6.04-6.04C29.5 144 4.1 164.4.47 192.62-3.91 226.77 22.7 256 56 256h40c0 52.18 25.35 98.07 64 127.28V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-48h128v48c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-80.72A160.09 160.09 0 0 0 511.28 352H560c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm-128 64c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\"]\n};\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\"]\n};\nvar faPizza = {\n prefix: 'fas',\n iconName: 'pizza',\n icon: [576, 512, [], \"f817\", \"M403.22 403.08c-81.87 81.92-215 81.22-296-2.11-77-79.19-77-210.74 0-289.94 81-83.33 214.14-84 296-2.11l22-22.07c6.46-6.46 6.44-17.36-.42-23.39-112.86-99.22-292.21-82.09-382.18 51.37-56.83 84.3-56.83 198.05 0 282.34 90 133.46 269.32 150.59 382.23 51.37 6.86-6 6.88-16.93.42-23.39zM131.9 380.45a175.77 175.77 0 0 0 248.71 0L256.25 256l124.36-124.45a175.77 175.77 0 0 0-248.71 0c-68.68 68.73-68.68 180.17 0 248.9zM256.25 352a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-48-208a16 16 0 1 1-16 16 16 16 0 0 1 16.04-16zm-48 96a16 16 0 1 1-16 16 16 16 0 0 1 16.08-16zm362.99-139.87c-5.79-7.55-17.22-7.92-23.95-1.19l-21.42 21.44c66.7 77.84 66.7 193.4 0 271.24l21.42 21.44c6.73 6.73 18.16 6.37 23.95-1.19a256.62 256.62 0 0 0 0-311.74zm-68.05 43l-49.92 50a15.83 15.83 0 0 1 10.86 15 16 16 0 0 1-16 16 15.83 15.83 0 0 1-14.95-10.87L342.35 256l112.84 112.93a176.6 176.6 0 0 0 0-225.85zM448.1 288a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z\"]\n};\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\"]\n};\nvar faPlaneAlt = {\n prefix: 'fas',\n iconName: 'plane-alt',\n icon: [576, 512, [], \"f3de\", \"M472 200H347.7l-38.6-72H324c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12h-49.2L243.5 5.7c-2.2-3.5-6.1-5.7-10.2-5.7h-57.8c-7.9 0-13.6 7.4-11.6 15l33.3 185.4c-32.6 1-63.1 3.7-89.9 7.8l-39.8-66.4c-2.2-3.6-6.1-5.8-10.3-5.8H14.6c-7.6 0-13.3 6.9-11.8 14.4l16.6 82.8C6.9 240.1 0 247.9 0 256s6.9 15.9 19.4 22.8L2.9 361.6C1.4 369.1 7.1 376 14.6 376h42.6c4.2 0 8.1-2.2 10.3-5.8l39.8-66.4c26.8 4.1 57.3 6.8 89.9 7.8L163.9 497c-2 7.6 3.8 15 11.6 15h57.8c4.2 0 8-2.2 10.2-5.7l31.3-58.3H324c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-14.9l38.6-72H472c57.4 0 104-25.1 104-56s-46.6-56-104-56z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [], \"f5af\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\"]\n};\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [], \"f5b0\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\"]\n};\nvar faPlaneSlash = {\n prefix: 'fas',\n iconName: 'plane-slash',\n icon: [640, 512, [], \"e069\", \"M32.48,147.88,64,256,32.48,364.13A16,16,0,0,0,48,384H88a16,16,0,0,0,12.8-6.41L144,320H246.85l-49,171.59A16,16,0,0,0,213.2,512h65.5a16,16,0,0,0,13.89-8.06l66.6-116.54L34.35,136.34A15.47,15.47,0,0,0,32.48,147.88ZM633.82,458.09,455.14,320H512c35.34,0,96-28.66,96-64s-60.66-64-96-64H397.7L292.61,8.06C290.06,3.61,283.84,0,278.71,0H213.2a16,16,0,0,0-15.38,20.39l36.94,129.29L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09Z\"]\n};\nvar faPlanetMoon = {\n prefix: 'fas',\n iconName: 'planet-moon',\n icon: [576, 512, [], \"e01f\", \"M512,0a64,64,0,1,0,64,64A63.99942,63.99942,0,0,0,512,0ZM224,64C100.28711,64,0,164.28516,0,288,0,411.71289,100.28711,512,224,512S448,411.71289,448,288C448,164.28516,347.71289,64,224,64Zm96,272.89062a64.02377,64.02377,0,0,1-6.75781,28.627L272.918,446.166a28.68332,28.68332,0,0,1-20.89258,15.45312q-5.16211.86719-10.41992,1.43359a16.03421,16.03421,0,0,1-17.60742-15.98437C223.99609,423.58984,223.99414,384,224,384a32.00033,32.00033,0,0,1-32-32V320l-54.62695-54.62891A32.00483,32.00483,0,0,0,114.74609,256l-25.02539-.00195c-20.74414,0-34.53125-21.54493-25.96875-40.43946C91.39258,154.55469,152.7793,112,224,112q2.25586,0,4.49805.0625A28.487,28.487,0,0,1,256,140.62109,64.00066,64.00066,0,0,1,245.25,176.125l-49.72852,57.35742a32.00106,32.00106,0,0,0,1.55079,43.58985A37.31367,37.31367,0,0,0,223.45312,288H288a31.99908,31.99908,0,0,1,32,32Z\"]\n};\nvar faPlanetRinged = {\n prefix: 'fas',\n iconName: 'planet-ringed',\n icon: [512, 512, [], \"e020\", \"M502.91733,9.0683c-23.49085-23.49086-88.309.01368-167.21341,54.81788-75.418-31.2567-165.47314-16.29536-226.79313,45.02464-61.318,61.32-76.28132,151.37515-45.02463,226.79319C9.082,414.60847-14.42256,479.42661,9.0683,502.91747c37.19239,37.19241,177.89534-43.21014,314.2681-179.58293C459.70916,186.9637,540.10973,46.26071,502.91733,9.0683ZM346.505,346.50508c-38.15531,38.15337-84.07059,78.86539-130.69292,113.57336A207.99464,207.99464,0,0,0,460.03924,215.65C423.85078,264.25092,382.07819,310.93186,346.505,346.50508Z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [448, 512, [], \"f04b\", \"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\"]\n};\nvar faPlayCircle = {\n prefix: 'fas',\n iconName: 'play-circle',\n icon: [512, 512, [], \"f144\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [], \"f1e6\", \"M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z\"]\n};\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [], \"f067\", \"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPlusCircle = {\n prefix: 'fas',\n iconName: 'plus-circle',\n icon: [512, 512, [], \"f055\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPlusHexagon = {\n prefix: 'fas',\n iconName: 'plus-hexagon',\n icon: [576, 512, [], \"f300\", \"M553.5 231.8c8.7 14.9 8.7 33.4 0 48.4l-112 192c-8.6 14.7-24.4 23.8-41.5 23.8H176c-17.1 0-32.9-9.1-41.5-23.8l-112-192c-8.7-14.9-8.7-33.4 0-48.4l112-192C143.1 25.1 158.9 16 176 16h224c17.1 0 32.9 9.1 41.5 23.8l112 192zM432 228c0-6.6-5.4-12-12-12h-92v-92c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12v92h-92c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h92v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h92c6.6 0 12-5.4 12-12v-56z\"]\n};\nvar faPlusOctagon = {\n prefix: 'fas',\n iconName: 'plus-octagon',\n icon: [512, 512, [], \"f301\", \"M497.9 150.5c9 9 14.1 21.2 14.1 33.9v143.1c0 12.7-5.1 24.9-14.1 33.9L361.5 497.9c-9 9-21.2 14.1-33.9 14.1H184.5c-12.7 0-24.9-5.1-33.9-14.1L14.1 361.5c-9-9-14.1-21.2-14.1-33.9V184.5c0-12.7 5.1-24.9 14.1-33.9L150.5 14.1c9-9 21.2-14.1 33.9-14.1h143.1c12.7 0 24.9 5.1 33.9 14.1l136.5 136.4zM400 228c0-6.6-5.4-12-12-12h-92v-92c0-6.6-5.4-12-12-12h-56c-6.6 0-12 5.4-12 12v92h-92c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h92v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h92c6.6 0 12-5.4 12-12v-56z\"]\n};\nvar faPlusSquare = {\n prefix: 'fas',\n iconName: 'plus-square',\n icon: [448, 512, [], \"f0fe\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPodium = {\n prefix: 'fas',\n iconName: 'podium',\n icon: [448, 512, [], \"f680\", \"M432 144H111.36c6.33-30.9 30.72-55.29 62.71-62.05C182.76 90.63 194.75 96 208 96h64c26.51 0 48-21.49 48-48S298.51 0 272 0h-64c-22.06 0-40.45 14.97-46.07 35.24C109.85 46.85 70.16 90.29 63.35 144H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-32 320h-38.22L384 224H64l22.22 240H48c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faPodiumStar = {\n prefix: 'fas',\n iconName: 'podium-star',\n icon: [448, 512, [], \"f758\", \"M432 144H111.4c6.3-30.9 30.7-55.3 62.7-62 8.7 8.7 20.7 14 33.9 14h64c26.5 0 48-21.5 48-48S298.5 0 272 0h-64c-22.1 0-40.4 15-46.1 35.2-52.1 11.6-91.8 55-98.6 108.8H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-32 320h-38.2L384 224H64l22.2 240H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h352c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-95.5-137.3l-33 32.2 7.8 45.5c1.4 8.2-7.2 14.3-14.5 10.5L224 393.4l-40.8 21.5c-7.2 3.8-15.9-2.3-14.5-10.5l7.8-45.5-33-32.2c-5.9-5.8-2.7-15.9 5.5-17.1l45.6-6.7 20.4-41.4c3.7-7.5 14.3-7.4 17.9 0l20.4 41.4 45.6 6.7c8.2 1.2 11.5 11.3 5.6 17.1z\"]\n};\nvar faPoliceBox = {\n prefix: 'fas',\n iconName: 'police-box',\n icon: [384, 512, [], \"e021\", \"M368,464H352V88a24,24,0,0,0-24-24h-8.02148V48a16,16,0,0,0-16-16H208V16a16,16,0,0,0-32,0V32H80A16,16,0,0,0,64,48V64H56A24,24,0,0,0,32,88V464H16A16,16,0,0,0,0,480v16a16,16,0,0,0,16,16H368a16,16,0,0,0,16-16V480A16,16,0,0,0,368,464ZM168,128a8.00039,8.00039,0,0,1,8,8v24H144V128Zm-64,0h24v32H96V136A8.00039,8.00039,0,0,1,104,128Zm0,80a8.00039,8.00039,0,0,1-8-8V176h32v32Zm72,104a8.00039,8.00039,0,0,1-8,8H104a8.00039,8.00039,0,0,1-8-8V248a8.00039,8.00039,0,0,1,8-8h64a8.00039,8.00039,0,0,1,8,8Zm-8-104H144V176h32v24A8.00039,8.00039,0,0,1,168,208Zm112-80a8.00039,8.00039,0,0,1,8,8v24H256V128Zm-64,0h24v32H208V136A8.00039,8.00039,0,0,1,216,128Zm-8,72V176h32v32H216A8.00039,8.00039,0,0,1,208,200Zm72,8H256V176h32v24A8.00039,8.00039,0,0,1,280,208Z\"]\n};\nvar faPoll = {\n prefix: 'fas',\n iconName: 'poll',\n icon: [448, 512, [], \"f681\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z\"]\n};\nvar faPollH = {\n prefix: 'fas',\n iconName: 'poll-h',\n icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z\"]\n};\nvar faPollPeople = {\n prefix: 'fas',\n iconName: 'poll-people',\n icon: [640, 512, [], \"f759\", \"M80 96c26.5 0 48-21.5 48-48S106.5 0 80 0 32 21.5 32 48s21.5 48 48 48zm48 240c0-26.5-21.5-48-48-48s-48 21.5-48 48 21.5 48 48 48 48-21.5 48-48zm-32 80H64c-35.3 0-64 28.7-64 64v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-35.3-28.7-64-64-64zM616 32H248c-13.3 0-24 10.7-24 24v112c0 13.3 10.7 24 24 24h368c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24zm-40 96h-64V96h64v32zm-480 0H64c-35.3 0-64 28.7-64 64v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-35.3-28.7-64-64-64zm520 192H248c-13.3 0-24 10.7-24 24v112c0 13.3 10.7 24 24 24h368c13.3 0 24-10.7 24-24V344c0-13.3-10.7-24-24-24zm-40 96H352v-32h224v32z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [], \"f2fe\", \"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [], \"f75a\", \"M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\"]\n};\nvar faPopcorn = {\n prefix: 'fas',\n iconName: 'popcorn',\n icon: [512, 512, [], \"f819\", \"M443.62 138.88a42.72 42.72 0 0 0-33.09-20.79 37.89 37.89 0 0 0-.33-37.43c-9.11-16-28-23.69-45.55-20.17-.33-16.64-11.47-32-29-37.43a43.36 43.36 0 0 0-39.14 6.4 4.25 4.25 0 0 0-.68-1.92C288.73 6.42 264.77-4.78 242.5 2a41.66 41.66 0 0 0-27.32 27.19 43.4 43.4 0 0 0-38.82-6.08c-17.54 5.44-28.66 20.79-29 37.43-17.56-3.54-36.46 4.12-45.57 20.12a37.18 37.18 0 0 0-.33 37.43c-13.46 1.28-26.32 8.64-33.06 20.79-3.92 6.74-4.77 14-4.27 21.12h383.73c.52-7.12-.33-14.37-4.24-21.12zM366.4 192l-28 256h-45.01L315 192H197.05l21.56 256h-45.05l-28-256H64l43.91 292.75A32 32 0 0 0 139.56 512h232.88a32 32 0 0 0 31.65-27.25L448 192z\"]\n};\nvar faPortalEnter = {\n prefix: 'fas',\n iconName: 'portal-enter',\n icon: [512, 512, [], \"e022\", \"M432,0c-40.78711,0-74.373,97.74414-79.30859,223.98438H339.96875l-26.0625-53.25c-12.5-25.54688-35.45313-44.21876-61.78125-50.9375L181.04688,98.65625a95.62917,95.62917,0,0,0-80.84376,17.14063L60.54688,146.20312a31.99557,31.99557,0,1,0,38.9375,50.78126l39.6875-30.40626c7.67187-5.89062,17.4375-8,25.26562-6.14062l14.70312,4.375L141.6875,252.20312a64.16816,64.16816,0,0,0,26.29688,80.3125l84.96874,50.17188-27.46874,87.71875a32.00118,32.00118,0,1,0,61.07811,19.125l31.64063-101.0625a48.20913,48.20913,0,0,0-21.64063-54.39063l-61.25-36.14062L266.625,219.65625l20.28125,41.4375a48.27457,48.27457,0,0,0,43.10937,26.89063h22.67383C357.61719,414.23828,391.209,512,432,512c44.18359,0,80-114.61523,80-256S476.18359,0,432,0ZM272,96a48,48,0,1,0-48-48A47.99238,47.99238,0,0,0,272,96ZM113.6875,317.46875,98.89062,351.98438H32a32,32,0,0,0,0,64h77.45312a47.90248,47.90248,0,0,0,44.10938-29.07813l8.78125-20.53125-10.65625-6.29688A95.295,95.295,0,0,1,113.6875,317.46875Z\"]\n};\nvar faPortalExit = {\n prefix: 'fas',\n iconName: 'portal-exit',\n icon: [512, 512, [], \"e023\", \"M480,223.98438H435.96875l-26.0625-53.25c-12.5-25.54688-35.45313-44.21876-61.78125-50.9375L277.04688,98.65625a95.62917,95.62917,0,0,0-80.84376,17.14063l-39.65624,30.40624c-1.56055,1.19532-2.44336,2.85352-3.72071,4.25977C140.25586,61.78906,112.41016,0,80,0,35.81641,0,0,114.61523,0,256S35.81641,512,80,512c25.25391,0,47.73828-37.5332,62.40039-96.01562h63.05273a47.90248,47.90248,0,0,0,44.10938-29.07813l8.78125-20.53125-10.65625-6.29688a95.295,95.295,0,0,1-38-42.60937l-14.79688,34.51563H154.13281A768.691,768.691,0,0,0,160,256c0-20.22266-.80859-39.80273-2.19336-58.67383,11.14258,7.87305,26.27734,8.39258,37.67774-.34179l39.6875-30.40626c7.67187-5.89062,17.4375-8,25.26562-6.14062l14.70312,4.375L237.6875,252.20312a64.16816,64.16816,0,0,0,26.29688,80.3125l84.96874,50.17188-27.46874,87.71875a32.00118,32.00118,0,1,0,61.07812,19.125l31.64062-101.0625a48.20913,48.20913,0,0,0-21.64062-54.39063l-61.25-36.14062,31.3125-78.28125,20.28125,41.4375a48.27458,48.27458,0,0,0,43.10937,26.89063H480a32,32,0,0,0,0-64ZM368,96a48,48,0,1,0-48-48A47.99238,47.99238,0,0,0,368,96Z\"]\n};\nvar faPortrait = {\n prefix: 'fas',\n iconName: 'portrait',\n icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faPoundSign = {\n prefix: 'fas',\n iconName: 'pound-sign',\n icon: [320, 512, [], \"f154\", \"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [], \"f011\", \"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"]\n};\nvar faPray = {\n prefix: 'fas',\n iconName: 'pray',\n icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z\"]\n};\nvar faPrayingHands = {\n prefix: 'fas',\n iconName: 'praying-hands',\n icon: [640, 512, [], \"f684\", \"M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z\"]\n};\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [384, 512, [], \"f5b1\", \"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\"]\n};\nvar faPrescriptionBottleAlt = {\n prefix: 'fas',\n iconName: 'prescription-bottle-alt',\n icon: [384, 512, [], \"f486\", \"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\"]\n};\nvar faPresentation = {\n prefix: 'fas',\n iconName: 'presentation',\n icon: [576, 512, [], \"f685\", \"M560 0H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h16v256c0 17.67 14.33 32 32 32h192v34.75l-75.31 75.31c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L288 445.25l62.06 62.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L320 386.75V352h192c17.67 0 32-14.33 32-32V64h16c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16zm-80 288H96V64h384v224z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [], \"f02f\", \"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faPrintSearch = {\n prefix: 'fas',\n iconName: 'print-search',\n icon: [640, 512, [], \"f81a\", \"M128 448v-96h163.23a160.64 160.64 0 0 1-3.23-32c0-36.16 12.51-69.18 32.81-96H128V64h192v48a16 16 0 0 0 16 16h48v45.56A158.69 158.69 0 0 1 448 160V77.25a32 32 0 0 0-9.37-22.63L393.37 9.37A32 32 0 0 0 370.74 0H96a32 32 0 0 0-32 32v160a64 64 0 0 0-64 64v112a16 16 0 0 0 16 16h48v96a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32c-35.7 0-68.37-12.16-95-32zm507.31 14.06l-77.41-77.41c11.22-19 18.1-40.95 18.1-64.65a128 128 0 1 0-128 128c23.7 0 45.61-6.88 64.65-18.11l77.41 77.42a16 16 0 0 0 22.63 0l22.62-22.62a16 16 0 0 0 0-22.63zM448 384a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faPrintSlash = {\n prefix: 'fas',\n iconName: 'print-slash',\n icon: [640, 512, [], \"f686\", \"M192 448v-96h95.22L93.47 202.25C75.78 213.64 64 233.4 64 256v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c4 0 7.76-.93 11.29-2.28L411.43 448H192zm441.82 10.1L537.95 384H560c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64V77.25c0-8.49-3.37-16.62-9.37-22.63L457.37 9.37c-6-6-14.14-9.37-22.63-9.37H160c-17.67 0-32 14.33-32 32v35.16L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM448 224H330.93L192 116.62V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faProcedures = {\n prefix: 'fas',\n iconName: 'procedures',\n icon: [640, 512, [], \"f487\", \"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faProjectDiagram = {\n prefix: 'fas',\n iconName: 'project-diagram',\n icon: [640, 512, [], \"f542\", \"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faProjector = {\n prefix: 'fas',\n iconName: 'projector',\n icon: [640, 512, [], \"f8d6\", \"M592 192h-94.08A144.14 144.14 0 0 1 576 320c0 61.91-39.28 114.82-94.22 135.13L493 499.88A16 16 0 0 0 508.49 512h39A16 16 0 0 0 563 499.88L576 448h16a48 48 0 0 0 48-48V240a48 48 0 0 0-48-48zM288 320a144.14 144.14 0 0 1 78.08-128H48a48 48 0 0 0-48 48v160a48 48 0 0 0 48 48h16l13 51.88A16 16 0 0 0 92.49 512h39A16 16 0 0 0 147 499.88L160 448h206.08A144.14 144.14 0 0 1 288 320zM96 352a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm96 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm352-32a112 112 0 1 0-112 112 112.16 112.16 0 0 0 112-112zm-120-40a32 32 0 0 0-32 32 16 16 0 0 1-32 0 64.07 64.07 0 0 1 64-64 16 16 0 0 1 0 32zm0-152h16a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16zm93.65 5.65a16 16 0 0 0 22.63 0l67.88-67.88a16 16 0 0 0 0-22.63l-11.31-11.31a16 16 0 0 0-22.63 0l-67.88 67.89a16 16 0 0 0 0 22.62zm-193.93 0a16 16 0 0 0 22.63 0l11.31-11.31a16 16 0 0 0 0-22.62l-67.88-67.89a16 16 0 0 0-22.63 0l-11.31 11.31a16 16 0 0 0 0 22.63z\"]\n};\nvar faPumpMedical = {\n prefix: 'fas',\n iconName: 'pump-medical',\n icon: [384, 512, [], \"e06a\", \"M235.51,159.82H84.24A64,64,0,0,0,20.51,218L.14,442a64,64,0,0,0,63.74,69.8h192A64,64,0,0,0,319.61,442L299.24,218A64,64,0,0,0,235.51,159.82Zm4.37,173.33a13.35,13.35,0,0,1-13.34,13.34h-40v40a13.33,13.33,0,0,1-13.33,13.33H146.54a13.33,13.33,0,0,1-13.33-13.33v-40h-40a13.34,13.34,0,0,1-13.33-13.34V306.49a13.33,13.33,0,0,1,13.33-13.34h40v-40a13.33,13.33,0,0,1,13.33-13.33h26.67a13.33,13.33,0,0,1,13.33,13.33v40h40a13.34,13.34,0,0,1,13.34,13.34ZM379.19,93.88,335.87,50.56a64,64,0,0,0-45.24-18.74H223.88a32,32,0,0,0-32-32h-64a32,32,0,0,0-32,32v96h128v-32h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.19,93.88Z\"]\n};\nvar faPumpSoap = {\n prefix: 'fas',\n iconName: 'pump-soap',\n icon: [384, 512, [], \"e06b\", \"M235.63,160H84.37a64,64,0,0,0-63.74,58.21L.27,442.21A64,64,0,0,0,64,512H256a64,64,0,0,0,63.74-69.79l-20.36-224A64,64,0,0,0,235.63,160ZM160,416c-33.12,0-60-26.33-60-58.75,0-25,35.7-75.47,52-97.27A10,10,0,0,1,168,260c16.33,21.8,52,72.27,52,97.27C220,389.67,193.12,416,160,416ZM379.31,94.06,336,50.74A64,64,0,0,0,290.75,32H224A32,32,0,0,0,192,0H128A32,32,0,0,0,96,32v96H224V96h66.75l43.31,43.31a16,16,0,0,0,22.63,0l22.62-22.62A16,16,0,0,0,379.31,94.06Z\"]\n};\nvar faPumpkin = {\n prefix: 'fas',\n iconName: 'pumpkin',\n icon: [576, 512, [], \"f707\", \"M352 113.21v-77.4c0-6.06-3.42-11.6-8.84-14.31l-39.6-19.8c-8.37-4.19-18.54-.32-22.01 8.37L244 103.93C257.27 99.2 271.57 96 288 96c25.16 0 46.23 6.12 64 17.21zm143.3 39.92c-31.61-27.03-78.8-31.69-116.51-15.05 3.07 3.97 6.52 7.38 9.21 11.92 8.32 14.27 14.5 31.78 19.11 51.62-3.69-8.81-7.96-16.87-12.86-24.12-22.67-33-58.08-49.5-106.25-49.5s-83.58 16.5-106.25 49.5c-4.9 7.25-9.17 15.3-12.86 24.11 4.61-19.84 10.78-37.34 19.11-51.61 2.69-4.54 6.13-7.95 9.21-11.92-37.71-16.64-84.9-11.98-116.51 15.05-107.6 92.01-107.6 241.72 0 333.74 38.63 33.03 100.82 33.34 140.12 1.25C238.65 503.51 260.72 512 288 512s49.35-8.49 67.19-23.88c39.3 32.09 101.49 31.78 140.12-1.25 107.59-92.01 107.59-241.73-.01-333.74z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [576, 512, [], \"f12e\", \"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\"]\n};\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [384, 512, [], \"f128\", \"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\"]\n};\nvar faQuestionCircle = {\n prefix: 'fas',\n iconName: 'question-circle',\n icon: [512, 512, [], \"f059\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\"]\n};\nvar faQuestionSquare = {\n prefix: 'fas',\n iconName: 'question-square',\n icon: [448, 512, [], \"f2fd\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 430c-25.365 0-46-20.636-46-46 0-25.365 20.635-46 46-46s46 20.635 46 46c0 25.364-20.635 46-46 46zm40-131.333V300c0 6.627-5.373 12-12 12h-56c-6.627 0-12-5.373-12-12v-4c0-41.059 31.128-57.472 54.652-70.66 20.171-11.309 32.534-19 32.534-33.976 0-19.81-25.269-32.958-45.698-32.958-27.19 0-39.438 13.139-57.303 35.797-4.045 5.13-11.46 6.069-16.665 2.122l-34.699-26.31c-5.068-3.843-6.251-10.972-2.715-16.258C141.4 112.957 176.158 90 230.655 90c56.366 0 116.531 43.998 116.531 102 0 77.02-83.186 78.205-83.186 106.667z\"]\n};\nvar faQuidditch = {\n prefix: 'fas',\n iconName: 'quidditch',\n icon: [640, 512, [], \"f458\", \"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [512, 512, [], \"f10d\", \"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [512, 512, [], \"f10e\", \"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuran = {\n prefix: 'fas',\n iconName: 'quran',\n icon: [448, 512, [], \"f687\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faRabbit = {\n prefix: 'fas',\n iconName: 'rabbit',\n icon: [448, 512, [], \"f708\", \"M445.54 487.52L352 337.85V272h7.35c31.29 0 56.65-25.36 56.65-56.65a56.66 56.66 0 0 0-23.72-46.1l-48.65-34.75c-1.1-.54-2.27-.74-3.38-1.21 7.8-12.49 15.21-29.76 20.54-49.66 11.32-42.24 9.08-79.55-5-83.32-14.08-3.77-34.67 27.41-45.99 69.66-2.72 10.15-4.61 19.97-5.79 29.15-1.18-9.18-3.07-19-5.79-29.15-11.33-42.25-31.92-73.43-46-69.66s-16.32 41.08-5 83.32c6.94 25.9 17.37 47.54 27.64 59.62-9.11 7.93-15.9 18.5-18.03 31.55-.54 3.32-.82 6.72-.82 10.19V256h-12.8c-83.19 0-152.93 56.77-173.12 133.61C63.44 386.15 56.01 384 48 384c-26.51 0-48 21.49-48 48s21.49 48 48 48c7.93 0 15.3-2.11 21.89-5.51C79.98 496.58 102.13 512 128 512h144c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-22.59l74.35-60.18 72.91 116.66a15.99 15.99 0 0 0 13.57 7.52h37.74c12.56 0 20.22-13.82 13.56-24.48zM336 208c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faRabbitFast = {\n prefix: 'fas',\n iconName: 'rabbit-fast',\n icon: [576, 512, [], \"f709\", \"M135.52 412.67a15.99 15.99 0 0 0-7.52 13.57v37.74c0 12.57 13.82 20.23 24.48 13.57l66.69-39.87-47.85-47.85-35.8 22.84zm416.76-195.42l-56.42-34.62c-.06-13.95-2.28-30.77-7.07-48.67-11.32-42.24-31.91-73.43-45.99-69.66-14.08 3.77-16.32 41.08-5 83.32.65 2.44 1.44 4.7 2.15 7.06-4.89-6.08-10.23-12.23-16.31-18.32-30.93-30.92-64.35-47.64-74.66-37.33s6.4 43.73 37.33 74.66c12.67 12.67 25.67 22.77 37.42 29.78-3.14 5.76-5.71 12.06-6.89 19.32-.49 3.03-.71 6.15-.75 9.31C364.55 195.11 261.59 128 192 128c-52.08 0-85.21 28.24-104.72 54.09-1.77-2.7-2.96-5.66-5.33-8.03-18.75-18.75-49.14-18.75-67.88 0-18.74 18.74-18.74 49.14 0 67.88 16.4 16.39 41.29 17.57 59.92 5.29l191.4 191.4c6 6 14.14 9.37 22.63 9.37h144c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-96v-55.59c0-35.53-23.86-67.16-58.02-76.91l-42.38-12.11c-8.5-2.44-13.42-11.3-11-19.78 2.44-8.52 11.41-13.33 19.78-11l42.38 12.11C318.59 234.38 352 278.66 352 328.41V352l64-32h103.35c31.29 0 56.65-25.36 56.65-56.65a56.66 56.66 0 0 0-23.72-46.1zM496 256c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faRacquet = {\n prefix: 'fas',\n iconName: 'racquet',\n icon: [640, 512, [], \"f45a\", \"M125.9 346.5l56.7 80-120.7 82.6c-7.2 5-17.2 3.3-22.2-3.9L2.9 453.4c-5.1-7.2-3.4-17.1 3.7-22.3.1.1 119.3-84.6 119.3-84.6zm402.8-16.7c-49.1 34.8-103.9 52-153.5 52-27.6 0-84.5-15.1-171.9 18.6l-45.7-64.5c32.7-38.2 56.7-83.2 67.7-132.7 12.2-54.7 49.5-110.5 106.8-151.1 100.5-71.2 228.2-70.2 283.4 7.7 54.3 76.7 15.4 197.6-86.8 270zm-271.2 5.9c-11.7-12.3-12-11.7-21.2-29.7-7.9 14.1-16.3 27.9-26.2 41 15.7-4.9 31.5-8.5 47.4-11.3zM485.9 64c-106.4 0-178.6 90-195 141.1-21.3 66.2 13.3 112.8 83.9 112.8 84.1 0 171.1-66.8 195-141.1C591.1 110.7 556.5 64 485.9 64z\"]\n};\nvar faRadar = {\n prefix: 'fas',\n iconName: 'radar',\n icon: [512, 512, [], \"e024\", \"M504,256c0,136.9668-111.0332,248-248,248S8,392.9668,8,256,119.0332,8,256,8A246.36335,246.36335,0,0,1,395.14648,50.916L425.377,20.68555a16.00006,16.00006,0,0,1,22.627,0l11.31054,11.31054a16.00006,16.00006,0,0,1,0,22.627l-201.373,201.373L257.93555,256H320a64.00026,64.00026,0,1,1-66.15625-63.78125L281.97852,164.084A92.08681,92.08681,0,0,0,256,160a96,96,0,1,0,96,96h64c0,79.53906-58.498,145.17578-134.63281,157.43555C275.54492,405.49414,266.60156,400,256,400s-19.54492,5.49414-25.36719,13.43555A159.59519,159.59519,0,0,1,98.56445,281.36719C106.50586,275.54492,112,266.60156,112,256s-5.49414-19.54492-13.43555-25.36719C110.82422,154.49805,176.46094,96,256,96c27.11328,0,52.21484,7.48438,74.53125,19.53125L354.51953,91.543A190.21144,190.21144,0,0,0,256,64C159.74023,64,80.26172,134.91211,66.375,227.30078a31.59809,31.59809,0,0,0,0,57.39649A191.79963,191.79963,0,0,0,227.30273,445.625a31.59657,31.59657,0,0,0,57.39454,0C377.08594,431.74023,448,352.25977,448,256Z\"]\n};\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [496, 512, [], \"f7b9\", \"M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z\"]\n};\nvar faRadiationAlt = {\n prefix: 'fas',\n iconName: 'radiation-alt',\n icon: [496, 512, [], \"f7ba\", \"M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faRadio = {\n prefix: 'fas',\n iconName: 'radio',\n icon: [512, 512, [], \"f8d7\", \"M447 127H210.5l288.83-81.21a16 16 0 0 0 11.07-19.74l-4.33-15.38A16 16 0 0 0 486.33-.4L63 127a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V191a64 64 0 0 0-64-64zM207 247v16a8 8 0 0 1-8 8H87a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h112a8 8 0 0 1 8 8zm0 144a8 8 0 0 1-8 8H87a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h112a8 8 0 0 1 8 8zm16-64a8 8 0 0 1-8 8H71a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h144a8 8 0 0 1 8 8zm144 72a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faRadioAlt = {\n prefix: 'fas',\n iconName: 'radio-alt',\n icon: [512, 512, [], \"f8d8\", \"M448 128H211.5l288.83-81.21a16 16 0 0 0 11.07-19.74l-4.33-15.38A16 16 0 0 0 487.33.6L64 128a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V192a64 64 0 0 0-64-64zM224 424a8 8 0 0 1-8 8H104a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h112a8 8 0 0 1 8 8zm32-64a8 8 0 0 1-8 8H72a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h176a8 8 0 0 1 8 8zm128 88a64 64 0 1 1 64-64 64 64 0 0 1-64 64zm64-192H64v-64h384z\"]\n};\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRaindrops = {\n prefix: 'fas',\n iconName: 'raindrops',\n icon: [448, 512, [], \"f75c\", \"M216 136.3c0-34.9-31.8-47.9-46.7-97.4-2.5-9-15.7-9.4-18.6 0-14.9 49.3-46.7 62.7-46.7 97.4 0 30.8 25 55.7 56 55.7s56-24.9 56-55.7zM46.7 230.9C31.8 280.2 0 293.6 0 328.3 0 359.1 25 384 56 384s56-24.9 56-55.7c0-34.9-31.8-47.9-46.7-97.4-2.5-9-15.7-9.4-18.6 0zm294.5-87.7c-5.8-19.8-36-20.7-42.5 0C264.7 251.6 192 281.1 192 357.6c0 67.7 57.2 122.4 128 122.4s128-54.8 128-122.4c0-76.9-72.6-105.5-106.8-214.4z\"]\n};\nvar faRam = {\n prefix: 'fas',\n iconName: 'ram',\n icon: [640, 512, [], \"f70a\", \"M622.25 105.96L576 83.22V64c0-17.67-14.33-32-32-32h-72.97C453.45 12.5 428.26 0 400 0c-52.94 0-96 43.06-96 96 0 47.46 34.7 86.72 80.02 94.38-5.23.88-10.53 1.62-16.02 1.62-51.54 0-93.26-40.71-95.56-91.68-5.9-2.63-12.29-4.32-19.33-4.32-12.47 0-24 4.8-32.31 12.8-8.64-8-20.16-12.8-32.64-12.8-13.12 0-24.97 5.44-33.61 13.75-11.19-9.28-26.23-13.75-41.59-10.23-17.59 3.84-31.03 16.95-35.84 33.28-16.64-2.88-34.23 3.2-45.44 17.28-11.52 14.08-13.44 32.64-7.03 48.31-14.72 8-24.64 24-24.64 41.92 0 18.23 10.23 33.92 24.95 41.92-6.41 15.69-4.16 34.23 7.05 48.31 11.52 14.09 29.11 20.17 45.75 16.97 4.08 13.88 14.64 25.07 28.47 30.58l-6.14 16.38a63.973 63.973 0 0 0-2.16 38l16.85 67.41A16.002 16.002 0 0 0 130.3 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-18.31-73.26 14.76-39.36c4.73-2.15 9.22-4.78 12.9-8.31 8.64 8 20.17 12.81 32.64 12.81 12.48 0 24-4.81 32.64-12.81 8.64 8 19.84 12.81 32.64 12.81 12.49 0 23.87-4.96 32.46-12.91.16.15.34.27.51.42V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V330.67L483.5 307a64.009 64.009 0 0 0 28.5-53.25V192h87.66c9.26 0 17.76-4.9 22.37-12.94 7.59-13.26 17.98-33.45 17.98-44.59a31.798 31.798 0 0 0-17.76-28.51zM352 96c0-26.47 21.53-48 48-48s48 21.53 48 48-21.53 48-48 48-48-21.53-48-48zm160 16c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faRampLoading = {\n prefix: 'fas',\n iconName: 'ramp-loading',\n icon: [384, 512, [], \"f4d4\", \"M292.4 328.8c-2.7-5.4-8.2-8.8-14.3-8.8H105.9c-6.1 0-11.6 3.4-14.3 8.8l-80 160C6.3 499.5 14 512 25.9 512h332.2c11.9 0 19.6-12.5 14.3-23.2l-80-160zM352 0H32C14.3 0 0 14.3 0 32v320c0 16.5 12.6 29.5 28.6 31.3L63 314.5c.3-.6.7-1 1-1.5V64h256v249c.3.5.8 1 1 1.5l34.4 68.8c16-1.8 28.6-14.9 28.6-31.3V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faRandom = {\n prefix: 'fas',\n iconName: 'random',\n icon: [512, 512, [], \"f074\", \"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\"]\n};\nvar faRaygun = {\n prefix: 'fas',\n iconName: 'raygun',\n icon: [576, 512, [], \"e025\", \"M554.9375,119.01044,480.002,143.98307H416.043V79.991a15.99661,15.99661,0,0,0-16-15.998H384.041a15.99828,15.99828,0,0,0-16.002,15.998V271.96731a15.99953,15.99953,0,0,0,16.002,15.998h16.002a15.99787,15.99787,0,0,0,16-15.998V207.97519h64.07617l74.8125,24.97068A16.00321,16.00321,0,0,0,576,217.76815v-83.58A16.00191,16.00191,0,0,0,554.9375,119.01044ZM320.0332,31.99687h-16.002a15.99787,15.99787,0,0,0-16,15.998V75.21557a110.96789,110.96789,0,0,0-48.06641-11.22264H192L87.166,1.70979A16.00223,16.00223,0,0,0,64.00586,16.01837v59.164C26.26758,93.196,0,131.38348,0,175.97913,0,231.25837,40.14844,276.9009,92.82812,286.03175L22.4082,407.95153A47.93786,47.93786,0,0,0,40.00391,473.5374L95.416,505.53346a47.96127,47.96127,0,0,0,65.60156-17.59178L281.10547,279.93019c2.38281-.94531,4.623-2.08789,6.92578-3.1875v27.22068a15.99912,15.99912,0,0,0,16,15.998h16.002a15.96,15.96,0,0,0,15.94141-15.69725v-256.57A15.95874,15.95874,0,0,0,320.0332,31.99687Zm-208.082,167.98028a23.998,23.998,0,1,1,24.002-23.998A24.00117,24.00117,0,0,1,111.95117,199.97715Zm96.00977,0a23.998,23.998,0,1,1,24.00195-23.998A24.00118,24.00118,0,0,1,207.96094,199.97715Z\"]\n};\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [], \"f543\", \"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z\"]\n};\nvar faRectangleLandscape = {\n prefix: 'fas',\n iconName: 'rectangle-landscape',\n icon: [512, 512, [], \"f2fa\", \"M464 448H48c-26.5 0-48-21.5-48-48V112c0-26.5 21.5-48 48-48h416c26.5 0 48 21.5 48 48v288c0 26.5-21.5 48-48 48z\"]\n};\nvar faRectanglePortrait = {\n prefix: 'fas',\n iconName: 'rectangle-portrait',\n icon: [384, 512, [], \"f2fb\", \"M0 464V48C0 21.5 21.5 0 48 0h288c26.5 0 48 21.5 48 48v416c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48z\"]\n};\nvar faRectangleWide = {\n prefix: 'fas',\n iconName: 'rectangle-wide',\n icon: [640, 512, [], \"f2fc\", \"M592 416H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h544c26.5 0 48 21.5 48 48v224c0 26.5-21.5 48-48 48z\"]\n};\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [], \"f1b8\", \"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"]\n};\nvar faRedo = {\n prefix: 'fas',\n iconName: 'redo',\n icon: [512, 512, [], \"f01e\", \"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z\"]\n};\nvar faRedoAlt = {\n prefix: 'fas',\n iconName: 'redo-alt',\n icon: [512, 512, [], \"f2f9\", \"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\"]\n};\nvar faRefrigerator = {\n prefix: 'fas',\n iconName: 'refrigerator',\n icon: [384, 512, [], \"e026\", \"M0,160V48A48,48,0,0,1,48,0H336a48,48,0,0,1,48,48V160H320V72a8,8,0,0,0-8-8H296a8,8,0,0,0-8,8v88Zm320,32V376a8,8,0,0,1-8,8H296a8,8,0,0,1-8-8V192H0V464a48,48,0,0,0,48,48H336a48,48,0,0,0,48-48V192Z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [], \"f25d\", \"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\"]\n};\nvar faRemoveFormat = {\n prefix: 'fas',\n iconName: 'remove-format',\n icon: [640, 512, [], \"f87d\", \"M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z\"]\n};\nvar faRepeat = {\n prefix: 'fas',\n iconName: 'repeat',\n icon: [512, 512, [], \"f363\", \"M512 256c0 88.224-71.775 160-160 160H170.067l34.512 32.419c9.875 9.276 10.119 24.883.539 34.464l-10.775 10.775c-9.373 9.372-24.568 9.372-33.941 0l-92.686-92.686c-9.373-9.373-9.373-24.568 0-33.941l92.686-92.686c9.373-9.373 24.568-9.373 33.941 0l10.775 10.775c9.581 9.581 9.337 25.187-.539 34.464L170.067 352H352c52.935 0 96-43.065 96-96 0-13.958-2.996-27.228-8.376-39.204-4.061-9.039-2.284-19.626 4.723-26.633l12.183-12.183c11.499-11.499 30.965-8.526 38.312 5.982C505.814 205.624 512 230.103 512 256zM72.376 295.204C66.996 283.228 64 269.958 64 256c0-52.935 43.065-96 96-96h181.933l-34.512 32.419c-9.875 9.276-10.119 24.883-.539 34.464l10.775 10.775c9.373 9.372 24.568 9.372 33.941 0l92.686-92.686c9.373-9.373 9.373-24.568 0-33.941l-92.686-92.686c-9.373-9.373-24.568-9.373-33.941 0L306.882 29.12c-9.581 9.581-9.337 25.187.539 34.464L341.933 96H160C71.775 96 0 167.776 0 256c0 25.897 6.186 50.376 17.157 72.039 7.347 14.508 26.813 17.481 38.312 5.982l12.183-12.183c7.008-7.008 8.786-17.595 4.724-26.634z\"]\n};\nvar faRepeat1 = {\n prefix: 'fas',\n iconName: 'repeat-1',\n icon: [512, 512, [], \"f365\", \"M512 256c0 88.224-71.775 160-160 160H170.067l34.512 32.419c9.875 9.276 10.119 24.883.539 34.464l-10.775 10.775c-9.373 9.372-24.568 9.372-33.941 0l-92.686-92.686c-9.373-9.373-9.373-24.568 0-33.941l80.269-80.27c9.373-9.373 24.568-9.373 33.941 0l10.775 10.775c9.581 9.581 9.337 25.187-.539 34.464l-22.095 20H352c52.935 0 96-43.065 96-96 0-13.958-2.996-27.228-8.376-39.204-4.061-9.039-2.284-19.626 4.723-26.633l12.183-12.183c11.499-11.499 30.965-8.526 38.312 5.982C505.814 205.624 512 230.103 512 256zM72.376 295.204C66.996 283.228 64 269.958 64 256c0-52.935 43.065-96 96-96h181.933l-22.095 20.002c-9.875 9.276-10.119 24.883-.539 34.464l10.775 10.775c9.373 9.372 24.568 9.372 33.941 0l80.269-80.27c9.373-9.373 9.373-24.568 0-33.941l-92.686-92.686c-9.373-9.373-24.568-9.373-33.941 0l-10.775 10.775c-9.581 9.581-9.337 25.187.539 34.464L341.933 96H160C71.775 96 0 167.776 0 256c0 25.897 6.186 50.376 17.157 72.039 7.347 14.508 26.813 17.481 38.312 5.982l12.183-12.183c7.008-7.008 8.786-17.595 4.724-26.634zm154.887 4.323c0-7.477 3.917-11.572 11.573-11.572h15.131v-39.878c0-5.163.534-10.503.534-10.503h-.356s-1.779 2.67-2.848 3.738c-4.451 4.273-10.504 4.451-15.666-1.068l-5.518-6.231c-5.342-5.341-4.984-11.216.534-16.379l21.72-19.939c4.449-4.095 8.366-5.697 14.42-5.697h12.105c7.656 0 11.749 3.916 11.749 11.572v84.384h15.488c7.655 0 11.572 4.094 11.572 11.572v8.901c0 7.477-3.917 11.572-11.572 11.572h-67.293c-7.656 0-11.573-4.095-11.573-11.572v-8.9z\"]\n};\nvar faRepeat1Alt = {\n prefix: 'fas',\n iconName: 'repeat-1-alt',\n icon: [512, 512, [], \"f366\", \"M493.544 181.463c11.956 22.605 18.655 48.4 18.452 75.75C511.339 345.365 438.56 416 350.404 416H192v47.495c0 22.475-26.177 32.268-40.971 17.475l-80-80c-9.372-9.373-9.372-24.569 0-33.941l80-80C166.138 271.92 192 282.686 192 304v48h158.875c52.812 0 96.575-42.182 97.12-94.992.155-15.045-3.17-29.312-9.218-42.046-4.362-9.185-2.421-20.124 4.8-27.284 4.745-4.706 8.641-8.555 11.876-11.786 11.368-11.352 30.579-8.631 38.091 5.571zM64.005 254.992c.545-52.81 44.308-94.992 97.12-94.992H320v47.505c0 22.374 26.121 32.312 40.971 17.465l80-80c9.372-9.373 9.372-24.569 0-33.941l-80-80C346.014 16.077 320 26.256 320 48.545V96H161.596C73.44 96 .661 166.635.005 254.788c-.204 27.35 6.495 53.145 18.452 75.75 7.512 14.202 26.723 16.923 38.091 5.57 3.235-3.231 7.13-7.08 11.876-11.786 7.22-7.16 9.162-18.098 4.8-27.284-6.049-12.735-9.374-27.001-9.219-42.046zm163.258 44.535c0-7.477 3.917-11.572 11.573-11.572h15.131v-39.878c0-5.163.534-10.503.534-10.503h-.356s-1.779 2.67-2.848 3.738c-4.451 4.273-10.504 4.451-15.666-1.068l-5.518-6.231c-5.342-5.341-4.984-11.216.534-16.379l21.72-19.939c4.449-4.095 8.366-5.697 14.42-5.697h12.105c7.656 0 11.749 3.916 11.749 11.572v84.384h15.488c7.655 0 11.572 4.094 11.572 11.572v8.901c0 7.477-3.917 11.572-11.572 11.572h-67.293c-7.656 0-11.573-4.095-11.573-11.572v-8.9z\"]\n};\nvar faRepeatAlt = {\n prefix: 'fas',\n iconName: 'repeat-alt',\n icon: [512, 512, [], \"f364\", \"M493.544 181.463c11.956 22.605 18.655 48.4 18.452 75.75C511.339 345.365 438.56 416 350.404 416H192v47.495c0 22.475-26.177 32.268-40.971 17.475l-80-80c-9.372-9.373-9.372-24.569 0-33.941l80-80C166.138 271.92 192 282.686 192 304v48h158.875c52.812 0 96.575-42.182 97.12-94.992.155-15.045-3.17-29.312-9.218-42.046-4.362-9.185-2.421-20.124 4.8-27.284 4.745-4.706 8.641-8.555 11.876-11.786 11.368-11.352 30.579-8.631 38.091 5.571zM64.005 254.992c.545-52.81 44.308-94.992 97.12-94.992H320v47.505c0 22.374 26.121 32.312 40.971 17.465l80-80c9.372-9.373 9.372-24.569 0-33.941l-80-80C346.014 16.077 320 26.256 320 48.545V96H161.596C73.44 96 .661 166.635.005 254.788c-.204 27.35 6.495 53.145 18.452 75.75 7.512 14.202 26.723 16.923 38.091 5.57 3.235-3.231 7.13-7.08 11.876-11.786 7.22-7.16 9.162-18.098 4.8-27.284-6.049-12.735-9.374-27.001-9.219-42.046z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [], \"f3e5\", \"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [], \"f122\", \"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [640, 512, [], \"f079\", \"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\"]\n};\nvar faRetweetAlt = {\n prefix: 'fas',\n iconName: 'retweet-alt',\n icon: [640, 512, [], \"f361\", \"M392.402 383.598C404.359 395.555 395.891 416 378.981 416H120c-13.255 0-24-10.745-24-24V192H48c-21.361 0-32.045-25.895-16.971-40.971l80-80c9.373-9.372 24.568-9.372 33.941 0l80 80C240.074 166.134 229.319 192 208 192h-48v160h202.056c7.82 0 14.874 4.783 17.675 12.084a55.865 55.865 0 0 0 12.671 19.514zM592 320h-48V120c0-13.255-10.745-24-24-24H261.019c-16.91 0-25.378 20.445-13.421 32.402a55.865 55.865 0 0 1 12.671 19.514c2.801 7.302 9.855 12.084 17.675 12.084H480v160h-48c-21.313 0-32.08 25.861-16.971 40.971l80 80c9.374 9.372 24.568 9.372 33.941 0l80-80C624.041 345.9 613.368 320 592 320z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [], \"f4d6\", \"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z\"]\n};\nvar faRingsWedding = {\n prefix: 'fas',\n iconName: 'rings-wedding',\n icon: [512, 512, [], \"f81b\", \"M351.25 160.77A206.38 206.38 0 0 1 379.9 233 112 112 0 1 1 224 336c0-42.21 23.69-78.57 58.31-97.49 3.37 10.64 5.69 21.75 5.69 33.49a111.34 111.34 0 0 1-30.73 76.6A79.84 79.84 0 0 0 293 403.23 175.36 175.36 0 0 0 352 272c0-81.62-55.64-150.07-131-170l35-70-32-32h-96L96 32l35 70C55.64 121.93 0 190.38 0 272a176 176 0 0 0 176 176 171.77 171.77 0 0 0 22.94-1.71A175.93 175.93 0 0 0 512 336c0-92-70.7-167.49-160.75-175.23zM64 272a112.12 112.12 0 0 1 112-112c26.85 0 51.19 9.88 70.5 25.69C194.94 216.24 160 271.68 160 336a175.89 175.89 0 0 0 6.55 47C109.28 378.16 64 330.52 64 272z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [], \"f018\", \"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [], \"f544\", \"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z\"]\n};\nvar faRocketLaunch = {\n prefix: 'fas',\n iconName: 'rocket-launch',\n icon: [512, 512, [], \"e027\", \"M505.16405,19.29688c-1.176-5.4629-6.98736-11.26563-12.45106-12.4336C460.61647,0,435.46433,0,410.41962,0,307.2013,0,245.30155,55.20312,199.09162,128H94.88878c-16.29733,0-35.599,11.92383-42.88913,26.49805L2.57831,253.29688A28.39645,28.39645,0,0,0,.06231,264a24.008,24.008,0,0,0,24.00353,24H128.01866a96.00682,96.00682,0,0,1,96.01414,96V488a24.008,24.008,0,0,0,24.00353,24,28.54751,28.54751,0,0,0,10.7047-2.51562l98.747-49.40626c14.56074-7.28515,26.4746-26.56445,26.4746-42.84374V312.79688c72.58882-46.3125,128.01886-108.40626,128.01886-211.09376C512.07522,76.55273,512.07522,51.40234,505.16405,19.29688ZM384.05637,168a40,40,0,1,1,40.00589-40A40.02,40.02,0,0,1,384.05637,168ZM35.68474,352.06641C9.82742,377.91992-2.94985,442.59375.57606,511.41016c69.11565,3.55859,133.61147-9.35157,159.36527-35.10547,40.28913-40.2793,42.8774-93.98633,6.31147-130.54883C129.68687,309.19727,75.97,311.78516,35.68474,352.06641Zm81.63312,84.03125c-8.58525,8.584-30.08256,12.88672-53.11915,11.69922-1.174-22.93555,3.08444-44.49219,11.70289-53.10938,13.42776-13.42578,31.33079-14.28906,43.51813-2.10352C131.60707,404.77148,130.74562,422.67188,117.31786,436.09766Z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faRouteHighway = {\n prefix: 'fas',\n iconName: 'route-highway',\n icon: [448, 512, [], \"f61a\", \"M428.4 269.21c-30.48-45.42-11.8-104.47 13-155.4 3.96-8.13 3.34-17.75-1.87-25.13l-41.18-58.36c-5.06-7.18-15.76-13.1-27.49-8.61-15.37 5.88-32.67 8.89-50.26 8.89-29.51 0-59.81-8.47-83.16-26.11C233.48 1.5 228.74 0 224 0s-9.48 1.5-13.44 4.49C187.21 22.13 156.9 30.6 127.39 30.6c-17.59 0-34.89-3.01-50.25-8.89-11.82-4.52-22.49 1.52-27.49 8.61L8.47 88.69c-5.21 7.38-5.83 16.99-1.87 25.13 24.8 50.92 43.47 109.97 13 155.4-37.94 56.52-18.55 139.43 38.81 166.03L223.97 512l165.62-76.76c57.36-26.6 76.75-109.51 38.81-166.03zm-65.72 107.96l-138.7 64.29-138.65-64.29c-19.78-9.17-29.7-46.8-12.59-72.3 24.73-36.86 29.2-76.74 25.22-112.87h252.07c-3.98 36.13.49 76.02 25.22 112.88 17.23 25.66 7.05 63.2-12.57 72.29z\"]\n};\nvar faRouteInterstate = {\n prefix: 'fas',\n iconName: 'route-interstate',\n icon: [480, 512, [], \"f61b\", \"M464.83 55.14c-3.6-11.66-14.92-19.1-26.18-15.95-18.23 5.12-37.74 7.96-58.1 7.96-49.12 0-93.61-16.07-126.17-42.11C250.18 1.68 245.09 0 240 0s-10.18 1.68-14.37 5.03c-32.56 26.04-77.05 42.11-126.17 42.11-20.36 0-39.87-2.84-58.1-7.96-11.23-3.15-22.57 4.26-26.18 15.95C-21.83 175.11-6.68 410.34 240 512 486.68 410.34 501.84 175.11 464.83 55.14zM240 441.87C115.27 380.93 72.01 279.56 64.76 192h350.49c-7.26 87.56-50.52 188.93-175.25 249.87z\"]\n};\nvar faRouter = {\n prefix: 'fas',\n iconName: 'router',\n icon: [576, 512, [], \"f8da\", \"M528 320H376v-80a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v80H48a48 48 0 0 0-48 48v96a48 48 0 0 0 48 48h480a48 48 0 0 0 48-48v-96a48 48 0 0 0-48-48zM96 448a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm96 0a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm-32.59-320.34a15.85 15.85 0 0 0 21.86.64c96.45-86.55 244.24-85.85 341.11.42a16 16 0 0 0 21.84-.63l22.71-22.7a16.11 16.11 0 0 0-.71-23.34C444.81-27.34 259.26-27.34 137.78 82a16.11 16.11 0 0 0-.71 23.34zm46.47 38a16.12 16.12 0 0 0-.86 23.61L227.73 212a15.94 15.94 0 0 0 21.7.78c58.77-49.84 145.8-49.36 205.14.21a16.07 16.07 0 0 0 21.63-.84l22.8-22.8a16.22 16.22 0 0 0-.84-23.63c-83.83-71.91-208.42-71.91-292.28-.06z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [], \"f09e\", \"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\"]\n};\nvar faRssSquare = {\n prefix: 'fas',\n iconName: 'rss-square',\n icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\"]\n};\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [], \"f158\", \"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [640, 512, [], \"f545\", \"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [576, 512, [], \"f547\", \"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerTriangle = {\n prefix: 'fas',\n iconName: 'ruler-triangle',\n icon: [512, 512, [], \"f61c\", \"M501.65 452.08l-51.16-51.16-38.57 38.57c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l38.57-38.57-56.57-56.57-38.57 38.57c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l38.57-38.57-56.57-56.57-38.57 38.57c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l38.57-38.57-56.57-56.57-38.57 38.57c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l38.57-38.57-56.6-56.59-38.57 38.57c-3.12 3.12-8.19 3.12-11.31 0L72.51 111.4c-3.12-3.12-3.12-8.19 0-11.31l38.57-38.57-51.17-51.17C52.76 3.2 43.97 0 35.35 0 17.31 0 0 14.01 0 35.17V476.9C0 496.29 15.71 512 35.1 512h441.73c31.27 0 46.93-37.8 24.82-59.92zM128 384V259.46L252.54 384H128z\"]\n};\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\"]\n};\nvar faRunning = {\n prefix: 'fas',\n iconName: 'running',\n icon: [416, 512, [], \"f70c\", \"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [320, 512, [], \"f156\", \"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\"]\n};\nvar faRv = {\n prefix: 'fas',\n iconName: 'rv',\n icon: [640, 512, [], \"f7be\", \"M621.3 269.3L563 211c-12-12-28.4-18.8-45.4-18.8L416 192v240h.2c.1 34.1 22.1 66.3 54.9 76.2 54.8 16.6 105-23.9 105-76.2v-16h32c17.6 0 32-14.4 32-32v-69.5c-.1-17-6.8-33.2-18.8-45.2zM496 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm-16-176v-48h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480zm128-160.8c-.4-52.6-43.2-95.2-96-95.2H384V16c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v16H64C28.7 32 0 60.7 0 96v197.5c0 17 6.7 33.3 18.7 45.3L96 416v11.4c0 41.8 30.1 80 71.8 84.1 47.9 4.8 88.2-32.7 88.2-79.6v-16h128V160h192c17.9 0 32.1-14.8 32-32.8zM176 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm80-256c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16v-64c0-8.8 7.2-16 16-16h128c8.8 0 16 7.2 16 16v64z\"]\n};\nvar faSack = {\n prefix: 'fas',\n iconName: 'sack',\n icon: [512, 512, [], \"f81c\", \"M192 96h128l47.4-71.12A16 16 0 0 0 354.09 0H157.94a16 16 0 0 0-13.31 24.88zm128 32H192C-10.38 243.4.09 396.64.09 416c0 53 49.11 96 109.68 96h292.48c60.58 0 109.68-43 109.68-96 0-19 9.35-173.24-191.93-288z\"]\n};\nvar faSackDollar = {\n prefix: 'fas',\n iconName: 'sack-dollar',\n icon: [512, 512, [], \"f81d\", \"M192 96h128l47.4-71.12A16 16 0 0 0 354.09 0H157.94a16 16 0 0 0-13.31 24.88zm128 32H192C-10.38 243.4.09 396.64.09 416c0 53 49.11 96 109.68 96h292.48c60.58 0 109.68-43 109.68-96 0-19 9.35-173.24-191.93-288zm-46.58 278v17.34a8.69 8.69 0 0 1-8.7 8.62h-17.41a8.69 8.69 0 0 1-8.71-8.62v-17.51a63.19 63.19 0 0 1-34.16-12.17 8.55 8.55 0 0 1-.66-13l12.84-12.06a8.92 8.92 0 0 1 11-.76 26.72 26.72 0 0 0 13.93 4h30.58c7.07 0 12.84-6.35 12.84-14.22 0-6.46-3.92-12.06-9.58-13.67l-49-14.54c-20.24-6-34.39-25.2-34.39-46.74 0-26.38 20.68-47.82 46.46-48.57v-17.48a8.69 8.69 0 0 1 8.74-8.62h17.41a8.68 8.68 0 0 1 8.7 8.62v17.55a63.12 63.12 0 0 1 34.17 12.17 8.55 8.55 0 0 1 .65 13l-12.73 12.2a8.92 8.92 0 0 1-11 .75 26.78 26.78 0 0 0-13.93-4h-30.56c-7.07 0-12.84 6.35-12.84 14.21 0 6.46 3.92 12.06 9.57 13.68l49 14.54c20.24 6 34.38 25.2 34.38 46.74-.14 26.4-20.92 47.94-46.6 48.54z\"]\n};\nvar faSadCry = {\n prefix: 'fas',\n iconName: 'sad-cry',\n icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\"]\n};\nvar faSadTear = {\n prefix: 'fas',\n iconName: 'sad-tear',\n icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"]\n};\nvar faSalad = {\n prefix: 'fas',\n iconName: 'salad',\n icon: [512, 512, [], \"f81e\", \"M96 256h73.37l-87-87a8 8 0 0 1 0-11.31l11.32-11.32a8 8 0 0 1 11.31 0l103 103V104a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v152h52.54a126.72 126.72 0 0 1-4.54-32A128.14 128.14 0 0 1 416 96c2.65 0 5.12.62 7.73.78C406.14 76.84 380.69 64 352 64a95 95 0 0 0-25.15 3.75 111.94 111.94 0 0 0-205.7 0A95 95 0 0 0 96 64a96 96 0 0 0 0 192zm224-32a95 95 0 0 0 5.88 32h169.29a47.88 47.88 0 0 1 10.57 1.24A95.87 95.87 0 1 0 320 224zm175.17 64h-479C7 288-.74 295.72.06 304.84 6.69 381.21 58.27 444.23 128 468.69V480a32 32 0 0 0 32 32h192a32 32 0 0 0 32-32v-11.51c69.4-24.62 120.66-87.49 127.27-163.65.79-9.12-6.95-16.84-16.1-16.84z\"]\n};\nvar faSandwich = {\n prefix: 'fas',\n iconName: 'sandwich',\n icon: [512, 512, [], \"f81f\", \"M480 32H32A32 32 0 0 0 0 64v96a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm17.9 223.29c-15.08-1.68-24-6.17-35.51-11.9-17.27-8.64-38.73-19.39-78.27-19.39s-61 10.75-78.26 19.38C291.22 250.7 280.64 256 256.22 256s-35.08-5.3-49.75-12.62c-17.28-8.63-38.78-19.38-78.36-19.38S67 234.73 49.77 243.38c-11.51 5.74-20.51 10.24-35.67 11.91A15.93 15.93 0 0 0 0 271.08v32.14a16.26 16.26 0 0 0 17.85 16c28.58-2.63 46-11.36 60.51-18.59C93 293.3 103.64 288 128.11 288s35.09 5.3 49.77 12.62c17.26 8.65 38.78 19.38 78.34 19.38s61-10.75 78.26-19.38C349.12 293.3 359.7 288 384.12 288s35 5.3 49.61 12.61c14.47 7.24 31.89 16 60.41 18.6a16.27 16.27 0 0 0 17.86-16v-32.14a15.94 15.94 0 0 0-14.1-15.78zM480 352h-64l-96 48-96-48H32a32 32 0 0 0-32 32v64a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32v-64a32 32 0 0 0-32-32z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [], \"f7bf\", \"M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z\"]\n};\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [], \"f7c0\", \"M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z\"]\n};\nvar faSausage = {\n prefix: 'fas',\n iconName: 'sausage',\n icon: [512, 512, [], \"f820\", \"M447.83 69.83L463 24.18A18.36 18.36 0 0 0 445.62 0h-59.24A18.36 18.36 0 0 0 369 24.18l15.21 45.65C346.88 83 320 118.2 320 160c0 88.22-71.78 160-160 160-41.8 0-77 26.88-90.17 64.17L24.18 369A18.36 18.36 0 0 0 0 386.38v59.24A18.37 18.37 0 0 0 24.18 463l45.65-15.21C83 485.12 118.2 512 160 512c194.09 0 352-157.91 352-352 0-41.8-26.88-77-64.17-90.17zM160 400a16 16 0 0 1 0-32c114.69 0 208-93.31 208-208a16 16 0 0 1 32 0c0 132.34-107.66 240-240 240z\"]\n};\nvar faSave = {\n prefix: 'fas',\n iconName: 'save',\n icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\"]\n};\nvar faSaxHot = {\n prefix: 'fas',\n iconName: 'sax-hot',\n icon: [640, 512, [], \"f8db\", \"M83.23 176A60.88 60.88 0 0 1 72 140.8c0-7.62 8.66-30.3 28.46-57.54q2 2.61 3.89 5.22L147 147.26l27.06-33.08c6.07 12.1 9.54 22.24 9.92 26.62a60.88 60.88 0 0 1-11.21 35.2h61.34a117 117 0 0 0 5.89-35.2c0-26.63-26-81.57-62.23-115.2a301.94 301.94 0 0 0-28.1 30A387.31 387.31 0 0 0 100 0C50.88 45.58 16 105 16 140.8a117 117 0 0 0 5.89 35.2zm552.05-75.31L608 73.37A32 32 0 0 0 585.34 64h-46.83a64 64 0 0 0-45.26 18.74L449 127l-10.34-10.34a16 16 0 0 0-22.63 0L404.69 128a16 16 0 0 0 0 22.63L415 161l-14 14-10.34-10.34a16 16 0 0 0-22.63 0L356.69 176a16 16 0 0 0 0 22.63L367 209l-14 14-10.34-10.34a16 16 0 0 0-22.63 0L308.69 224a16 16 0 0 0 0 22.63L319 257 210 366a25.41 25.41 0 0 1-39.76-31l47.39-79H240a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v16a15.91 15.91 0 0 0 15.21 15.84C7.48 288.56 0 326.72 0 352c0 61.4 35 114.09 85.73 140.92A150 150 0 0 0 160 512c77.1 0 116.46-51.33 128-64l246.39-308a32 32 0 0 1 25-12H624c14.22 0 21.36-17.23 11.28-27.31zM88 392a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm32-88a24 24 0 1 1 24-24 24 24 0 0 1-24 24z\"]\n};\nvar faSaxophone = {\n prefix: 'fas',\n iconName: 'saxophone',\n icon: [640, 512, [], \"f8dc\", \"M635.28 68.69L608 41.37A32 32 0 0 0 585.34 32h-46.83a64 64 0 0 0-45.26 18.74L449 95l-10.37-10.31a16 16 0 0 0-22.63 0L404.69 96a16 16 0 0 0 0 22.63L415 129l-14 14-10.34-10.34a16 16 0 0 0-22.63 0L356.69 144a16 16 0 0 0 0 22.63L367 177l-14 14-10.34-10.34a16 16 0 0 0-22.63 0L308.69 192a16 16 0 0 0 0 22.63L319 225 210 334a25.41 25.41 0 0 1-39.76-31l76.16-127H272a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h11.46C18.65 207.92 0 280.13 0 320c0 61.4 35 114.09 85.73 140.92A150 150 0 0 0 160 480c77.1 0 116.46-51.33 128-64l246.39-308a32 32 0 0 1 25-12H624c14.22 0 21.36-17.23 11.28-27.31zM96 344a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm32-96a24 24 0 1 1 24-24 24 24 0 0 1-24 24z\"]\n};\nvar faScalpel = {\n prefix: 'fas',\n iconName: 'scalpel',\n icon: [512, 512, [], \"f61d\", \"M482.7 11.85c-29.2-20.83-70.18-13.03-93.49 14.22l-201.5 235.46c-8.9 10.41-1.51 26.47 12.19 26.47h131.94c9.37 0 18.28-4.1 24.37-11.22l139.02-162.44c26.37-30.8 21.23-78.41-12.53-102.49zM0 512c87 .07 170.28-29.18 234.29-81.16.2-.16.39-.32.59-.48 31.37-25.71 46.72-63.93 46.72-102.32V320H176L0 512z\"]\n};\nvar faScalpelPath = {\n prefix: 'fas',\n iconName: 'scalpel-path',\n icon: [640, 512, [], \"f61e\", \"M312 480h-80c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h80c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm160 0h-80c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h80c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm160 0h-80c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h80c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm-397.12-49.64c31.37-25.71 46.72-63.93 46.72-102.32V320H176L0 512c87 .07 170.28-29.18 234.29-81.16.2-.16.39-.32.59-.48zM482.71 11.85c-29.2-20.83-70.18-13.03-93.49 14.22l-201.5 235.46c-8.9 10.41-1.51 26.46 12.19 26.46h131.94c9.37 0 18.28-4.1 24.37-11.22l139.02-162.44c26.36-30.79 21.22-78.4-12.53-102.48z\"]\n};\nvar faScanner = {\n prefix: 'fas',\n iconName: 'scanner',\n icon: [640, 512, [], \"f488\", \"M368 64H96c-53 0-96 43-96 96 0 52.4 42.1 94.9 94.3 95.8L6.4 408C-6.9 431 1 460.3 24 473.6l55.4 32c23 13.3 52.3 5.4 65.6-17.6l133.9-232H368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM256 448c17.7 0 32-14.3 32-32V304.3L205 448h51zm376 0H456c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-96H456c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8zm0-288H456c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V72c0-4.4-3.6-8-8-8zm0-64H456c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8zm0 288H456c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8zm0-128H456c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h176c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8z\"]\n};\nvar faScannerImage = {\n prefix: 'fas',\n iconName: 'scanner-image',\n icon: [640, 512, [], \"f8f3\", \"M10.93 108.71L467.65 256h167.59l3.93-11.75a16 16 0 0 0-10.1-20.25L36.3 32.83a16 16 0 0 0-20.24 10.1L.83 88.46a16 16 0 0 0 10.1 20.25zM32 288a32 32 0 0 0-32 32v128a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V288zm88 112a8 8 0 0 1-8 8H80a8 8 0 0 1-8-8v-32a8 8 0 0 1 8-8h32a8 8 0 0 1 8 8zm96 0a8 8 0 0 1-8 8h-32a8 8 0 0 1-8-8v-32a8 8 0 0 1 8-8h32a8 8 0 0 1 8 8z\"]\n};\nvar faScannerKeyboard = {\n prefix: 'fas',\n iconName: 'scanner-keyboard',\n icon: [576, 512, [], \"f489\", \"M400 96H16c-8.8 0-16 7.2-16 16v137.4c0 4.2 1.7 8.3 4.7 11.3L32 288v176c0 26.5 21.5 48 48 48h256c26.5 0 48-21.5 48-48V288l27.3-27.3c3-3 4.7-7.1 4.7-11.3V112c0-8.8-7.2-16-16-16zM192 440c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v48zm0-96c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v48zm128 96c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v48zm0-96c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v48zm32-128c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h272c4.4 0 8 3.6 8 8v48zM256 8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56h64V8zm152-8h-48c-4.4 0-8 3.6-8 8v56h64V8c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8zM320 8c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v56h32V8zm152-8h-16c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8z\"]\n};\nvar faScannerTouchscreen = {\n prefix: 'fas',\n iconName: 'scanner-touchscreen',\n icon: [576, 512, [], \"f48a\", \"M400 96H16c-8.8 0-16 7.2-16 16v137.4c0 4.2 1.7 8.3 4.7 11.3L32 288v176c0 26.5 21.5 48 48 48h256c26.5 0 48-21.5 48-48V288l27.3-27.3c3-3 4.7-7.1 4.7-11.3V112c0-8.8-7.2-16-16-16zm-80 336c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h192c8.8 0 16 7.2 16 16v256zM256 8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56h64V8zm64 0c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v56h32V8zm88-8h-48c-4.4 0-8 3.6-8 8v56h64V8c0-4.4-3.6-8-8-8zm160 0h-48c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8zm-96 0h-16c-4.4 0-8 3.6-8 8v272c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8z\"]\n};\nvar faScarecrow = {\n prefix: 'fas',\n iconName: 'scarecrow',\n icon: [448, 512, [], \"f70d\", \"M224 448.1c-7.7 0-15.4-1.9-22.2-5.5l-9.8-5.2V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-58.7l-9.8 5.2c-6.8 3.7-14.5 5.6-22.2 5.6zm221.7-261.8L419.3 160l18.3-18.3c5-5 1.5-13.7-5.7-13.7H314.1c3.6-10 5.9-20.7 5.9-32 0-53-43-96-96-96s-96 43-96 96c0 11.3 2.3 22 5.9 32H16c-7.1 0-10.7 8.6-5.7 13.7L28.7 160 2.3 186.3c-3.1 3.1-3.1 8.2 0 11.3L28.7 224l-18.3 18.3c-5 5-1.5 13.7 5.7 13.7h106.1l-26 141.3c-2.1 12.9 11.2 22.8 22.9 16.9l32.7-24.2c5-3.7 11.6-4.2 17.1-1.3l47.9 25.5c4.5 2.4 9.8 2.4 14.3 0l47.9-25.5c5.5-2.9 12.1-2.4 17.1 1.3l32.7 24.2c11.7 5.9 25.1-4 22.9-16.9L325.9 256H432c7.1 0 10.7-8.6 5.7-13.7L419.3 224l26.3-26.3c3.2-3.2 3.2-8.2.1-11.4zM192 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 16c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faScarf = {\n prefix: 'fas',\n iconName: 'scarf',\n icon: [512, 512, [], \"f7c1\", \"M214.2 100.9c36.9-8.6 68.1-3.7 84.4.2l-19.5 19.4 109.8 109.6c46.6-51.7 20.4-105.3 13.2-117.3l-43.7-73.4c-4.3-7.2-9.9-13.3-16.8-18-40.6-27.5-127.3-29.6-171.3.1-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.1c-1.5 2.5-37.1 62.1 11.5 115.8l135.1 140.7L369.6 256 214.2 100.9zM166 323.7L47.6 441.9c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l118.4-118.2-22.6-22.6zm-45.3-45.1L2.3 396.7c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l118.4-118.2-22.6-22.5zM92.9 487.1c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l118.4-118.2-22.6-22.6L92.9 487.1zm208.9-118.2l-22.6 22.6 117.4 117.2c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3L301.8 368.9zm207.9 26.8L392.3 278.6l-22.6 22.6L487 418.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.2-3.1 3.2-8.1.1-11.3zm-162.7-72l-22.6 22.6 117.4 117.2c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.1 3.1-8.2 0-11.3L347 323.7z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [], \"f549\", \"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [], \"f54a\", \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [640, 512, [], \"f70e\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z\"]\n};\nvar faScrollOld = {\n prefix: 'fas',\n iconName: 'scroll-old',\n icon: [640, 512, [], \"f70f\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288v-57.37c0-4.24-1.69-8.31-4.69-11.31L512 256l27.31-27.31c3-3 4.69-7.07 4.69-11.31v-50.75c0-4.24-1.69-8.31-4.69-11.31L512 128l26.86-26.86c3.27-3.27 5.21-7.84 4.86-12.45C539.98 39.15 498.48 0 448 0H111.59C121.74 13.41 128 29.92 128 48v137.37c0 4.24 1.69 8.31 4.69 11.31L160 224l-27.31 27.31c-3 3-4.69 7.07-4.69 11.31V416c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zm187.31-23.88L416 416l-27.31-27.31c-3-3-7.07-4.69-11.31-4.69H288v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H454.63c-4.25 0-8.32 1.69-11.32 4.69z\"]\n};\nvar faScrubber = {\n prefix: 'fas',\n iconName: 'scrubber',\n icon: [496, 512, [], \"f2f8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 312c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faScythe = {\n prefix: 'fas',\n iconName: 'scythe',\n icon: [640, 512, [], \"f710\", \"M608 0h-25.45l-59.74 288H400a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h109.54l-29.26 141.05A16 16 0 0 0 496 512h31.45a16 16 0 0 0 15.72-13l96.27-461A32 32 0 0 0 608 0zm-58.13 0h-211C192 0 64 64 0 192h510z\"]\n};\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z\"]\n};\nvar faSearch = {\n prefix: 'fas',\n iconName: 'search',\n icon: [512, 512, [], \"f002\", \"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"]\n};\nvar faSearchDollar = {\n prefix: 'fas',\n iconName: 'search-dollar',\n icon: [512, 512, [], \"f688\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z\"]\n};\nvar faSearchLocation = {\n prefix: 'fas',\n iconName: 'search-location',\n icon: [512, 512, [], \"f689\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faSearchMinus = {\n prefix: 'fas',\n iconName: 'search-minus',\n icon: [512, 512, [], \"f010\", \"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSearchPlus = {\n prefix: 'fas',\n iconName: 'search-plus',\n icon: [512, 512, [], \"f00e\", \"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [], \"f4d8\", \"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\"]\n};\nvar faSendBack = {\n prefix: 'fas',\n iconName: 'send-back',\n icon: [640, 512, [], \"f87e\", \"M256 224V32a32 32 0 0 0-32-32H32A32 32 0 0 0 0 32v192a32 32 0 0 0 32 32h192a32 32 0 0 0 32-32zm-64-32H64V64h128zm416 64H416a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h192a32 32 0 0 0 32-32V288a32 32 0 0 0-32-32zm-32 192H448V320h128zm-96-224v-80a48 48 0 0 0-48-48H288v128a64.07 64.07 0 0 1-64 64h-64v80a48 48 0 0 0 48 48h144V288a64.07 64.07 0 0 1 64-64z\"]\n};\nvar faSendBackward = {\n prefix: 'fas',\n iconName: 'send-backward',\n icon: [512, 512, [], \"f87f\", \"M464,160H208a48,48,0,0,0-48,48V464a48,48,0,0,0,48,48H464a48,48,0,0,0,48-48h0V208A48,48,0,0,0,464,160ZM448,448H224V224H448ZM352,128V48A48,48,0,0,0,304,0H48A48,48,0,0,0,0,48V304a48,48,0,0,0,48,48h80V208a80.09,80.09,0,0,1,80-80Z\"]\n};\nvar faSensor = {\n prefix: 'fas',\n iconName: 'sensor',\n icon: [448, 512, [], \"e028\", \"M384,32H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H384a64,64,0,0,0,64-64V96A64,64,0,0,0,384,32ZM96,272a16,16,0,0,1-32,0V112a16,16,0,0,1,32,0Zm64,0a16,16,0,0,1-32,0V112a16,16,0,0,1,32,0Zm64,0a16,16,0,0,1-32,0V112a16,16,0,0,1,32,0Z\"]\n};\nvar faSensorAlert = {\n prefix: 'fas',\n iconName: 'sensor-alert',\n icon: [640, 512, [], \"e029\", \"M235.19,387.38,376,143.23a82.24,82.24,0,0,1,72-41.58V96a64,64,0,0,0-64-64H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H242.51c-2.47-3.15-5.24-6-7.29-9.54A82.22,82.22,0,0,1,235.19,387.38ZM96,272a16,16,0,0,1-32,0V112a16,16,0,0,1,32,0Zm64,0a16,16,0,0,1-32,0V112a16,16,0,0,1,32,0Zm48,16a16,16,0,0,1-16-16V112a16,16,0,0,1,32,0V272A16,16,0,0,1,208,288ZM633.09,403.37,492.27,159.22c-19.66-34.09-68.87-34.09-88.53,0L262.91,403.36C243.26,437.43,267.85,480,307.18,480H588.82C628.15,480,652.74,437.43,633.09,403.37ZM448,432a24,24,0,1,1,24-24A24,24,0,0,1,448,432Zm19.08-82.8A12,12,0,0,1,455.14,360H440.87a12,12,0,0,1-11.95-10.8l-9.59-96A12,12,0,0,1,431.27,240h33.47a12,12,0,0,1,11.94,13.2Z\"]\n};\nvar faSensorFire = {\n prefix: 'fas',\n iconName: 'sensor-fire',\n icon: [640, 512, [], \"e02a\", \"M288.89,315.43c0-61.11,53.71-153.47,130.6-224.61a32.08,32.08,0,0,1,21.83-8.53c2.27,0,4.45.75,6.68,1.23A64.11,64.11,0,0,0,385.08,32H64.18A64.08,64.08,0,0,0,0,96V416a64.08,64.08,0,0,0,64.18,64H376.46A197.48,197.48,0,0,1,288.89,315.43ZM96.27,272a16,16,0,0,1-32.09,0V112a16,16,0,0,1,32.09,0Zm64.18,0a16,16,0,0,1-32.09,0V112a16,16,0,0,1,32.09,0Zm64.18,0a16,16,0,0,1-32.09,0V112a16,16,0,0,1,32.09,0ZM551.12,150.86A426.14,426.14,0,0,0,511,193.7,553.25,553.25,0,0,0,440,114.29c-70.19,65.11-120,150-120,201.14C320,406.33,391.63,480,480,480s160-73.67,160-164.57C640,277.38,602.87,198.89,551.12,150.86Zm-11.06,247A100.9,100.9,0,0,1,482.14,416C428,416,384,380.19,384,322.07c0-29,18.23-54.48,54.6-98.07,5.19,6,74.11,94,74.11,94l44-50.14c3.11,5.12,5.93,10.15,8.44,15C585.65,322,577,372.05,540.06,397.9Z\"]\n};\nvar faSensorOn = {\n prefix: 'fas',\n iconName: 'sensor-on',\n icon: [640, 512, [], \"e02b\", \"M384,32H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H384a64,64,0,0,0,64-64V96A64,64,0,0,0,384,32ZM96,272a16,16,0,0,1-32,0V112a16,16,0,0,1,32,0Zm64,0a16,16,0,0,1-32,0V112a16,16,0,0,1,32,0Zm64,0a16,16,0,0,1-32,0V112a16,16,0,0,1,32,0Zm392-40H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48Zm-80-88a23.87,23.87,0,0,0,13.29-4l48-32a24,24,0,1,0-26.62-39.92l-48,32A24,24,0,0,0,536,144Zm13.29,228A24,24,0,1,0,522.69,412l48,32A24,24,0,1,0,597.31,404Z\"]\n};\nvar faSensorSmoke = {\n prefix: 'fas',\n iconName: 'sensor-smoke',\n icon: [640, 512, [], \"e02c\", \"M572.67,321.28a47.81,47.81,0,0,0-82.4-46.63,79.94,79.94,0,0,0-152.63,45.52c-.56,0-1.08-.17-1.64-.17a80,80,0,0,0,0,160H560a79.85,79.85,0,0,0,12.67-158.72Zm-268.08-28.8A112.15,112.15,0,0,1,416,192c11.14,0,21.74,2.15,32,5.22V96a64,64,0,0,0-64-64H64A64,64,0,0,0,0,96V416a64,64,0,0,0,64,64H257.86a111.81,111.81,0,0,1,46.73-187.52ZM96,272a16,16,0,0,1-32,0V112a16,16,0,0,1,32,0Zm64,0a16,16,0,0,1-32,0V112a16,16,0,0,1,32,0Zm48,16a16,16,0,0,1-16-16V112a16,16,0,0,1,32,0V272A16,16,0,0,1,208,288Z\"]\n};\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [], \"f61f\", \"M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [], \"f064\", \"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\"]\n};\nvar faShareAll = {\n prefix: 'fas',\n iconName: 'share-all',\n icon: [576, 512, [], \"f367\", \"M439.691 226.164L263.687 378.15C248.3 391.439 224 380.687 224 359.986v-84.175c-108.668 12.533-151.102 58.854-112.59 182.015 5.034 16.098-14.424 28.562-28.077 18.631C39.582 444.635 0 383.766 0 322.326 0 190.99 94.818 149.009 224 138.777V56.015c0-20.667 24.28-31.469 39.687-18.164l176.004 151.985c11.086 9.575 11.071 26.767 0 36.328zm128-36.328L391.687 37.851C376.28 24.546 352 35.348 352 56.015v15.818l108.607 93.786A55.949 55.949 0 0 1 480 207.998a55.96 55.96 0 0 1-19.394 42.385L352 344.168v15.818c0 20.701 24.3 31.453 39.687 18.164l176.004-151.986c11.071-9.561 11.086-26.753 0-36.328z\"]\n};\nvar faShareAlt = {\n prefix: 'fas',\n iconName: 'share-alt',\n icon: [448, 512, [], \"f1e0\", \"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"]\n};\nvar faShareAltSquare = {\n prefix: 'fas',\n iconName: 'share-alt-square',\n icon: [448, 512, [], \"f1e1\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\"]\n};\nvar faShareSquare = {\n prefix: 'fas',\n iconName: 'share-square',\n icon: [576, 512, [], \"f14d\", \"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\"]\n};\nvar faSheep = {\n prefix: 'fas',\n iconName: 'sheep',\n icon: [640, 512, [], \"f711\", \"M622.25 105.96L576 83.22V64c0-17.67-14.33-32-32-32h-64c0-17.67-14.33-32-32-32s-32 14.33-32 32v76.82c-17.53-15.92-47.07-15.86-64.62.42-8.6-8.16-20.16-13.24-32.99-13.24-12.47 0-24 4.8-32.64 12.8-8.64-8-19.83-12.8-32.64-12.8-12.47 0-24 4.8-32.31 12.8-8.64-8-20.16-12.8-32.64-12.8-13.12 0-24.97 5.44-33.61 13.75-11.19-9.28-26.23-13.75-41.59-10.23-17.59 3.84-31.03 16.95-35.84 33.28-16.64-2.88-34.23 3.2-45.44 17.28-11.52 14.08-13.44 32.64-7.03 48.31C9.92 206.72 0 222.39 0 240.31c0 18.23 10.23 33.92 24.95 41.92-6.41 15.69-4.16 34.23 7.05 48.31 11.52 14.09 29.11 20.17 45.75 17.28 4.08 13.61 14.64 24.76 28.47 30.27l-6.14 16.38a63.973 63.973 0 0 0-2.16 38l16.85 67.41A16.002 16.002 0 0 0 130.29 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-18.31-73.26 14.76-39.36c4.73-2.15 9.22-4.78 12.9-8.31 8.64 8 20.17 12.81 32.64 12.81 12.48 0 24-4.81 32.64-12.81 8.64 8 19.84 12.81 32.64 12.81 12.52 0 23.87-4.98 32.39-12.97.17.16.4.21.57.37V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V330.67L483.5 307a64.009 64.009 0 0 0 28.5-53.25V192h87.66c9.26 0 17.76-4.9 22.37-12.94 7.59-13.26 17.98-33.45 17.98-44.59a31.798 31.798 0 0 0-17.76-28.51zM512 112c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [], \"f20b\", \"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShield = {\n prefix: 'fas',\n iconName: 'shield',\n icon: [512, 512, [], \"f132\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3z\"]\n};\nvar faShieldAlt = {\n prefix: 'fas',\n iconName: 'shield-alt',\n icon: [512, 512, [], \"f3ed\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z\"]\n};\nvar faShieldCheck = {\n prefix: 'fas',\n iconName: 'shield-check',\n icon: [512, 512, [], \"f2f7\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zm-47.2 114.2l-184 184c-6.2 6.2-16.4 6.2-22.6 0l-104-104c-6.2-6.2-6.2-16.4 0-22.6l22.6-22.6c6.2-6.2 16.4-6.2 22.6 0l70.1 70.1 150.1-150.1c6.2-6.2 16.4-6.2 22.6 0l22.6 22.6c6.3 6.3 6.3 16.4 0 22.6z\"]\n};\nvar faShieldCross = {\n prefix: 'fas',\n iconName: 'shield-cross',\n icon: [448, 512, [], \"f712\", \"M420.43 83.69l-179.2-80c-11.03-4.92-23.43-4.92-34.46 0l-179.2 80C10.88 91.14 0 108.62 0 128c0 198.49 106.86 335.71 206.77 380.31 11.03 4.92 23.43 4.92 34.46 0C321.13 472.64 448 349.28 448 128c0-19.38-10.88-36.86-27.57-44.31zM374.09 224H256v200.27c-11.34 8.92-22.26 16.12-32.07 21.3-10.68-5.51-21.36-12.66-31.93-20.81V224H74.8c-4.39-20.25-7.37-41.58-8.9-64H192V80.37l32-14.29 32 14.29V160h126.74c-1.47 22.72-4.4 44.07-8.65 64z\"]\n};\nvar faShieldVirus = {\n prefix: 'fas',\n iconName: 'shield-virus',\n icon: [512, 512, [], \"e06c\", \"M224,192a16,16,0,1,0,16,16A16,16,0,0,0,224,192ZM466.5,83.68l-192-80A57.4,57.4,0,0,0,256.05,0a57.4,57.4,0,0,0-18.46,3.67l-192,80A47.93,47.93,0,0,0,16,128C16,326.5,130.5,463.72,237.5,508.32a48.09,48.09,0,0,0,36.91,0C360.09,472.61,496,349.3,496,128A48,48,0,0,0,466.5,83.68ZM384,256H371.88c-28.51,0-42.79,34.47-22.63,54.63l8.58,8.57a16,16,0,1,1-22.63,22.63l-8.57-8.58C306.47,313.09,272,327.37,272,355.88V368a16,16,0,0,1-32,0V355.88c0-28.51-34.47-42.79-54.63-22.63l-8.57,8.58a16,16,0,0,1-22.63-22.63l8.58-8.57c20.16-20.16,5.88-54.63-22.63-54.63H128a16,16,0,0,1,0-32h12.12c28.51,0,42.79-34.47,22.63-54.63l-8.58-8.57a16,16,0,0,1,22.63-22.63l8.57,8.58c20.16,20.16,54.63,5.88,54.63-22.63V112a16,16,0,0,1,32,0v12.12c0,28.51,34.47,42.79,54.63,22.63l8.57-8.58a16,16,0,0,1,22.63,22.63l-8.58,8.57C329.09,189.53,343.37,224,371.88,224H384a16,16,0,0,1,0,32Zm-96,0a16,16,0,1,0,16,16A16,16,0,0,0,288,256Z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [640, 512, [], \"f21a\", \"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\"]\n};\nvar faShippingFast = {\n prefix: 'fas',\n iconName: 'shipping-fast',\n icon: [640, 512, [], \"f48b\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShippingTimed = {\n prefix: 'fas',\n iconName: 'shipping-timed',\n icon: [640, 512, [], \"f48c\", \"M248 160h-24v-56c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-16c0-4.4-3.6-8-8-8zm376 192h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm48-176c-61.9 0-112-50.1-112-112S146.1 64 208 64s112 50.1 112 112-50.1 112-112 112zm272 176c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShishKebab = {\n prefix: 'fas',\n iconName: 'shish-kebab',\n icon: [512, 512, [], \"f821\", \"M126.55 255.59a30.61 30.61 0 0 0-43.28 0L41 297.89a30.6 30.6 0 0 0 0 43.29L170.82 471a30.6 30.6 0 0 0 43.29 0l42.3-42.3a30.61 30.61 0 0 0 0-43.28zm108.22-108.21a30.62 30.62 0 0 0-43.29 0l-42.3 42.3a30.61 30.61 0 0 0 0 43.28L279 362.82a30.61 30.61 0 0 0 43.28 0l42.3-42.3a30.6 30.6 0 0 0 0-43.29zM4.55 473.52a15.49 15.49 0 0 0 0 21.94l12 12a15.49 15.49 0 0 0 21.94 0l61.78-61.73-33.95-33.94zM511.21 84.07c-3.78-29.71-21.06-55.68-47.42-71.21a95.17 95.17 0 0 0-97.93 1.43C323.2 41 307.71 94 330 138.88c1.44 2.93 2.28 7.16 0 9.49l-24.47 24.45 33.93 33.93 24.48-24.46c16.72-16.73 20.28-42.14 9.09-64.72-9.62-19.43-6-48.25 19.61-63.36a45.55 45.55 0 0 1 45.92-.53c14.22 8 23.15 21 25.13 36.45a47.88 47.88 0 0 1-6 30.09c-3.71 6.39-3.31 14.32 1.91 19.55l12.29 12.29c6.72 6.72 18.17 6.09 23.54-1.75a95.31 95.31 0 0 0 15.78-66.24z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\"]\n};\nvar faShoppingBag = {\n prefix: 'fas',\n iconName: 'shopping-bag',\n icon: [448, 512, [], \"f290\", \"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\"]\n};\nvar faShoppingBasket = {\n prefix: 'fas',\n iconName: 'shopping-basket',\n icon: [576, 512, [], \"f291\", \"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"]\n};\nvar faShoppingCart = {\n prefix: 'fas',\n iconName: 'shopping-cart',\n icon: [576, 512, [], \"f07a\", \"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\"]\n};\nvar faShovel = {\n prefix: 'fas',\n iconName: 'shovel',\n icon: [512, 512, [], \"f713\", \"M500.3 96.38L415.62 11.7c-15.59-15.59-40.97-15.59-56.56 0l-32.67 32.67c-18.94 18.94-29.25 44.31-29.25 70.55 0 6.53.64 13.13 1.95 19.69 1.74 8.69 4.75 16.84 8.53 24.53L197.36 269.39l-45.26-45.26c-12.5-12.5-32.76-12.5-45.25 0l-67.88 67.88C-11.02 342-6.29 473.03 16.34 495.66c22.63 22.63 153.66 27.36 203.65-22.63l67.88-67.88c12.5-12.5 12.5-32.76 0-45.25l-45.26-45.26 110.26-110.26c7.7 3.79 15.87 6.8 24.57 8.54 32.81 6.56 66.53-3.64 90.19-27.3l32.67-32.67c15.6-15.6 15.6-40.97 0-56.57zm-77.92 43.99a35.87 35.87 0 0 1-32.42 9.8c-14.23-2.86-25.27-13.91-28.13-28.17-2.33-11.83 1.31-23.91 9.8-32.38l15.7-15.7 50.75 50.75-15.7 15.7z\"]\n};\nvar faShovelSnow = {\n prefix: 'fas',\n iconName: 'shovel-snow',\n icon: [512, 512, [], \"f7c3\", \"M503.2 72.3L439.7 8.8C428-2.9 409-2.9 397.3 8.8l-24.5 24.5c-14.2 14.2-21.9 33.2-21.9 52.9 0 4.9.5 9.8 1.5 14.8 1.3 6.5 3.6 12.6 6.4 18.4l-99.3 99.3-49.3-49.3c-11.3-11.3-29.3-12.5-41.9-2.7L12.4 287c-15.2 11.7-16.6 34.1-3 47.6l168 168c13.6 13.6 35.9 12.1 47.6-3l120.4-155.8c9.8-12.7 8.6-30.6-2.7-41.9l-49.3-49.3 99.3-99.3c5.8 2.8 11.9 5.1 18.4 6.4 24.6 4.9 49.9-2.7 67.6-20.5l24.5-24.5c11.7-11.7 11.7-30.7 0-42.4zM112 352c-4.1 0-8.2-1.6-11.3-4.7-6.2-6.2-6.2-16.4 0-22.6l80-80c6.2-6.3 16.4-6.3 22.6 0 6.2 6.2 6.2 16.4 0 22.6l-80 80c-3.1 3.1-7.2 4.7-11.3 4.7zm155.3-20.7l-80 80c-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7c-6.2-6.2-6.2-16.4 0-22.6l80-80c6.2-6.2 16.4-6.2 22.6 0s6.3 16.4 0 22.6zm177.5-226c-6.4 6.4-15.5 9.1-24.3 7.3-10.7-2.1-19-10.4-21.1-21.1-1.7-8.9 1-17.9 7.3-24.3l11.8-11.8 38.1 38.1-11.8 11.8z\"]\n};\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z\"]\n};\nvar faShredder = {\n prefix: 'fas',\n iconName: 'shredder',\n icon: [512, 512, [], \"f68a\", \"M232 496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-80h-48v80zm-96 0c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-80h-48v80zm-96 0c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-80H40v80zm288 0c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-80h-48v80zm120-304V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 32H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-8 200c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-80h-48v80z\"]\n};\nvar faShuttleVan = {\n prefix: 'fas',\n iconName: 'shuttle-van',\n icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\"]\n};\nvar faShuttlecock = {\n prefix: 'fas',\n iconName: 'shuttlecock',\n icon: [512, 512, [], \"f45b\", \"M484 192h-20c0 6 4.3 55.7-44.7 71.2L328.1 292l-26.4 45.4-78 36.3-25.7-25.8 70.8-70.8 140.8-44.5c13.3-4.2 22.4-16.6 22.4-30.5V108c0-15.5-12.5-28-28-28h-94.1c-14 0-26.3 9.1-30.5 22.4l-44.5 140.8-70.8 70.8-25.7-25.7 36.3-78 45.4-26.4 28.8-91.2C263.4 46.7 307.7 48 320 48V28c0-15.4-12.6-28-28-28h-54.6c-10.8 0-20.8 6.3-25.4 16.2L95.5 266.5l-39.2 39.2 150 150 39.2-39.2L495.8 300c9.8-4.6 16.2-14.5 16.2-25.4V220c0-15.4-12.6-28-28-28zM31.1 331c-41.4 41.4-41.4 108.6 0 150 41.4 41.4 108.6 41.4 150 0l2.6-2.6-150-150-2.6 2.6z\"]\n};\nvar faSickle = {\n prefix: 'fas',\n iconName: 'sickle',\n icon: [512, 512, [], \"f822\", \"M129.94 308.69a16 16 0 0 0-22.63 0l-22.62 22.62a16 16 0 0 0 0 22.63l2.74 2.75-82.74 82.74a16 16 0 0 0 0 22.63L50 507.31a16 16 0 0 0 22.63 0l82.75-82.75 2.74 2.74a16 16 0 0 0 22.63 0l22.62-22.62a16 16 0 0 0 0-22.63zM320 0c-96 0-166.25 69.31-184.12 151.44-13.74 63.14 10.71 128.65 56.41 174.34L224 355.87l35.42-35.42c-38.53-64.2-23.88-151.27 46.88-196 43.09-27.24 99.58-28.9 144.05-4a148.11 148.11 0 0 1 47.33 41.42c5.08 6.9 15.79 1.93 14.14-6.48C501.17 100.72 448 0 320 0z\"]\n};\nvar faSigma = {\n prefix: 'fas',\n iconName: 'sigma',\n icon: [384, 512, [], \"f68b\", \"M352 32H52.03C32.37 32 14.59 42.89 5.68 60.44c-8.91 17.53-7.25 38.31 4.31 54.16L132.66 256 10.03 397.36c-11.59 15.89-13.25 36.67-4.34 54.2C14.59 469.11 32.37 480 52.03 480H352c17.67 0 32-14.33 32-32v-72c0-13.25-10.75-24-24-24h-48c-13.25 0-24 10.75-24 24v8H142.25l109.09-128-109.09-128H288v8c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24V64c0-17.67-14.33-32-32-32z\"]\n};\nvar faSign = {\n prefix: 'fas',\n iconName: 'sign',\n icon: [512, 512, [], \"f4d9\", \"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\"]\n};\nvar faSignIn = {\n prefix: 'fas',\n iconName: 'sign-in',\n icon: [512, 512, [], \"f090\", \"M137.2 110.3l21.9-21.9c9.3-9.3 24.5-9.4 33.9-.1L344.9 239c9.5 9.4 9.5 24.7 0 34.1L193 423.7c-9.4 9.3-24.5 9.3-33.9-.1l-21.9-21.9c-9.7-9.7-9.3-25.4.8-34.7l77.6-71.1H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h191.5l-77.6-71.1c-10-9.1-10.4-24.9-.7-34.5zM512 352V160c0-53-43-96-96-96h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84c17.7 0 32 14.3 32 32v192c0 17.7-14.3 32-32 32h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84c53 0 96-43 96-96z\"]\n};\nvar faSignInAlt = {\n prefix: 'fas',\n iconName: 'sign-in-alt',\n icon: [512, 512, [], \"f2f6\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faSignLanguage = {\n prefix: 'fas',\n iconName: 'sign-language',\n icon: [448, 512, [], \"f2a7\", \"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\"]\n};\nvar faSignOut = {\n prefix: 'fas',\n iconName: 'sign-out',\n icon: [512, 512, [], \"f08b\", \"M180 448H96c-53 0-96-43-96-96V160c0-53 43-96 96-96h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H96c-17.7 0-32 14.3-32 32v192c0 17.7 14.3 32 32 32h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm117.9-303.1l77.6 71.1H184c-13.3 0-24 10.7-24 24v32c0 13.3 10.7 24 24 24h191.5l-77.6 71.1c-10.1 9.2-10.4 25-.8 34.7l21.9 21.9c9.3 9.3 24.5 9.4 33.9.1l152-150.8c9.5-9.4 9.5-24.7 0-34.1L353 88.3c-9.4-9.3-24.5-9.3-33.9.1l-21.9 21.9c-9.7 9.6-9.3 25.4.7 34.6z\"]\n};\nvar faSignOutAlt = {\n prefix: 'fas',\n iconName: 'sign-out-alt',\n icon: [512, 512, [], \"f2f5\", \"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [], \"f012\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignal1 = {\n prefix: 'fas',\n iconName: 'signal-1',\n icon: [640, 512, [], \"f68c\", \"M88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignal2 = {\n prefix: 'fas',\n iconName: 'signal-2',\n icon: [640, 512, [], \"f68d\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignal3 = {\n prefix: 'fas',\n iconName: 'signal-3',\n icon: [640, 512, [], \"f68e\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignal4 = {\n prefix: 'fas',\n iconName: 'signal-4',\n icon: [640, 512, [], \"f68f\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignalAlt = {\n prefix: 'fas',\n iconName: 'signal-alt',\n icon: [640, 512, [], \"f690\", \"M96 384H64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160-128h-32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V288c0-17.67-14.33-32-32-32zm160-128h-32c-17.67 0-32 14.33-32 32v320c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM576 0h-32c-17.67 0-32 14.33-32 32v448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faSignalAlt1 = {\n prefix: 'fas',\n iconName: 'signal-alt-1',\n icon: [640, 512, [], \"f691\", \"M96 384H64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faSignalAlt2 = {\n prefix: 'fas',\n iconName: 'signal-alt-2',\n icon: [640, 512, [], \"f692\", \"M96 384H64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160-128h-32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V288c0-17.67-14.33-32-32-32z\"]\n};\nvar faSignalAlt3 = {\n prefix: 'fas',\n iconName: 'signal-alt-3',\n icon: [640, 512, [], \"f693\", \"M96 384H64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160-128h-32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V288c0-17.67-14.33-32-32-32zm160-128h-32c-17.67 0-32 14.33-32 32v320c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faSignalAltSlash = {\n prefix: 'fas',\n iconName: 'signal-alt-slash',\n icon: [640, 512, [], \"f694\", \"M633.82 458.1L608 438.14V32c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v331.95l-64-49.46V160c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v80.29L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM96 384H64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm96-96v192c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V352.6l-94.33-72.9c-.74 2.71-1.67 5.36-1.67 8.3zm160 192c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-3.73l-96-74.2V480z\"]\n};\nvar faSignalSlash = {\n prefix: 'fas',\n iconName: 'signal-slash',\n icon: [640, 512, [], \"f695\", \"M633.82 458.1L616 444.33V16c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v366.5l-48-37.1V112c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v171.57l-48-37.1V208c0-8.84-7.16-16-16-16h-48c-1.82 0-3.5.48-5.13 1.04L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c1.22.95 2.04 2.18 2.9 3.37H600c.73 0 1.35-.32 2.06-.42 5.51.8 11.27-1.05 14.93-5.77l19.64-25.27c5.43-6.96 4.17-17.01-2.81-22.44zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm80-96c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V309.32L204.41 288H168zm112 208c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-87.75l-80-61.83V496zm128 0c0 8.84 7.16 16 16 16h48c5.49 0 10.1-2.94 12.98-7.15L408 445.35V496z\"]\n};\nvar faSignalStream = {\n prefix: 'fas',\n iconName: 'signal-stream',\n icon: [576, 512, [], \"f8dd\", \"M288 200a56 56 0 1 0 56 56 56 56 0 0 0-56-56zM64 256a214.3 214.3 0 0 1 55.42-144.06c5.59-6.22 4.91-15.74-1.08-21.59L96 68.53a16.41 16.41 0 0 0-23.56 1C25.59 121 0 186.56 0 256s25.59 135 72.44 186.52a16.41 16.41 0 0 0 23.56 1l22.34-21.82c6-5.85 6.67-15.37 1.08-21.59A214.3 214.3 0 0 1 64 256zm134.27-87.63l-22.76-22.23a16.44 16.44 0 0 0-24 1.31 168.77 168.77 0 0 0 0 217.1 16.44 16.44 0 0 0 24 1.31l22.76-22.22a15.12 15.12 0 0 0 1.45-20.32 107.39 107.39 0 0 1 0-134.64 15.11 15.11 0 0 0-1.45-20.31zm305.29-98.89a16.41 16.41 0 0 0-23.56-1l-22.34 21.87c-6 5.85-6.67 15.37-1.08 21.59a214.95 214.95 0 0 1 0 288.12c-5.59 6.22-4.91 15.74 1.08 21.59L480 443.47a16.41 16.41 0 0 0 23.56-1C550.41 391 576 325.44 576 256s-25.59-135-72.44-186.52zm-79.1 78a16.44 16.44 0 0 0-24-1.31L377.7 168.4a15.11 15.11 0 0 0-1.45 20.31 107.39 107.39 0 0 1 0 134.64 15.12 15.12 0 0 0 1.45 20.32l22.76 22.22a16.44 16.44 0 0 0 24-1.31 168.77 168.77 0 0 0 0-217.1z\"]\n};\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z\"]\n};\nvar faSink = {\n prefix: 'fas',\n iconName: 'sink',\n icon: [512, 512, [], \"e06d\", \"M32,416a96,96,0,0,0,96,96H384a96,96,0,0,0,96-96V384H32ZM496,288H400V256h64a16,16,0,0,0,16-16V224a16,16,0,0,0-16-16H384a32,32,0,0,0-32,32v48H288V96a32,32,0,0,1,64,0v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V96A96.16,96.16,0,0,0,300.87,1.86C255.29,10.71,224,53.36,224,99.79V288H160V240a32,32,0,0,0-32-32H48a16,16,0,0,0-16,16v16a16,16,0,0,0,16,16h64v32H16A16,16,0,0,0,0,304v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V304A16,16,0,0,0,496,288Z\"]\n};\nvar faSiren = {\n prefix: 'fas',\n iconName: 'siren',\n icon: [448, 512, [], \"e02d\", \"M128.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L135.82,320H400L375,120.06A64,64,0,0,0,311.5,64h-175A64,64,0,0,0,73,120.06L48,320h55.54ZM432,352H16A16,16,0,0,0,0,368v64a16,16,0,0,0,16,16H432a16,16,0,0,0,16-16V368A16,16,0,0,0,432,352Z\"]\n};\nvar faSirenOn = {\n prefix: 'fas',\n iconName: 'siren-on',\n icon: [640, 512, [], \"e02e\", \"M224.21,134.94a8,8,0,0,1,9-6.87l15.86,2.13a8,8,0,0,1,6.87,9L231.82,320H496L471,120.06A64,64,0,0,0,407.5,64h-175A64,64,0,0,0,169,120.06L144,320h55.54ZM528,352H112a16,16,0,0,0-16,16v64a16,16,0,0,0,16,16H528a16,16,0,0,0,16-16V368A16,16,0,0,0,528,352ZM112,192a24,24,0,0,0-24-24H24a24,24,0,0,0,0,48H88A24,24,0,0,0,112,192Zm504-24H552a24,24,0,0,0,0,48h64a24,24,0,0,0,0-48ZM90.69,76a24,24,0,1,0,26.62-39.92l-48-32A24,24,0,1,0,42.69,44ZM536,80a23.87,23.87,0,0,0,13.29-4l48-32A24,24,0,1,0,570.69,4.06l-48,32A24,24,0,0,0,536,80Z\"]\n};\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [640, 512, [], \"f0e8\", \"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSkating = {\n prefix: 'fas',\n iconName: 'skating',\n icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSkeleton = {\n prefix: 'fas',\n iconName: 'skeleton',\n icon: [512, 512, [], \"f620\", \"M496 160H288v-32h144c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48H80c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h208v32H80c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h144v32H112c-44.18 0-80 35.82-80 80s35.82 80 80 80 80-35.82 80-80c0-5.48-.56-10.83-1.61-16h131.23a80.321 80.321 0 0 0-1.61 16c0 44.18 35.82 80 80 80s80-35.82 80-80-35.82-80-80-80H288v-32h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H288v-32h208c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM112 464c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm288-64c17.64 0 32 14.36 32 32s-14.36 32-32 32-32-14.36-32-32 14.36-32 32-32z\"]\n};\nvar faSkiJump = {\n prefix: 'fas',\n iconName: 'ski-jump',\n icon: [512, 512, [], \"f7c7\", \"M510.7 190.2c-2.2-13.1-14.8-21.9-27.7-19.7-13.1 2.2-21.9 14.6-19.7 27.7 3.3 19.3-6 38.9-22.1 48.1L174 383.8l44.9-109 121.4-110.5c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32h97.5l-58.9 76.5c-3.4 4.4.2-3.6-60.2 143.3-5.1 12.4-1.8 26.2 7.3 35L13 466.7c-11.8 6-16.4 20.5-10.3 32.3 4.3 8.3 12.7 13 21.4 13 3.7 0 7.5-.9 11-2.7l429.2-220.9c34.3-19.7 53-59.2 46.4-98.2zM400 96c26.5 0 48-21.5 48-48S426.5 0 400 0s-48 21.5-48 48 21.5 48 48 48z\"]\n};\nvar faSkiLift = {\n prefix: 'fas',\n iconName: 'ski-lift',\n icon: [512, 512, [], \"f7c8\", \"M112 128c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zM256 0h-32v184l32-8V0zm232 288c-13.2 0-24 10.8-24 24 0 13.9-8.8 26.5-21.8 31.3L320 388.5V248c0-9.9-4.5-19.2-12.3-25.2-7.8-6.1-17.9-8.3-27.5-5.8l-68.3 17-24.1-53.7c-10.9-24.2-39.3-35-63.5-24.1-24.2 10.9-35 39.3-24.1 63.5 0 0 26.9 65.9 27.8 68.1 7.9 19.1 22.7 27.6 39.8 23.3L256 289v123.2l-144.3 53.3c-12.4 4.6-18.8 18.4-14.2 30.8 3.6 9.7 12.8 15.7 22.5 15.7 2.8 0 5.6-.5 8.3-1.5l330.5-122.1c31.8-11.8 53.2-42.5 53.2-76.4 0-13.2-10.7-24-24-24zm-296.4 93.4c12.6-4.2 19.4-17.8 15.2-30.4-4.2-12.6-17.7-19.5-30.4-15.2L158 342c-19 6.4-40-2.5-48.7-20.7l-63.6-133c-5.7-11.9-20-17-32-11.3-12 5.7-17 20-11.3 32L66 342c15 31.2 46.4 50 79.5 50 12.6 0 17-.9 46.1-10.6z\"]\n};\nvar faSkiing = {\n prefix: 'fas',\n iconName: 'skiing',\n icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z\"]\n};\nvar faSkiingNordic = {\n prefix: 'fas',\n iconName: 'skiing-nordic',\n icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [], \"f54c\", \"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faSkullCow = {\n prefix: 'fas',\n iconName: 'skull-cow',\n icon: [640, 512, [], \"f8de\", \"M416,96H224a64,64,0,0,0-64,64V288a64,64,0,0,0,64,64l26.82,134.27A32,32,0,0,0,282.2,512h75.53a32,32,0,0,0,31.38-25.72L416,352a64,64,0,0,0,64-64V160A64,64,0,0,0,416,96ZM256,288a32,32,0,1,1,32-32A32,32,0,0,1,256,288Zm128,0a32,32,0,1,1,32-32A32,32,0,0,1,384,288ZM60.11,113.55C43.35,89.42,56.5,39,63,21.62a16,16,0,0,0-26.19-17C13.05,27.87,0,60.31,0,95.91,0,166.53,57.42,224,128,224V128.09H96C78.64,128.09,66.91,123.34,60.11,113.55Zm543.12-109A16,16,0,0,0,577,21.64c6.06,16.15,19.6,67.73,2.88,91.89-6.8,9.79-18.54,14.56-35.9,14.56H512V224c70.57,0,128-57.47,128-128.09C640,60.31,627,27.87,603.23,4.57Z\"]\n};\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [], \"f714\", \"M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\"]\n};\nvar faSledding = {\n prefix: 'fas',\n iconName: 'sledding',\n icon: [512, 512, [], \"f7cb\", \"M505 420.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-49.1-25.4c4.2-5.4 7.2-11.9 7.2-19.4v-96c0-17.7-14.3-32-32-32h-50.8l46.1-46.1c13.8-13.8 17.9-34.3 10.4-52.3-7.5-18-24.9-29.6-44.3-29.6H160c-17.7 0-32 14.3-32 32s14.3 32 32 32h82.8l-73.4 73.4c-3 2.9-5.3 6.5-6.9 10.4-2.1 5.1-2.4 10.5-1.8 15.9L35 226.6c-11.7-6-26.3-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.4l391.9 202.6c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.4 9.3-24.6 0-33.9zM320 374l-104.4-54H320v54zm80-246c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z\"]\n};\nvar faSlidersH = {\n prefix: 'fas',\n iconName: 'sliders-h',\n icon: [512, 512, [], \"f1de\", \"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"]\n};\nvar faSlidersHSquare = {\n prefix: 'fas',\n iconName: 'sliders-h-square',\n icon: [448, 512, [], \"f3f0\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 324c0 6.6-5.4 12-12 12h-52v24c0 13.3-10.7 24-24 24h-16c-13.3 0-24-10.7-24-24v-24H76c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h180v-24c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v24h52c6.6 0 12 5.4 12 12v40zm0-160c0 6.6-5.4 12-12 12H192v24c0 13.3-10.7 24-24 24h-16c-13.3 0-24-10.7-24-24v-24H76c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h52v-24c0-13.3 10.7-24 24-24h16c13.3 0 24 10.7 24 24v24h180c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faSlidersV = {\n prefix: 'fas',\n iconName: 'sliders-v',\n icon: [448, 512, [], \"f3f1\", \"M112 96H96V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v80H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h16v336c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V160h16c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm320 128h-16V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v208h-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h16v208c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V288h16c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM272 352h-16V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v336h-16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h16v80c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-80h16c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faSlidersVSquare = {\n prefix: 'fas',\n iconName: 'sliders-v-square',\n icon: [448, 512, [], \"f3f2\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM200 224h-24v180c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V224H88c-13.3 0-24-10.7-24-24v-16c0-13.3 10.7-24 24-24h24v-52c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h24c13.3 0 24 10.7 24 24v16c0 13.3-10.7 24-24 24zm184 104c0 13.3-10.7 24-24 24h-24v52c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-52h-24c-13.3 0-24-10.7-24-24v-16c0-13.3 10.7-24 24-24h24V108c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v180h24c13.3 0 24 10.7 24 24v16z\"]\n};\nvar faSmile = {\n prefix: 'fas',\n iconName: 'smile',\n icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"]\n};\nvar faSmileBeam = {\n prefix: 'fas',\n iconName: 'smile-beam',\n icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\"]\n};\nvar faSmilePlus = {\n prefix: 'fas',\n iconName: 'smile-plus',\n icon: [640, 512, [], \"f5b9\", \"M208 96C93.1 96 0 189.1 0 304s93.1 208 208 208 208-93.1 208-208S322.9 96 208 96zm64 133.2c14.8 0 26.8 12 26.8 26.8s-12 26.8-26.8 26.8-26.8-12-26.8-26.8 12-26.8 26.8-26.8zm-128 0c14.8 0 26.8 12 26.8 26.8s-12 26.8-26.8 26.8-26.8-12-26.8-26.8 12-26.8 26.8-26.8zm164.2 140.9C283.3 399.3 246.8 416 208 416c-38.8 0-75.3-16.7-100.2-45.9-5.8-6.7-5-16.8 1.8-22.5s16.8-5 22.5 1.8c18.8 22 46.5 34.6 75.8 34.6 29.4 0 57-12.6 75.8-34.7 5.8-6.8 15.9-7.5 22.6-1.8 6.8 5.8 7.6 15.9 1.9 22.6zM624 80h-64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16V96c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmileWink = {\n prefix: 'fas',\n iconName: 'smile-wink',\n icon: [496, 512, [], \"f4da\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z\"]\n};\nvar faSmoke = {\n prefix: 'fas',\n iconName: 'smoke',\n icon: [640, 512, [], \"f760\", \"M528 288c-18 0-34.7 4.6-49.7 12.1C454 255 406.8 224 352 224c-41 0-77.8 17.3-104 44.8-26.2-27.5-63-44.8-104-44.8C64.5 224 0 288.5 0 368s64.5 144 144 144h384c61.9 0 112-50.1 112-112s-50.1-112-112-112zM402.4 158.8C380.1 139.9 351.6 128 320 128c-51.7 0-95.9 30.8-116.1 74.8 15.6 5.7 30.6 13.4 44.1 23.4C278 204 314 192 352 192c54.9 0 106 25.9 139 69.1 12.1-3.4 24.5-5.1 37-5.1 35.5 0 67.6 13.4 92.7 34.8 12-19.5 19.3-42.2 19.3-66.8 0-70.7-57.3-128-128-128-46.8 0-87.3 25.3-109.6 62.8zM144 192c9.9 0 19.5.9 29.1 2.5C197.2 136.8 253.7 96 320 96c26.2 0 52 6.7 75.1 19.2 9.3-10.2 20.2-18.4 31.6-25.8C403.8 54.9 364.6 32 320 32c-31.6 0-60.1 11.9-82.4 30.8C215.3 25.3 174.8 0 128 0 57.3 0 0 57.3 0 128c0 38.2 17.1 72.1 43.7 95.6 28.5-19.9 63-31.6 100.3-31.6z\"]\n};\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [], \"f48d\", \"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"]\n};\nvar faSmokingBan = {\n prefix: 'fas',\n iconName: 'smoking-ban',\n icon: [512, 512, [], \"f54d\", \"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\"]\n};\nvar faSms = {\n prefix: 'fas',\n iconName: 'sms',\n icon: [512, 512, [], \"f7cd\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z\"]\n};\nvar faSnake = {\n prefix: 'fas',\n iconName: 'snake',\n icon: [640, 512, [], \"f716\", \"M617.4 180.09l-86.59-26.63c-33.39-10.27-66.71 8.26-78.25 38.54H448c-70.69 0-128 57.31-128 128v64c0 17.64-14.36 32-32 32s-32-14.36-32-32V133.7C256 66.89 207.29 7.11 140.79.63 64.49-6.82 0 53.2 0 128v191.53c0 62.18 11.18 123.86 33.02 182.09 5.19 13.84 24.77 13.84 29.96 0A518.514 518.514 0 0 0 96 319.53V128c0-17.64 14.36-32 32-32s32 14.36 32 32v250.3c0 66.81 48.71 126.59 115.21 133.08C351.51 518.82 416 458.8 416 384v-64c0-17.67 14.33-32 32-32h4.2c11.1 30.62 44.38 49.63 77.96 39.69l86.92-25.72c13.59-4.02 22.92-16.51 22.92-30.68v-60.61c0-14.05-9.17-26.46-22.6-30.59zM528 288c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm0-64c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faSnooze = {\n prefix: 'fas',\n iconName: 'snooze',\n icon: [448, 512, [], \"f880\", \"M192 224H40a24 24 0 0 0-24 24v48a24 24 0 0 0 24 24h50.44L8.08 412.66A32 32 0 0 0 0 433.92V480a32 32 0 0 0 32 32h152a24 24 0 0 0 24-24v-48a24 24 0 0 0-24-24h-50.44l82.36-92.66a32 32 0 0 0 8.08-21.26V256a32 32 0 0 0-32-32zm0-32h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-34.75l57.38-57.38A32 32 0 0 0 320 48V32a32 32 0 0 0-32-32H184a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h42.75l-57.38 57.38A32 32 0 0 0 160 144v16a32 32 0 0 0 32 32zm256 80v-16a32 32 0 0 0-32-32h-96a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h34.75l-57.38 57.38A32 32 0 0 0 288 368v16a32 32 0 0 0 32 32h104a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-42.75l57.38-57.38A32 32 0 0 0 448 272z\"]\n};\nvar faSnowBlowing = {\n prefix: 'fas',\n iconName: 'snow-blowing',\n icon: [640, 512, [], \"f761\", \"M540.2 320H361.7c-6.3 0-12.5 1.9-17.8 5.4l-44 29.3c-13.2 8.8-7 29.3 8.9 29.3h233.3c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1h-32.8c-10 0-17.7 9.3-15.7 19.1 8.9 43.8 47.7 76.9 94.1 76.9 59.2 0 106-53.8 94.1-115.1-8.7-45.6-51.4-76.9-97.8-76.9zM400 288h144c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1 4.2-12.7 16.3-21.9 30.4-21.9 19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H400c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm-99.5 21.2l-5.5-20.4 26.6 15.3c5.8 3.4 13.2 1.4 16.6-4.4l12.1-21c3.4-5.8 1.4-13.2-4.4-16.6l-26.6-15.3 20.4-5.5c6.5-1.7 10.3-8.4 8.6-14.9l-3.1-11.7c-1.7-6.5-8.4-10.3-14.9-8.6L274.7 221l-50.2-29 50.2-29 55.6 14.9c6.5 1.7 13.1-2.1 14.9-8.6l3.1-11.7c1.7-6.5-2.1-13.1-8.6-14.9l-20.4-5.5 26.6-15.3c5.8-3.4 7.8-10.8 4.4-16.6l-12.1-21c-3.4-5.8-10.8-7.8-16.6-4.4L295 95.2l5.5-20.4c1.7-6.5-2.1-13.1-8.6-14.9l-11.7-3.1c-6.5-1.7-13.1 2.1-14.9 8.6L250.4 121 200 150.1V93.2L240.2 53c4.7-4.7 4.7-12.3 0-17l-8.5-8.5c-4.7-4.7-12.3-4.7-17 0L200 42.3V12c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v30.3l-14.8-14.8c-4.7-4.7-12.3-4.7-17 0l-8.5 8.5c-4.7 4.7-4.7 12.3 0 17L152 93.2v56.9L101.6 121l-15-55.7c-1.7-6.5-8.4-10.3-14.9-8.6L60 59.9c-6.5 1.7-10.3 8.4-8.6 14.9l5.5 20.4-26.5-15.3c-5.8-3.4-13.2-1.4-16.6 4.4l-12.1 21c-3.4 5.8-1.4 13.2 4.4 16.6l26.6 15.3-20.4 5.5c-6.5 1.7-10.3 8.4-8.6 14.9l3.1 11.7c1.7 6.5 8.4 10.3 14.9 8.6L77.3 163l50.2 29-50.2 29-55.7-15c-6.5-1.7-13.1 2.1-14.9 8.6l-3.1 11.7c-1.7 6.5 2.1 13.1 8.6 14.9l20.4 5.5-26.5 15.4c-5.8 3.4-7.8 10.8-4.4 16.6l12.1 21c3.4 5.8 10.8 7.8 16.6 4.4L57 288.8l-5.5 20.4c-1.7 6.5 2.1 13.1 8.6 14.9l11.7 3.1c6.5 1.7 13.1-2.1 14.9-8.6l14.9-55.6 50.4-29.1v56.9L111.8 331c-4.7 4.7-4.7 12.3 0 17l8.5 8.5c4.7 4.7 12.3 4.7 17 0l14.8-14.8V372c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-30.3l14.8 14.8c4.7 4.7 12.3 4.7 17 0l8.5-8.5c4.7-4.7 4.7-12.3 0-17L200 290.8v-56.9l50.4 29.1 14.9 55.6c1.7 6.5 8.4 10.3 14.9 8.6l11.7-3.1c6.5-1.7 10.4-8.4 8.6-14.9z\"]\n};\nvar faSnowboarding = {\n prefix: 'fas',\n iconName: 'snowboarding',\n icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [], \"f2dc\", \"M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z\"]\n};\nvar faSnowflakes = {\n prefix: 'fas',\n iconName: 'snowflakes',\n icon: [640, 512, [], \"f7cf\", \"M608.1 256l27.9-16c3.8-2.2 5.1-7.1 2.9-10.9l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V200c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V312c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8v-28.4l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9l-27.9-16zM445.9 145.7l-15.5-26.8c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.3v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.2 6.2-6.2 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.2 6.2-6.2 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.4 1.7-16.8-5.7-21.1l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.8-36.9 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.5-4.3 10-13.8 5.7-21.2zm82-25.7c0 4.4 3.6 8 8 8h16c4.4 0 8-3.6 8-8V91.6l28 16.1c3.8 2.2 8.7.9 10.9-2.9l8-13.9c2.2-3.8.9-8.7-2.9-10.9L576 64l27.9-16c3.8-2.2 5.1-7.1 2.9-10.9l-8-13.9c-2.2-3.8-7.1-5.1-10.9-2.9l-28 16.1V8c0-4.4-3.6-8-8-8h-16c-4.4 0-8 3.6-8 8v28.4l-28-16.1c-3.8-2.2-8.7-.9-10.9 2.9l-8 13.9c-2.2 3.8-.9 8.7 2.9 10.9l27.9 16-27.9 16c-3.8 2.2-5.1 7.1-2.9 10.9l8 13.9c2.2 3.8 7.1 5.1 10.9 2.9l28-16.1V120z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [], \"f7d0\", \"M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faSnowmobile = {\n prefix: 'fas',\n iconName: 'snowmobile',\n icon: [640, 512, [], \"f7d1\", \"M636.8 446.4l-9.6-12.8c-5.3-7.1-15.3-8.5-22.4-3.2L570.7 456c-6.9 5.2-15.3 8-24 8h-.7l-46-61.3 68.9-45.9c4.5-3 7.1-8 7.1-13.3V266c0-6.1-3.4-11.6-8.8-14.3L407.9 172l-41.5-83.1c-4-7.9-13.5-11.1-21.5-7.2-7.9 4-11.1 13.6-7.2 21.5l35.6 71.2L360 192h-58.7L246 136.8c-14.5-14.5-35.2-21.2-55.5-17.9-20.2 3.3-37.8 16.2-47 34.5l-29.8 59.7c-7.6 15.3-8.9 32.6-3.5 48.9 3.4 10.2 9.4 18.9 16.9 26.1H96c-12.1 0-23.2 6.8-28.6 17.7l-32 64C24.7 391 40.2 416 64 416h386l36 48h-54c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h114.7c19 0 37.6-6.2 52.8-17.6l34.1-25.6c7.1-5.3 8.5-15.3 3.2-22.4zM288 288h-24.4l-67-33.5 25.6-51.1 33.9 33.9c12.1 12.1 28.2 18.8 45.2 18.8H312L288 288zM240 96c26.5 0 48-21.5 48-48S266.5 0 240 0s-48 21.5-48 48 21.5 48 48 48zm48 352H32c-17.7 0-32 14.3-32 32s14.3 32 32 32h256c17.7 0 32-14.3 32-32s-14.3-32-32-32z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSoap = {\n prefix: 'fas',\n iconName: 'soap',\n icon: [512, 512, [], \"e06e\", \"M416,192a95.42,95.42,0,0,1-30.94,70.21A95.8,95.8,0,0,1,352,448H160a96,96,0,0,1,0-192h88.91A95.3,95.3,0,0,1,224,192H96A96,96,0,0,0,0,288V416a96,96,0,0,0,96,96H416a96,96,0,0,0,96-96V288A96,96,0,0,0,416,192Zm-96,64a64,64,0,1,0-64-64A64,64,0,0,0,320,256ZM208,96a48,48,0,1,0-48-48A48,48,0,0,0,208,96ZM384,64a32,32,0,1,0-32-32A32,32,0,0,0,384,64ZM160,288a64,64,0,0,0,0,128H352a64,64,0,0,0,0-128Z\"]\n};\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [], \"f696\", \"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\"]\n};\nvar faSolarSystem = {\n prefix: 'fas',\n iconName: 'solar-system',\n icon: [512, 512, [], \"e02f\", \"M391.77844,120.23438c-16.64439-16.64258-42.06121-17.63868-60.76247-4.73047C307.55639,102.98633,281.92079,96,256,96A160,160,0,1,0,369.149,369.13672c51.02312-51.01758,59.65883-127.62891,27.36235-188.14453C409.421,162.291,408.42283,136.877,391.77844,120.23438ZM335.20393,335.19531a112.44148,112.44148,0,1,1-24.47337-176.39062c1.047,10.668,4.98687,21.14062,13.15964,29.3125,8.163,8.16211,18.62312,12.0957,29.27857,13.15039C377.15966,243.93945,371.48131,298.92383,335.20393,335.19531ZM256,192a64,64,0,1,0,64.007,64A64.00289,64.00289,0,0,0,256,192Zm80.90528,255.67773a208.24661,208.24661,0,0,1-227.9994-44.59961C39.328,333.50781,29.62381,226.59766,79.41829,146.38672a56.05613,56.05613,0,1,0-37.799-30.34375c-64.97,99.2832-53.88672,233.75781,33.34152,320.97656A255.17414,255.17414,0,0,0,364.422,487.65039c-2.19165-1.80273-4.5376-3.32812-6.58665-5.377A86.91321,86.91321,0,0,1,336.90528,447.67773ZM437.03922,74.98047A255.17108,255.17108,0,0,0,147.58,24.34961c2.19165,1.80273,4.53761,3.32812,6.5847,5.375a86.87534,86.87534,0,0,1,20.93,34.59766,208.24661,208.24661,0,0,1,227.9994,44.59961c69.57593,69.56835,79.28011,176.47851,29.48759,256.68945a56.05819,56.05819,0,1,0,37.799,30.3457C535.3507,296.67383,524.26746,162.19922,437.03922,74.98047Z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [], \"f0dc\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\"]\n};\nvar faSortAlphaDown = {\n prefix: 'fas',\n iconName: 'sort-alpha-down',\n icon: [448, 512, [], \"f15d\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaDownAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-down-alt',\n icon: [448, 512, [], \"f881\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlphaUp = {\n prefix: 'fas',\n iconName: 'sort-alpha-up',\n icon: [448, 512, [], \"f15e\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaUpAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-up-alt',\n icon: [448, 512, [], \"f882\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlt = {\n prefix: 'fas',\n iconName: 'sort-alt',\n icon: [384, 512, [], \"f883\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm203.29-219.31l-80-96a16 16 0 0 0-22.62 0l-80 96C186.65 142.74 193.78 160 208 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.19 0 21.36-17.24 11.29-27.31z\"]\n};\nvar faSortAmountDown = {\n prefix: 'fas',\n iconName: 'sort-amount-down',\n icon: [512, 512, [], \"f160\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-down-alt',\n icon: [512, 512, [], \"f884\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortAmountUp = {\n prefix: 'fas',\n iconName: 'sort-amount-up',\n icon: [512, 512, [], \"f161\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-up-alt',\n icon: [512, 512, [], \"f885\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z\"]\n};\nvar faSortCircle = {\n prefix: 'fas',\n iconName: 'sort-circle',\n icon: [512, 512, [], \"e030\", \"M256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM360.57,319.41l-91.5,91.18a18.41,18.41,0,0,1-26.07,0l-91.57-91.18C139.83,307.85,148,288,164.5,288h183C364,288,372.17,307.85,360.57,319.41ZM347.5,224h-183c-16.46,0-24.67-19.85-13.07-31.42L243,101.41a18.41,18.41,0,0,1,26.07,0l91.5,91.17C372.17,204.15,364,224,347.5,224Z\"]\n};\nvar faSortCircleDown = {\n prefix: 'fas',\n iconName: 'sort-circle-down',\n icon: [512, 512, [], \"e031\", \"M197.7,192H314.41L256,133.67ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM360.57,319.42,269,410.59a18.41,18.41,0,0,1-26.07,0l-91.5-91.17C139.83,307.85,148,288,164.5,288h183C364,288,372.17,307.85,360.57,319.42ZM347.5,224h-183c-16.46,0-24.67-19.85-13.07-31.42l91.5-91.17a18.41,18.41,0,0,1,26.07,0l91.57,91.17C372.17,204.15,364,224,347.5,224Z\"]\n};\nvar faSortCircleUp = {\n prefix: 'fas',\n iconName: 'sort-circle-up',\n icon: [512, 512, [], \"e032\", \"M256,378.33,314.3,320H197.59ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM151.43,192.58,243,101.41a18.41,18.41,0,0,1,26.07,0l91.5,91.17C372.17,204.15,364,224,347.5,224h-183C148,224,139.83,204.15,151.43,192.58ZM360.57,319.42l-91.5,91.17a18.41,18.41,0,0,1-26.07,0l-91.57-91.17C139.83,307.85,148,288,164.5,288h183C364,288,372.17,307.85,360.57,319.42Z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [], \"f0dd\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"]\n};\nvar faSortNumericDown = {\n prefix: 'fas',\n iconName: 'sort-numeric-down',\n icon: [448, 512, [], \"f162\", \"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortNumericDownAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-down-alt',\n icon: [448, 512, [], \"f886\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortNumericUp = {\n prefix: 'fas',\n iconName: 'sort-numeric-up',\n icon: [448, 512, [], \"f163\", \"M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortNumericUpAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-up-alt',\n icon: [448, 512, [], \"f887\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortShapesDown = {\n prefix: 'fas',\n iconName: 'sort-shapes-down',\n icon: [448, 512, [], \"f888\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm268.1-169.14L361 45.71c-11.09-18.28-38.81-18.28-49.9 0l-83.2 137.15c-11.08 18.28 2.77 41.14 24.95 41.14h166.3c22.18 0 36.03-22.86 24.95-41.14zM408 288H264a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h144a24 24 0 0 0 24-24V312a24 24 0 0 0-24-24z\"]\n};\nvar faSortShapesDownAlt = {\n prefix: 'fas',\n iconName: 'sort-shapes-down-alt',\n icon: [448, 512, [], \"f889\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm268.1 86.86L361 301.71c-11.09-18.28-38.81-18.28-49.9 0l-83.2 137.15c-11.08 18.28 2.77 41.14 24.95 41.14h166.3c22.18 0 36.03-22.86 24.95-41.14zM264 224h144a24 24 0 0 0 24-24V56a24 24 0 0 0-24-24H264a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24z\"]\n};\nvar faSortShapesUp = {\n prefix: 'fas',\n iconName: 'sort-shapes-up',\n icon: [448, 512, [], \"f88a\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31zM444.1 182.86L361 45.71c-11.09-18.28-38.81-18.28-49.9 0l-83.2 137.15c-11.08 18.28 2.77 41.14 24.95 41.14h166.3c22.18 0 36.03-22.86 24.95-41.14zM408 288H264a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h144a24 24 0 0 0 24-24V312a24 24 0 0 0-24-24z\"]\n};\nvar faSortShapesUpAlt = {\n prefix: 'fas',\n iconName: 'sort-shapes-up-alt',\n icon: [448, 512, [], \"f88b\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31zM444.1 438.86L361 301.71c-11.09-18.28-38.81-18.28-49.9 0l-83.2 137.15c-11.08 18.28 2.77 41.14 24.95 41.14h166.3c22.18 0 36.03-22.86 24.95-41.14zM264 224h144a24 24 0 0 0 24-24V56a24 24 0 0 0-24-24H264a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24z\"]\n};\nvar faSortSizeDown = {\n prefix: 'fas',\n iconName: 'sort-size-down',\n icon: [512, 512, [], \"f88c\", \"M428 320H276a20 20 0 0 0-20 20v120a20 20 0 0 0 20 20h152a20 20 0 0 0 20-20V340a20 20 0 0 0-20-20zm-252 32h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zM484 32H284a28 28 0 0 0-28 28v168a28 28 0 0 0 28 28h200a28 28 0 0 0 28-28V60a28 28 0 0 0-28-28z\"]\n};\nvar faSortSizeDownAlt = {\n prefix: 'fas',\n iconName: 'sort-size-down-alt',\n icon: [512, 512, [], \"f88d\", \"M275.9 192h152.2a20 20 0 0 0 19.9-20V52a20 20 0 0 0-19.9-20H275.9A20 20 0 0 0 256 52v120a20 20 0 0 0 19.9 20zM484 256H284a28 28 0 0 0-28 28v168a28 28 0 0 0 28 28h200a28 28 0 0 0 28-28V284a28 28 0 0 0-28-28zm-308 96h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortSizeUp = {\n prefix: 'fas',\n iconName: 'sort-size-up',\n icon: [512, 512, [], \"f88e\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM484 32H284a28 28 0 0 0-28 28v168a28 28 0 0 0 28 28h200a28 28 0 0 0 28-28V60a28 28 0 0 0-28-28zm-56 288H276a20 20 0 0 0-20 20v120a20 20 0 0 0 20 20h152a20 20 0 0 0 20-20V340a20 20 0 0 0-20-20z\"]\n};\nvar faSortSizeUpAlt = {\n prefix: 'fas',\n iconName: 'sort-size-up-alt',\n icon: [512, 512, [], \"f88f\", \"M276 192h152a20 20 0 0 0 20-20V52a20 20 0 0 0-20-20H276a20 20 0 0 0-20 20v120a20 20 0 0 0 20 20zm208 64H284a28 28 0 0 0-28 28v168a28 28 0 0 0 28 28h200a28 28 0 0 0 28-28V284a28 28 0 0 0-28-28zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [], \"f0de\", \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"]\n};\nvar faSoup = {\n prefix: 'fas',\n iconName: 'soup',\n icon: [512, 512, [], \"f823\", \"M191.11 146.5a16.23 16.23 0 0 0 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18a130.72 130.72 0 0 0-36.6-74.7 94.83 94.83 0 0 1-26.4-53.5A16.11 16.11 0 0 0 160.81 0h-16.4a16.31 16.31 0 0 0-16.3 18 145.36 145.36 0 0 0 40.6 84.4 81.22 81.22 0 0 1 22.4 44.1zm112 0a16.23 16.23 0 0 0 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18a130.72 130.72 0 0 0-36.6-74.7 94.83 94.83 0 0 1-26.4-53.5A16.11 16.11 0 0 0 272.76 0h-16.4c-9.8 0-17.5 8.5-16.3 18a145.36 145.36 0 0 0 40.6 84.4 81.22 81.22 0 0 1 22.4 44.1zM480 192H32a32 32 0 0 0-32 32c0 94.7 51.56 177.16 128 221.45V480a32 32 0 0 0 32 32h192a32 32 0 0 0 32-32v-34.55C460.44 401.16 512 318.7 512 224a32 32 0 0 0-32-32z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\"]\n};\nvar faSpaceShuttle = {\n prefix: 'fas',\n iconName: 'space-shuttle',\n icon: [640, 512, [], \"f197\", \"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\"]\n};\nvar faSpaceStationMoon = {\n prefix: 'fas',\n iconName: 'space-station-moon',\n icon: [512, 512, [], \"e033\", \"M256,8C119.0332,8,8,119.0332,8,256a250.01609,250.01609,0,0,0,1.72461,28.26562C81.19727,306.76953,165.47852,320,256,320s174.80273-13.23047,246.27539-35.73438A250.01609,250.01609,0,0,0,504,256C504,119.0332,392.9668,8,256,8ZM192,240a80,80,0,1,1,80-80A80.00021,80.00021,0,0,1,192,240ZM16.71094,320.26367C45.05859,426.01953,141.29883,504,256,504s210.94141-77.98047,239.28906-183.73633C424.71289,340.53906,343.3418,352,256,352S87.28711,340.53906,16.71094,320.26367ZM192,136a24,24,0,1,0,24,24A23.99993,23.99993,0,0,0,192,136Z\"]\n};\nvar faSpaceStationMoonAlt = {\n prefix: 'fas',\n iconName: 'space-station-moon-alt',\n icon: [512, 512, [], \"e034\", \"M192,136a24,24,0,1,0,24,24A23.99993,23.99993,0,0,0,192,136ZM384,343.13867A940.38216,940.38216,0,0,1,256,352c-87.3418,0-168.71289-11.46094-239.28906-31.73633C45.05859,426.01953,141.29883,504,256,504a247.46107,247.46107,0,0,0,192-91.0918V384H384ZM501.70508,224H448V160H368V96h48V66.67383A246.86934,246.86934,0,0,0,256,8C119.0332,8,8,119.0332,8,256a250.01609,250.01609,0,0,0,1.72461,28.26562C81.19727,306.76953,165.47852,320,256,320s174.80273-13.23047,246.27539-35.73438A250.01609,250.01609,0,0,0,504,256,249.15161,249.15161,0,0,0,501.70508,224ZM192,240a80,80,0,1,1,80-80A80.00021,80.00021,0,0,1,192,240Z\"]\n};\nvar faSpade = {\n prefix: 'fas',\n iconName: 'spade',\n icon: [512, 512, [], \"f2f4\", \"M272.5 6.6c-9.3-8.8-23.8-8.8-33.1 0C191.4 52.4 53.6 185 32 208.9c-19.3 21.3-32 49.4-32 80.6C0 360 54.9 415.7 123.5 416c36.7.1 69.7-15.7 92.5-40.9-.1 36.6-.8 52.3-52.4 75.4-14.1 6.3-22.2 21.6-18.7 36.6 3.3 14.5 16.3 24.8 31.2 24.8h159.4c15.5 0 29.2-10.8 32.1-26 2.8-14.6-4.8-29.2-18.4-35.2-51.6-23-52.8-38.1-53-75.6 23.4 25.8 57.5 41.8 95.3 40.8 67.5-1.7 120.7-56.5 120.7-124 0-32.2-12.2-61.2-32-83.1C458.4 185 320.6 52.4 272.5 6.6z\"]\n};\nvar faSparkles = {\n prefix: 'fas',\n iconName: 'sparkles',\n icon: [512, 512, [], \"f890\", \"M324.42 103.15L384 128l24.84 59.58a8 8 0 0 0 14.32 0L448 128l59.58-24.85a8 8 0 0 0 0-14.31L448 64 423.16 4.42a8 8 0 0 0-14.32 0L384 64l-59.58 24.84a8 8 0 0 0 0 14.31zm183.16 305.69L448 384l-24.84-59.58a8 8 0 0 0-14.32 0L384 384l-59.58 24.84a8 8 0 0 0 0 14.32L384 448l24.84 59.58a8 8 0 0 0 14.32 0L448 448l59.58-24.84a8 8 0 0 0 0-14.32zM384 255.64a16.06 16.06 0 0 0-8.84-14.33l-112.57-56.39-56.28-112.77c-5.44-10.87-23.19-10.87-28.62 0l-56.28 112.77L8.84 241.31a16 16 0 0 0 0 28.67l112.57 56.39 56.28 112.77a16 16 0 0 0 28.62 0l56.28-112.77L375.16 270a16.07 16.07 0 0 0 8.84-14.36z\"]\n};\nvar faSpeaker = {\n prefix: 'fas',\n iconName: 'speaker',\n icon: [384, 512, [], \"f8df\", \"M192 272a64 64 0 1 0 64 64 64 64 0 0 0-64-64zM336 0H48A48 48 0 0 0 0 48v416a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zM192 64a48 48 0 1 1-48 48 48 48 0 0 1 48-48zm0 384a112 112 0 1 1 112-112 112 112 0 0 1-112 112z\"]\n};\nvar faSpeakers = {\n prefix: 'fas',\n iconName: 'speakers',\n icon: [640, 512, [], \"f8e0\", \"M591 0H335a48 48 0 0 0-48 48v416a48 48 0 0 0 48 48h256a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zM463 64a48 48 0 1 1-48 48 48 48 0 0 1 48-48zm0 384a112 112 0 1 1 112-112 112 112 0 0 1-112 112zm0-176a64 64 0 1 0 64 64 64 64 0 0 0-64-64zM255 48a79.24 79.24 0 0 1 16.41-48H47A48 48 0 0 0-1 48v416a48 48 0 0 0 48 48h224.41A79.24 79.24 0 0 1 255 464v-49.78a112 112 0 1 1 0-156.44zm-80 112a48 48 0 1 1 48-48 48 48 0 0 1-48 48zm-64 176a64 64 0 1 0 64-64 64 64 0 0 0-64 64z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [576, 512, [], \"f717\", \"M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z\"]\n};\nvar faSpiderBlackWidow = {\n prefix: 'fas',\n iconName: 'spider-black-widow',\n icon: [576, 512, [], \"f718\", \"M382.29 26.13c-2.79-8.38 1.73-17.44 10.12-20.24L407.58.83c8.38-2.8 17.45 1.73 20.24 10.12l25.89 77.68a32.04 32.04 0 0 1-1.73 24.43l-27.15 54.3L398.9 176h-4.67l-5.22-26.12c-.71-3.58-1.8-7.58-3.21-11.79l20.29-40.58-23.8-71.38zM151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm417.7 204.21l-13.31 8.88c-7.35 4.9-17.29 2.91-22.19-4.44l-48-72h-47.06l60.83 97.33a31.988 31.988 0 0 1 4.86 16.96V496c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-73.11l-74.08-118.53c1.01 14.05 2.08 28.11 2.08 42.21C384 399.64 343.24 448 288 448s-96-48.36-96-101.43c0-14.1 1.08-28.16 2.08-42.21L120 422.89V496c0 8.84-7.16 16-16 16H88c-8.84 0-16-7.16-16-16v-77.71c0-6 1.69-11.88 4.86-16.96L137.69 304H90.63l-48 72c-4.9 7.35-14.84 9.34-22.19 4.44l-13.31-8.88c-7.35-4.9-9.34-14.84-4.44-22.19l52.75-79.12A32.007 32.007 0 0 1 82.07 256H160l-68.99-24.36a32.03 32.03 0 0 1-16.51-12.61l-53.6-80.41c-4.9-7.35-2.91-17.29 4.44-22.19l13.31-8.88c7.35-4.9 17.29-2.91 22.19 4.44l50.56 75.83L171.9 208H208l10.37-51.85C220.56 145.18 235.74 96 288 96c52.26 0 67.44 49.18 69.63 60.15L368 208h36.1l60.49-20.17L515.16 112c4.9-7.35 14.83-9.34 22.19-4.44l13.31 8.88c7.35 4.9 9.34 14.83 4.44 22.19l-53.6 80.41a32.03 32.03 0 0 1-16.51 12.61L416 256h77.94c10.7 0 20.69 5.35 26.62 14.25l52.75 79.12c4.9 7.36 2.92 17.29-4.44 22.19zM300 320l26.4-35.2c3.96-5.27.19-12.8-6.4-12.8h-64c-6.59 0-10.36 7.53-6.4 12.8L276 320l-26.4 35.2c-3.96 5.27-.19 12.8 6.4 12.8h64c6.59 0 10.36-7.53 6.4-12.8L300 320z\"]\n};\nvar faSpiderWeb = {\n prefix: 'fas',\n iconName: 'spider-web',\n icon: [576, 512, [], \"f719\", \"M567.16 233.86c-56.54-59.32-97.92-131.64-120.56-210.71l-.02-.06c-4.72-16.48-21.5-26.26-38-22.14l-.07.02a497.663 497.663 0 0 1-241.03 0l-.07-.02c-16.5-4.12-33.28 5.66-38 22.14l-.02.06C106.76 102.22 65.38 174.54 8.84 233.86c-11.79 12.37-11.79 31.92 0 44.29 56.54 59.32 97.92 131.64 120.56 210.71l.02.06c4.72 16.48 21.5 26.26 38 22.14l.07-.02a497.663 497.663 0 0 1 241.03 0l.07.02c16.5 4.12 33.28-5.66 38-22.14l.03-.12c22.63-79.04 63.99-151.32 120.5-210.62l.04-.04c11.79-12.36 11.79-31.92 0-44.28zM365.54 73.71l-23.52 40.74a264.971 264.971 0 0 1-108.04 0l-23.52-40.74a563.283 563.283 0 0 0 155.08 0zM288 208.01l-23.43-40.58a313.24 313.24 0 0 0 46.86 0L288 208.01zM302.43 232h-.58l-.29-.5.87.5zM288 303.99l23.44 40.59c-7.8-.58-15.62-.99-23.44-.99s-15.63.41-23.44.99L288 303.99zm-65-112.58L246.43 232h-46.87c8.81-12.93 16.65-26.5 23.44-40.59zm-53.39 221.65A574.3 574.3 0 0 0 93.29 280h45.11c24.22 27.11 42.66 59.04 54.01 93.56l-22.8 39.5zM138.4 232H93.29a574.3 574.3 0 0 0 76.32-133.06l22.81 39.5A264.912 264.912 0 0 1 138.4 232zm108.03 48L223 320.59A314.825 314.825 0 0 0 199.56 280h46.87zM288 432.28c-25.95 0-51.82 2.43-77.54 6.01l23.52-40.73c35.58-7.42 72.45-7.42 108.04 0l23.52 40.73c-25.72-3.58-51.59-6.01-77.54-6.01zm65-111.69L329.57 280h46.87A314.825 314.825 0 0 0 353 320.59zM329.56 232L353 191.41A314.825 314.825 0 0 0 376.44 232h-46.88zm76.83 181.06l-22.81-39.5c11.35-34.52 29.8-66.45 54.02-93.56h45.11a574.3 574.3 0 0 0-76.32 133.06zM437.6 232a264.912 264.912 0 0 1-54.02-93.56l22.81-39.5A574.3 574.3 0 0 0 482.71 232H437.6z\"]\n};\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"]\n};\nvar faSpinnerThird = {\n prefix: 'fas',\n iconName: 'spinner-third',\n icon: [512, 512, [], \"f3f4\", \"M456.433 371.72l-27.79-16.045c-7.192-4.152-10.052-13.136-6.487-20.636 25.82-54.328 23.566-118.602-6.768-171.03-30.265-52.529-84.802-86.621-144.76-91.424C262.35 71.922 256 64.953 256 56.649V24.56c0-9.31 7.916-16.609 17.204-15.96 81.795 5.717 156.412 51.902 197.611 123.408 41.301 71.385 43.99 159.096 8.042 232.792-4.082 8.369-14.361 11.575-22.424 6.92z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\"]\n};\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faSprinkler = {\n prefix: 'fas',\n iconName: 'sprinkler',\n icon: [512, 512, [], \"e035\", \"M398.19,256H288V80a16,16,0,0,0-16-16H240a16,16,0,0,0-16,16V256H113.81a17.77,17.77,0,0,0-14.22,28.44l67.52,78.23L192,387.56V512H320V387.56l24.89-24.89,67.52-78.23A17.77,17.77,0,0,0,398.19,256ZM152,152a24,24,0,1,0-24-24A24,24,0,0,0,152,152ZM88,96A24,24,0,1,0,64,72,24,24,0,0,0,88,96Zm24,72a24,24,0,1,0-24,24A24,24,0,0,0,112,168ZM24,104a24,24,0,1,0,24,24A24,24,0,0,0,24,104ZM24,0A24,24,0,1,0,48,24,24,24,0,0,0,24,0Zm0,208a24,24,0,1,0,24,24A24,24,0,0,0,24,208Zm336-56a24,24,0,1,0-24-24A24,24,0,0,0,360,152Zm64,8a24,24,0,1,0,24,24A24,24,0,0,0,424,160Zm0-96a24,24,0,1,0,24,24A24,24,0,0,0,424,64Zm64,40a24,24,0,1,0,24,24A24,24,0,0,0,488,104Zm0,104a24,24,0,1,0,24,24A24,24,0,0,0,488,208Zm0-160a24,24,0,1,0-24-24A24,24,0,0,0,488,48Z\"]\n};\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [], \"f45c\", \"M512 512H0V0h512v512z\"]\n};\nvar faSquareRoot = {\n prefix: 'fas',\n iconName: 'square-root',\n icon: [576, 512, [], \"f697\", \"M552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faSquareRootAlt = {\n prefix: 'fas',\n iconName: 'square-root-alt',\n icon: [576, 512, [], \"f698\", \"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faSquirrel = {\n prefix: 'fas',\n iconName: 'squirrel',\n icon: [512, 512, [], \"f71a\", \"M479.85 448h-30.93c18.19-18.4 30.93-42.12 30.93-64 0-26.55-22.08-52.81-47.85-61.09V224h47.85c20.4 0 35.7-18.91 31.43-38.87C500.84 136.42 466.72 96 415.87 96V64c-48.01 0-74.22 62.73-89.4 108.29l-65.34 196.52c-1.39 4.19-5.92 6.46-10.11 5.07l-15.19-5.05c-4.19-1.39-6.46-5.92-5.07-10.12l34.53-103.85C312.5 112.89 214.16 0 127.96 0 57.29 0 0 57.31 0 128s57.29 128 127.96 128c.27 0 .52-.08.79-.08-20.93 27.67-33.56 61.96-32.74 99.54C97.94 443.88 175.85 512 264.27 512h231.58c8.83 0 15.99-7.16 15.99-16v-16c0-17.67-14.32-32-31.99-32zm-47.98-304c8.83 0 15.99 7.16 15.99 16s-7.16 16-15.99 16-16-7.16-16-16 7.17-16 16-16z\"]\n};\nvar faStaff = {\n prefix: 'fas',\n iconName: 'staff',\n icon: [512, 512, [], \"f71b\", \"M432 0h-76.23c-30.3 0-58 17.12-71.55 44.22l-16 32c-3.95 7.9-.75 17.51 7.15 21.46l57.25 28.63c7.9 3.95 17.51.75 21.47-7.16L365.67 96H416v75.8l-157.29 44.94a176.122 176.122 0 0 0-76.11 44.78L156.12 288H112c-8.84 0-16 7.16-16 16v44.12L7.03 437.1c-9.37 9.37-9.37 24.57 0 33.94l33.93 33.93c9.37 9.37 24.57 9.37 33.94 0l175.55-175.55a80.111 80.111 0 0 1 34.62-20.37l84.82-24.24 32.25 18.62c7.65 4.42 17.44 1.79 21.86-5.86l19.51-33.8 10.46-2.99c34.34-9.81 58.02-41.21 58.02-76.92V80C512 35.82 476.18 0 432 0z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\"]\n};\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [], \"f005\", \"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"]\n};\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z\"]\n};\nvar faStarChristmas = {\n prefix: 'fas',\n iconName: 'star-christmas',\n icon: [512, 512, [], \"f7d4\", \"M505.3 247.4l-192.5-48.1L264.6 6.7c-2.2-9-15-9-17.2 0l-48.1 192.6L6.7 247.4c-9 2.2-9 15 0 17.2l192.5 48.1 48.1 192.5c2.2 9 15 9 17.2 0l48.1-192.5 192.6-48.1c9-2.2 9-15 .1-17.2zm-352.4-69.5l19.9-5 5-19.9L109 97.9c-7.5-6-17.2 3.7-11.2 11.2l55.1 68.8zm206.2 156.2l-19.9 5-5 19.9 68.8 55.1c7.5 6 17.2-3.7 11.2-11.2l-55.1-68.8zm0-156.2l55.1-68.8c6-7.5-3.7-17.2-11.2-11.2l-68.8 55 5 19.9 19.9 5.1zM152.9 334.1l-55 68.8c-6 7.5 3.7 17.2 11.2 11.2l68.8-55.1-5-19.9-20-5z\"]\n};\nvar faStarExclamation = {\n prefix: 'fas',\n iconName: 'star-exclamation',\n icon: [576, 512, [], \"f2f3\", \"M259.3 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6l130.7 68.7c23.3 12.3 50.9-7.5 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8C305-5.9 271.1-6 259.3 17.8zM256.1 160h64c4.7 0 8.4 4.1 8 8.6l-8 112c-.3 4.2-3.8 7.4-8 7.4h-48c-4.2 0-7.7-3.2-8-7.4l-8-112c-.5-4.7 3.5-8.6 8-8.6zM288 392c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z\"]\n};\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [], \"f089\", \"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\"]\n};\nvar faStarHalfAlt = {\n prefix: 'fas',\n iconName: 'star-half-alt',\n icon: [536, 512, [], \"f5c0\", \"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [480, 512, [], \"f621\", \"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\"]\n};\nvar faStarShooting = {\n prefix: 'fas',\n iconName: 'star-shooting',\n icon: [512, 512, [], \"e036\", \"M308.68131,191.99637l11.31076,11.30812a15.9975,15.9975,0,0,0,22.62737,0L507.31388,38.62192a15.99872,15.99872,0,0,0,0-22.626L496.00312,4.68584a16.001,16.001,0,0,0-22.62737,0L308.68131,169.36841A16.00107,16.00107,0,0,0,308.68131,191.99637ZM239.99059,91.30917a15.9975,15.9975,0,0,0,22.62737,0l52.69238-52.68725a15.99872,15.99872,0,0,0,0-22.626L303.99958,4.68584a16.001,16.001,0,0,0-22.62737,0L228.67984,57.37309a16.00105,16.00105,0,0,0,0,22.628ZM496.00312,196.67782a16.001,16.001,0,0,0-22.62737,0l-52.69237,52.68725a16.00105,16.00105,0,0,0,0,22.628l11.31075,11.30812a15.9975,15.9975,0,0,0,22.62737,0l52.69238-52.68725a15.99872,15.99872,0,0,0,0-22.626ZM364.29366,267.28619,259.49486,251.99l-46.90712-95.19915c-8.39078-16.99929-32.6881-17.20241-41.18826,0L124.49237,251.99,19.69356,267.28619C.89634,269.98921-6.71318,293.19136,6.9902,306.48768l75.90765,73.99691L64.89752,485.074c-3.20319,18.90546,16.68781,33.108,33.29749,24.20211l93.7986-49.38856,93.79861,49.38856A22.95373,22.95373,0,0,0,319.08971,485.074l-17.891-104.58938,75.892-73.99691C390.7004,293.19136,383.09089,269.98921,364.29366,267.28619Z\"]\n};\nvar faStarfighter = {\n prefix: 'fas',\n iconName: 'starfighter',\n icon: [640, 512, [], \"e037\", \"M208,288H144a15.99985,15.99985,0,0,0-16,16v48H48V160h8a8.00008,8.00008,0,0,0,8-8V136a7.99977,7.99977,0,0,0-8-8H48V112.85547c0-7.96924-5.44531-15.356-13.311-16.63623A16.01034,16.01034,0,0,0,16,112v16H8a7.99977,7.99977,0,0,0-8,8v16a8.00008,8.00008,0,0,0,8,8h8V431.14209c0,7.97021,5.44531,15.3584,13.312,16.63867A16.01152,16.01152,0,0,0,48,432v-3.20117L176,480v16a16.00016,16.00016,0,0,0,16,16h16a16.00016,16.00016,0,0,0,16-16V304A15.99985,15.99985,0,0,0,208,288ZM632,128h-8V112.85547c0-7.96924-5.44531-15.356-13.311-16.63623A16.01034,16.01034,0,0,0,592,112v16h-8a7.99977,7.99977,0,0,0-8,8v16a8.00008,8.00008,0,0,0,8,8h8V352H512V304a15.99985,15.99985,0,0,0-16-16H432a15.99985,15.99985,0,0,0-16,16V496a16.00016,16.00016,0,0,0,16,16h16a16.00016,16.00016,0,0,0,16-16V480l128-51.20117v2.34326c0,7.97021,5.44531,15.3584,13.312,16.63867A16.01152,16.01152,0,0,0,624,432V160h8a8.00008,8.00008,0,0,0,8-8V136A7.99977,7.99977,0,0,0,632,128ZM337.875,0h-35.75a15.99837,15.99837,0,0,0-15.877,14.01562L256,256V464a16.00079,16.00079,0,0,0,16,16h96a16.00079,16.00079,0,0,0,16-16V256L353.752,14.01562A15.99837,15.99837,0,0,0,337.875,0ZM352,304a16.00079,16.00079,0,0,1-16,16H304a16.00079,16.00079,0,0,1-16-16V256a32,32,0,0,1,64,0Z\"]\n};\nvar faStarfighterAlt = {\n prefix: 'fas',\n iconName: 'starfighter-alt',\n icon: [576, 512, [], \"e038\", \"M560,32H528a15.99954,15.99954,0,0,0-16,16V216l-75.51953-18.87891C412.99414,137.96289,355.52344,96,288,96S163.00586,137.96289,139.51953,197.12109L64,216V48A15.99954,15.99954,0,0,0,48,32H16A15.99954,15.99954,0,0,0,0,48V464a16.00079,16.00079,0,0,0,16,16H48a16.00079,16.00079,0,0,0,16-16V296l75.51953,18.87891C163.00586,374.03711,220.47656,416,288,416s124.99414-41.96289,148.48047-101.12109L512,296V464a16.00079,16.00079,0,0,0,16,16h32a16.00079,16.00079,0,0,0,16-16V48A15.99954,15.99954,0,0,0,560,32ZM300,161.21094a94.90406,94.90406,0,0,1,46.584,19.23633l-22.627,22.62695A63.5822,63.5822,0,0,0,300,193.21094Zm-24,0v32a63.5822,63.5822,0,0,0-23.957,9.86328L229.416,180.44727A94.90406,94.90406,0,0,1,276,161.21094ZM212.44727,197.416,235.07422,220.043A63.5822,63.5822,0,0,0,225.21094,244h-32A94.90406,94.90406,0,0,1,212.44727,197.416ZM193.21094,268h32a63.5822,63.5822,0,0,0,9.86328,23.957l-22.62695,22.627A94.90406,94.90406,0,0,1,193.21094,268ZM276,350.78906a94.90406,94.90406,0,0,1-46.584-19.23633l22.62695-22.627A63.5822,63.5822,0,0,0,276,318.78906ZM256,256a32,32,0,1,1,32,32A31.99908,31.99908,0,0,1,256,256Zm44,94.78906v-32a63.5822,63.5822,0,0,0,23.957-9.86328l22.627,22.627A94.90406,94.90406,0,0,1,300,350.78906ZM363.55273,314.584l-22.627-22.627A63.5822,63.5822,0,0,0,350.78906,268h32A94.90406,94.90406,0,0,1,363.55273,314.584ZM350.78906,244a63.5822,63.5822,0,0,0-9.86328-23.957l22.627-22.62695A94.90406,94.90406,0,0,1,382.78906,244Z\"]\n};\nvar faStars = {\n prefix: 'fas',\n iconName: 'stars',\n icon: [512, 512, [], \"f762\", \"M259.69042,85.96457l49.64549,20.69969,20.70353,49.643a6.65746,6.65746,0,0,0,11.926,0L362.667,106.66426l49.64549-20.69969a6.66574,6.66574,0,0,0,0-11.92493L362.667,53.338,341.96545,3.697a6.65746,6.65746,0,0,0-11.926,0L309.33591,53.338,259.69042,74.03964a6.66574,6.66574,0,0,0,0,11.92493ZM364.294,267.29343,259.4951,251.99764l-46.90716-95.19633c-8.39078-16.99879-32.68813-17.2019-41.18829,0l-46.90716,95.19633L19.69358,267.29343C.89634,269.99636-6.71318,293.19783,6.99021,306.49376l75.90772,73.99472L64.89758,485.07476c-3.20319,18.9049,16.68782,33.107,33.29752,24.2014l93.7987-49.3871,93.79869,49.3871A22.95361,22.95361,0,0,0,319.09,485.07476L301.199,380.48848l75.89209-73.99472C390.70077,293.19783,383.09125,269.99636,364.294,267.29343ZM509.05268,219.2285,469.339,202.67109,452.7801,162.961a5.32691,5.32691,0,0,0-9.5412,0L426.678,202.67109l-39.7117,16.55741a5.33385,5.33385,0,0,0,0,9.54033L426.678,245.3282l16.56087,39.7081a5.32534,5.32534,0,0,0,9.5412,0L469.339,245.3282l39.71366-16.55937a5.33386,5.33386,0,0,0,0-9.54033Z\"]\n};\nvar faStarship = {\n prefix: 'fas',\n iconName: 'starship',\n icon: [640, 512, [], \"e039\", \"M448,224a32,32,0,1,0,32,32A32.03667,32.03667,0,0,0,448,224ZM240,128a31.99908,31.99908,0,0,0-32-32H24A23.99993,23.99993,0,0,0,0,120v16a24.00118,24.00118,0,0,0,24,24H86.23828l55.32227,56.94922-10.79493.98047a38.22631,38.22631,0,0,0,0,76.13867l10.79688.98242L64,352H24A23.99993,23.99993,0,0,0,0,376v16a24.00118,24.00118,0,0,0,24,24H208a32,32,0,0,0,0-64H137.76172L208.25,301.11328l20.7793,1.88867a222.14594,222.14594,0,0,1,0-94.0039l-20.78125,1.88867L160,160h48A32.00033,32.00033,0,0,0,240,128ZM448,64c-106.03906,0-192,85.96094-192,192s85.96094,192,192,192,192-85.96094,192-192S554.03906,64,448,64Zm0,256a64,64,0,1,1,64-64A64.07333,64.07333,0,0,1,448,320Z\"]\n};\nvar faStarshipFreighter = {\n prefix: 'fas',\n iconName: 'starship-freighter',\n icon: [576, 512, [], \"e03a\", \"M224.00871,208.00014a48,48,0,1,0,47.99881,48A47.99927,47.99927,0,0,0,224.00871,208.00014ZM560.0004,223.65443a16.00059,16.00059,0,0,0,15.9996-16v-52.455a16.0008,16.0008,0,0,0-10.52318-15.0332l-254.15-92.60347C255.57629,27.50609,193.613,25.59008,139.21979,49.15061-4.095,111.22285.01425,256.00012.01425,256.00012s-4.35536,144.66594,139.20554,206.8495c54.39319,23.55858,116.3565,21.64452,172.10707,1.58593l16.32772-5.94921,3.19524,3.90429A48.04351,48.04351,0,0,0,368.00515,480h63.99841a47.91689,47.91689,0,0,0,40.167-74.16988L565.47682,371.834A16.0008,16.0008,0,0,0,576,356.80084v-52.455a16.00059,16.00059,0,0,0-15.9996-16H416.004V223.65443ZM80.01227,272.00011a16,16,0,1,1,15.99961-16A16.00059,16.00059,0,0,1,80.01227,272.00011Zm31.99921,96a16,16,0,1,1,15.99961-16A16.00059,16.00059,0,0,1,112.01148,368.00006Zm0-191.9999a16,16,0,1,1,15.99961-16A16.00059,16.00059,0,0,1,112.01148,176.00016ZM224.00871,336.00007a80,80,0,1,1,79.998-80A80.09064,80.09064,0,0,1,224.00871,336.00007Z\"]\n};\nvar faSteak = {\n prefix: 'fas',\n iconName: 'steak',\n icon: [576, 512, [], \"f824\", \"M368.85 96c-27.31 0-51.89 23.7-62.62 60.36-6.24 21.36-26.75 106.21-173.16 170-138.8 60.35 163.93 169.45 321.26-9.82 38.21-43.53 32.8-126-11.57-176.59C417.86 111.58 391.61 96 368.85 96zM384 255.9a32 32 0 1 1 32-32 32 32 0 0 1-32 32zM514.92 76.65C467.92 23.11 416.28 0 368.85 0 298.27 0 237 51.17 214.1 129.38 165 269.31 1.37 212.32 0 351.63c-1.19 121.61 139.27 164.61 256 160 87.78-3.4 187.32-37.09 270.49-131.84C596.78 299.75 591.6 164 514.92 76.65zm-36.53 261c-76.15 86.75-164.32 107.76-224.82 110.1-37.65 1.38-131.52-6.52-171.24-46.62-2.49-2.51-59.44-61.76 38-104.17 71.64-31.19 132.3-71.24 155.23-149.6C290.34 96.7 327 64 368.85 64c32.58 0 66.45 19 98 54.88 55.15 62.84 60.45 163.03 11.54 218.76z\"]\n};\nvar faSteeringWheel = {\n prefix: 'fas',\n iconName: 'steering-wheel',\n icon: [496, 512, [], \"f622\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 64c90.53 0 165.82 65.77 181.03 152h-93.9c-11.09-19.05-31.49-32-55.12-32h-64c-23.63 0-44.04 12.95-55.12 32h-93.9C82.18 137.77 157.47 72 248 72zM66.97 288H168l48 64v85.03C140.19 423.65 80.35 363.81 66.97 288zM280 437.03V352l48-64h101.03C415.65 363.81 355.81 423.65 280 437.03z\"]\n};\nvar faStepBackward = {\n prefix: 'fas',\n iconName: 'step-backward',\n icon: [448, 512, [], \"f048\", \"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\"]\n};\nvar faStepForward = {\n prefix: 'fas',\n iconName: 'step-forward',\n icon: [448, 512, [], \"f051\", \"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\"]\n};\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [512, 512, [], \"f0f1\", \"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faStickyNote = {\n prefix: 'fas',\n iconName: 'sticky-note',\n icon: [448, 512, [], \"f249\", \"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\"]\n};\nvar faStocking = {\n prefix: 'fas',\n iconName: 'stocking',\n icon: [384, 512, [], \"f7d5\", \"M368 0H80c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h288c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM96 251.5l-39 26C-1.8 316.7-17.7 396.2 21.5 455c24.7 37 65.2 57 106.6 57 24.4 0 49.1-7 70.9-21.5l81.7-54.5c44.6-29.7 71.2-79.5 71.2-133.1V128H96v123.5z\"]\n};\nvar faStomach = {\n prefix: 'fas',\n iconName: 'stomach',\n icon: [512, 512, [], \"f623\", \"M384 96c-54.29 0-90.86 32.57-109.17 64H256c-35.34 0-64-28.65-64-64V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v80c0 70.69 57.3 128 128 128h.49c-.07 1.85-.49 3.63-.49 5.5V288c0 35.35-28.66 64-64 64h-64C57.3 352 0 409.31 0 480v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-37.63 33.96-51.21 53.92-51.21 17.11 0 29.59 6.71 41.07 18.2C226.21 514.21 297.63 512 308.36 512c112.48 0 203.65-91.17 203.65-203.65V224C512 153.31 454.7 96 384 96zm64 212.35c0 9.23-1.01 18.21-2.73 26.95-21.56 6.08-45.01.97-61.27-15.3-17.37-17.37-42.91-22.14-65.6-13.93.84-5.93 1.6-11.9 1.6-18.07v-58.5c0-36.15 26.38-69.5 64-69.5 35.29 0 64 28.71 64 64v84.35z\"]\n};\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [448, 512, [], \"f04d\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faStopCircle = {\n prefix: 'fas',\n iconName: 'stop-circle',\n icon: [512, 512, [], \"f28d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [], \"f2f2\", \"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faStopwatch20 = {\n prefix: 'fas',\n iconName: 'stopwatch-20',\n icon: [448, 512, [], \"e06f\", \"M398.5,190.91l.59-.61,26.59-26.58a16,16,0,0,0,0-22.63L403,118.41a16,16,0,0,0-22.63,0l-24.68,24.68A206.68,206.68,0,0,0,256,98.5V64h32a16,16,0,0,0,16-16V16A16,16,0,0,0,288,0H160a16.05,16.05,0,0,0-16,16V48a16.05,16.05,0,0,0,16,16h32V98.5A207.92,207.92,0,0,0,16.09,297.57C12.64,411.5,106.76,510.22,220.72,512,337.13,513.77,432,420,432,304A206,206,0,0,0,398.5,190.91ZM204.37,377.55a8.2,8.2,0,0,1,8.32,8.07v22.31a8.2,8.2,0,0,1-8.32,8.07H121.52a16.46,16.46,0,0,1-16.61-17.62c2.78-35.22,14.67-57.41,38.45-91.37,20.42-29.19,27.1-37.32,27.1-62.34,0-16.92-1.79-24.27-12.21-24.27-9.39,0-12.69,7.4-12.69,22.68v5.23a8.2,8.2,0,0,1-8.33,8.07h-24.9a8.2,8.2,0,0,1-8.33-8.07v-4.07c0-27.3,8.48-60.24,56.43-60.24,43,0,55.57,25.85,55.57,61,0,35.58-12.44,51.21-34.35,81.31-11.56,15-24.61,35.57-26.41,51.2ZM344,352.32c0,35.16-12.3,63.68-57.23,63.68C243.19,416,232,386.48,232,352.55V247.22c0-40.73,19.58-63.22,56.2-63.22C325,184,344,206.64,344,245.3ZM287.87,221.73c-9.41,0-13.23,7.5-13.23,20V357.68c0,13.11,3.59,20.59,13.23,20.59s13-8,13-21.27V241.06C300.89,229.79,297.88,221.73,287.87,221.73Z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\"]\n};\nvar faStoreAlt = {\n prefix: 'fas',\n iconName: 'store-alt',\n icon: [640, 512, [], \"f54f\", \"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\"]\n};\nvar faStoreAltSlash = {\n prefix: 'fas',\n iconName: 'store-alt-slash',\n icon: [640, 512, [], \"e070\", \"M17.89,123.62,5.51,142.2c-14.2,21.3,1,49.8,26.59,49.8h74.26ZM576,413.42V224H512V364L384,265V224H330.92l-41.4-32H608c25.5,0,40.7-28.5,26.59-49.8l-85.29-128A32.18,32.18,0,0,0,522.6,0H117.42A31.87,31.87,0,0,0,90.81,14.2l-10.66,16L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.81l19.64-25.26a16,16,0,0,0-2.81-22.45ZM320,384H128V224H64V480a32,32,0,0,0,32,32H352a32,32,0,0,0,32-32V406.59l-64-49.47Z\"]\n};\nvar faStoreSlash = {\n prefix: 'fas',\n iconName: 'store-slash',\n icon: [640, 512, [], \"e071\", \"M121.51,384V284.2a119.43,119.43,0,0,1-28,3.8,123.46,123.46,0,0,1-17.1-1.2,114.88,114.88,0,0,1-15.58-3.6V480c0,17.7,13.59,32,30.4,32H505.75L348.42,384Zm-28-128.09c25.1,0,47.29-10.72,64-27.24L24,120.05c-30.52,53.39-2.45,126.53,56.49,135A95.68,95.68,0,0,0,93.48,255.91ZM602.13,458.09,547.2,413.41V283.2a93.5,93.5,0,0,1-15.57,3.6,127.31,127.31,0,0,1-17.29,1.2,114.89,114.89,0,0,1-28-3.8v79.68L348.52,251.77a88.06,88.06,0,0,0,25.41,4.14c28.11,0,53-13,70.11-33.11,17.19,20.11,42.08,33.11,70.11,33.11a94.31,94.31,0,0,0,13-.91c59.66-8.41,88-82.8,56.06-136.4L521.55,15A30.1,30.1,0,0,0,495.81,0H112A30.11,30.11,0,0,0,86.27,15L76.88,30.78,43.19,3.38A14.68,14.68,0,0,0,21.86,6.19L3.2,31.45A16.58,16.58,0,0,0,5.87,53.91L564.81,508.63a14.69,14.69,0,0,0,21.33-2.82l18.66-25.26A16.58,16.58,0,0,0,602.13,458.09Z\"]\n};\nvar faStream = {\n prefix: 'fas',\n iconName: 'stream',\n icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\"]\n};\nvar faStretcher = {\n prefix: 'fas',\n iconName: 'stretcher',\n icon: [640, 512, [], \"f825\", \"M608 128H192L79.84 10.74a32 32 0 0 0-45.18-2.66L10.74 29.35a32 32 0 0 0-2.66 45.17l121.7 128A64 64 0 0 0 177.62 224H608a32 32 0 0 0 32-32v-32a32 32 0 0 0-32-32zm-92.22 266.93a62.23 62.23 0 0 0-56.18-7.3l-43-37.63L524 256h-97.2L368 307.48 309.17 256H212l107.4 94-43 37.63a62.23 62.23 0 0 0-56.18 7.3 64.35 64.35 0 0 0-17.29 17.29 64.07 64.07 0 1 0 115.82 23.4l49.25-43.1 49.25 43.1a64 64 0 1 0 98.53-40.69zM256 464a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm224 0a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\"]\n};\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n prefix: 'fas',\n iconName: 'subway',\n icon: [448, 512, [], \"f239\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [], \"f0f2\", \"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\"]\n};\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\"]\n};\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [], \"f185\", \"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z\"]\n};\nvar faSunCloud = {\n prefix: 'fas',\n iconName: 'sun-cloud',\n icon: [640, 512, [], \"f763\", \"M576 224c-12 0-23.1 3.5-32.7 9.2-3.5-41-37.4-73.2-79.3-73.2-38.8 0-71.1 27.6-78.4 64.2-.5 0-1-.2-1.6-.2-35.3 0-64 28.7-64 64s28.7 64 64 64h192c35.3 0 64-28.7 64-64s-28.7-64-64-64zM429.4 384H384c-22.2 0-42.4-7.9-58.6-20.5-49.6 32-116.5 26.4-159.9-16.9-49.9-49.9-49.9-131.1 0-181s131.1-49.9 181 0c7.2 7.2 13 15.1 18.1 23.4 13.2-25.5 35.6-45 62.6-54.5l13.9-41.7c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.3-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9L429.4 384zm-92.5-179.3C319.8 177.9 290 160 256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96c17.2 0 33.1-4.9 47.1-12.8-9.4-14.8-15.1-32.3-15.1-51.2 0-35.8 19.8-66.8 48.9-83.3z\"]\n};\nvar faSunDust = {\n prefix: 'fas',\n iconName: 'sun-dust',\n icon: [512, 512, [], \"f764\", \"M256 160c-52.9 0-96 43.1-96 96 0 26.5 10.8 50.5 28.1 67.8l135.7-135.7C306.5 170.8 282.5 160 256 160zm163.3-89.2l-100.4 33.5-47.4-94.7c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-2.3 6.8-.2 13.4 4.2 17.7l90.5-90.5c-49.9-49.9-49.9-131.1 0-181s131.1-49.9 181 0L437 75c-4.3-4.4-10.9-6.5-17.7-4.2zM160 448c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm320-256c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32zm-96 96c0-17.7-14.3-32-32-32s-32 14.3-32 32 14.3 32 32 32 32-14.3 32-32zm-144 64c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm160 0c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm80 96c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zm0-192c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32zM320 448c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faSunHaze = {\n prefix: 'fas',\n iconName: 'sun-haze',\n icon: [640, 512, [], \"f765\", \"M193.6 240c3.4-27.2 15-53.6 35.9-74.5 49.9-49.9 131.1-49.9 181 0 20.9 20.9 32.5 47.3 35.9 74.5h119l-93.7-46.9 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.7c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7-100.5-33.5c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4L74.6 240h119zM320 160c-47.5 0-86.7 34.7-94.4 80h188.8c-7.7-45.3-46.9-80-94.4-80zM80 336h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16zm544-48H496c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM208 464H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H288c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-48-56v-16c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16z\"]\n};\nvar faSunglasses = {\n prefix: 'fas',\n iconName: 'sunglasses',\n icon: [576, 512, [], \"f892\", \"M574.09 280.38L528.75 98.66a87.94 87.94 0 0 0-113.19-62.14l-15.25 5.08a16 16 0 0 0-10.12 20.25L395.25 77a16 16 0 0 0 20.22 10.13l13.19-4.39c10.87-3.63 23-3.57 33.15 1.73a39.59 39.59 0 0 1 20.38 25.81l38.47 153.83a276.7 276.7 0 0 0-81.22-12.47c-34.75 0-74 7-114.85 26.75h-73.18c-40.85-19.75-80.07-26.75-114.85-26.75a276.75 276.75 0 0 0-81.22 12.45l38.47-153.8a39.61 39.61 0 0 1 20.38-25.82c10.15-5.29 22.28-5.34 33.15-1.73l13.16 4.39A16 16 0 0 0 180.75 77l5.06-15.19a16 16 0 0 0-10.12-20.21l-15.25-5.08A87.95 87.95 0 0 0 47.25 98.65L1.91 280.38A75.35 75.35 0 0 0 0 295.86v70.25C0 429 51.59 480 115.19 480h37.12c60.28 0 110.38-45.94 114.88-105.37l2.93-38.63h35.76l2.93 38.63c4.5 59.43 54.6 105.37 114.88 105.37h37.12C524.41 480 576 429 576 366.13v-70.25a62.67 62.67 0 0 0-1.91-15.5zm-509.9 87.53c0-.61-.19-1.18-.19-1.8v-37.55a217.35 217.35 0 0 1 72.59-12.9c9.14 0 18.14 1.21 27.14 2.48zm308.13-2.07l-2.82-37.28a196.55 196.55 0 0 1 69.94-12.9 202.07 202.07 0 0 1 28.72 2.26z\"]\n};\nvar faSunrise = {\n prefix: 'fas',\n iconName: 'sunrise',\n icon: [576, 512, [], \"f766\", \"M250.9 374.5c-20.6 8.5-36.3 23.5-46.6 41.5h167.2c-23.8-41.6-75.1-60.3-120.6-41.5zM80.7 416h87.6c.2-.5.2-1 .4-1.4 27.3-65.8 102.9-97.2 168.7-69.9 33.4 13.8 57.8 40.2 70.3 71.3h87.6l28.4-32.7c9.4-10.9 2.4-27.9-12-28.9l-106.5-7.6-7.6-106.5c-1-14.4-18-21.4-28.9-12l-80.7 70-80.7-70c-10.9-9.4-27.9-2.4-28.9 12l-7.6 106.5-106.5 7.6c-14.4 1-21.4 18-12 28.9L80.7 416zM560 464H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM190.8 128H256v80c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-80h65.2c14.3 0 21.4-17.3 11.2-27.4L300 5c-6.6-6.6-17.4-6.6-24 0l-96.4 95.7c-10.2 10-3 27.3 11.2 27.3z\"]\n};\nvar faSunset = {\n prefix: 'fas',\n iconName: 'sunset',\n icon: [576, 512, [], \"f767\", \"M250.9 374.5c-20.6 8.5-36.3 23.5-46.6 41.5h167.2c-23.8-41.6-75.1-60.3-120.6-41.5zM80.7 416h87.6c.2-.5.2-1 .4-1.4 27.3-65.8 102.9-97.2 168.7-69.9 33.4 13.8 57.8 40.2 70.3 71.3h87.6l28.4-32.7c9.4-10.9 2.4-27.9-12-28.9l-106.5-7.6-7.6-106.5c-1-14.4-18-21.4-28.9-12l-80.7 70-80.7-70c-10.9-9.4-27.9-2.4-28.9 12l-7.6 106.5-106.5 7.6c-14.4 1-21.4 18-12 28.9L80.7 416zM560 464H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM276 219c6.6 6.6 17.4 6.6 24 0l96.4-95.7c10.1-10.1 3-27.4-11.3-27.4H320V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v80h-65.2c-14.3 0-21.4 17.3-11.2 27.4L276 219z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n prefix: 'fas',\n iconName: 'surprise',\n icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z\"]\n};\nvar faSwimmer = {\n prefix: 'fas',\n iconName: 'swimmer',\n icon: [640, 512, [], \"f5c4\", \"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\"]\n};\nvar faSwimmingPool = {\n prefix: 'fas',\n iconName: 'swimming-pool',\n icon: [640, 512, [], \"f5c5\", \"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\"]\n};\nvar faSword = {\n prefix: 'fas',\n iconName: 'sword',\n icon: [512, 512, [], \"f71c\", \"M110.11 227.59c-6.25-6.25-16.38-6.25-22.63 0l-18.79 18.8a16.005 16.005 0 0 0-2 20.19l53.39 80.09-53.43 53.43-29.26-14.63a13.902 13.902 0 0 0-16.04 2.6L4.07 405.36c-5.42 5.43-5.42 14.22 0 19.64L87 507.93c5.42 5.42 14.22 5.42 19.64 0l17.29-17.29a13.873 13.873 0 0 0 2.6-16.03l-14.63-29.26 53.43-53.43 80.09 53.39c6.35 4.23 14.8 3.39 20.19-2l18.8-18.79c6.25-6.25 6.25-16.38 0-22.63l-174.3-174.3zM493.73.16L400 16 171.89 244.11l96 96L496 112l15.83-93.73c1.51-10.56-7.54-19.61-18.1-18.11z\"]\n};\nvar faSwordLaser = {\n prefix: 'fas',\n iconName: 'sword-laser',\n icon: [512, 512, [], \"e03b\", \"M105.4989,327.28721l79.19794,79.19384,22.628-22.62688L128.1269,304.66032ZM9.37147,412.13472a32.00179,32.00179,0,0,0-.01935,45.23473L54.586,502.64519a32.07776,32.07776,0,0,0,45.26149.022L179.05363,423.465,88.54035,332.956Zm186.63937-175.355a8.00079,8.00079,0,0,0-11.314,0l-11.314,11.31319a8.00026,8.00026,0,0,0,0,11.31369l79.19793,79.19385a8.00081,8.00081,0,0,0,11.314,0l11.31394-11.3132a8.00015,8.00015,0,0,0,0-11.31369Zm-56.56994,56.567L218.63878,372.541l22.628-22.62688-79.19793-79.19433ZM504.97121,7.02851a24.00693,24.00693,0,0,0-33.279-.64061L225.58713,232.41406l53.98729,53.98451L505.612,40.306A24.0046,24.0046,0,0,0,504.97121,7.02851Z\"]\n};\nvar faSwordLaserAlt = {\n prefix: 'fas',\n iconName: 'sword-laser-alt',\n icon: [512, 512, [], \"e03c\", \"M54.60974,502.65158l.002.00195a32.08551,32.08551,0,0,0,45.26143.01173l84.88276-84.88155-22.63853-22.6382ZM94.22325,327.25434,9.3698,412.12416A31.99505,31.99505,0,0,0,9.36,457.35955l.00586.0039L116.85006,349.87887ZM128.16737,361.196,20.67539,468.68451l22.6229,22.64406L150.8,383.82836Zm180.866-105.13441H172.03587a15.99913,15.99913,0,0,0-11.31731,4.68861l-55.178,55.187,90.53068,90.52938L320.294,283.43531C330.45087,273.37628,323.328,256.06161,309.03335,256.06161ZM504.96954,7.02964a24.01262,24.01262,0,0,0-33.28575-.64077l-245.70461,225.667H329.50336l176.107-191.739A24.01232,24.01232,0,0,0,504.96954,7.02964Z\"]\n};\nvar faSwords = {\n prefix: 'fas',\n iconName: 'swords',\n icon: [512, 512, [], \"f71d\", \"M309.37 389.38l80-80L93.33 13.33 15.22.14C6.42-1.12-1.12 6.42.14 15.22l13.2 78.11 296.03 296.05zm197.94 72.68L448 402.75l31.64-59.03c3.33-6.22 2.2-13.88-2.79-18.87l-17.54-17.53c-6.25-6.25-16.38-6.25-22.63 0L307.31 436.69c-6.25 6.25-6.25 16.38 0 22.62l17.53 17.54a16 16 0 0 0 18.87 2.79L402.75 448l59.31 59.31c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63zm-8.64-368.73l13.2-78.11c1.26-8.8-6.29-16.34-15.08-15.08l-78.11 13.2-140.05 140.03 80 80L498.67 93.33zm-345.3 185.3L100 332l-24.69-24.69c-6.25-6.25-16.38-6.25-22.62 0l-17.54 17.53a15.998 15.998 0 0 0-2.79 18.87L64 402.75 4.69 462.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L109.25 448l59.03 31.64c6.22 3.33 13.88 2.2 18.87-2.79l17.53-17.54c6.25-6.25 6.25-16.38 0-22.62L180 412l53.37-53.37-80-80z\"]\n};\nvar faSwordsLaser = {\n prefix: 'fas',\n iconName: 'swords-laser',\n icon: [640, 512, [], \"e03d\", \"M135.03144,7.03013a24.01269,24.01269,0,0,0-.64257,33.287l225.66788,245.7026V182.49655L168.31854,6.38951A24.01275,24.01275,0,0,0,135.03144,7.03013ZM411.43563,191.70552c-10.05859-10.15623-27.373-3.0332-27.373,11.26169V339.963a16.00393,16.00393,0,0,0,4.6875,11.31834L443.93757,406.459l90.52927-90.53106Zm77.75974,192.12654L596.68361,491.324l22.64452-22.623-107.5-107.50172ZM630.666,412.12692l-84.88278-84.88263-22.63671,22.63862L630.65235,457.3905l.002-.002A32.08761,32.08761,0,0,0,630.666,412.12692Zm-175.412,5.64843L540.125,502.62868a31.99249,31.99249,0,0,0,45.23436.00977l.0039-.00586L477.879,395.1504ZM256.00015,313.1994l42.69725-46.67959-42.69725-46.48818ZM400.71689,154.98489,505.61138,40.3074a24.00207,24.00207,0,0,0-33.918-33.91984L343.65636,123.985,381.4669,158.7134a47.95342,47.95342,0,0,1,18.71483-3.78124C400.36337,154.93216,400.53525,154.98294,400.71689,154.98489ZM196.59978,224.62928l-28.76366,29.11321a32.0069,32.0069,0,0,0-45.27733,45.25186L9.33618,412.15427a32.06806,32.06806,0,0,0,.01172,45.2499l45.30857,45.23818a32.01845,32.01845,0,0,0,45.25-.00976L219.26774,384.25784a15.99284,15.99284,0,0,0,4.73242-11.3574v-137.029C224.00016,221.56678,206.65642,214.45156,196.59978,224.62928ZM168.5412,360.44734a16,16,0,1,1,16.0078-16A16.00535,16.00535,0,0,1,168.5412,360.44734Z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [], \"f69b\", \"M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z\"]\n};\nvar faSync = {\n prefix: 'fas',\n iconName: 'sync',\n icon: [512, 512, [], \"f021\", \"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\"]\n};\nvar faSyncAlt = {\n prefix: 'fas',\n iconName: 'sync-alt',\n icon: [512, 512, [], \"f2f1\", \"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [], \"f48e\", \"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\"]\n};\nvar faTableTennis = {\n prefix: 'fas',\n iconName: 'table-tennis',\n icon: [512, 512, [], \"f45d\", \"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [], \"f10a\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTabletAlt = {\n prefix: 'fas',\n iconName: 'tablet-alt',\n icon: [448, 512, [], \"f3fa\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTabletAndroid = {\n prefix: 'fas',\n iconName: 'tablet-android',\n icon: [448, 512, [], \"f3fb\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM288 452c0 6.6-5.4 12-12 12H172c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8z\"]\n};\nvar faTabletAndroidAlt = {\n prefix: 'fas',\n iconName: 'tablet-android-alt',\n icon: [448, 512, [], \"f3fc\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM288 452c0 6.6-5.4 12-12 12H172c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8zm112-80c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTabletRugged = {\n prefix: 'fas',\n iconName: 'tablet-rugged',\n icon: [448, 512, [], \"f48f\", \"M439.2 164.4c5.4-2.7 8.8-8.2 8.8-14.3V73.9c0-6.1-3.4-11.6-8.8-14.3L416 48c0-26.5-21.5-48-48-48H80C53.5 0 32 21.5 32 48L8.8 59.6C3.4 62.3 0 67.8 0 73.9v76.2c0 6.1 3.4 11.6 8.8 14.3L32 176v16L8.8 203.6c-5.4 2.7-8.8 8.2-8.8 14.3v76.2c0 6.1 3.4 11.6 8.8 14.3L32 320v16L8.8 347.6c-5.4 2.7-8.8 8.2-8.8 14.3v76.2c0 6.1 3.4 11.6 8.8 14.3L32 464c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48l23.2-11.6c5.4-2.7 8.8-8.2 8.8-14.3v-76.2c0-6.1-3.4-11.6-8.8-14.3L416 336v-16l23.2-11.6c5.4-2.7 8.8-8.2 8.8-14.3v-76.2c0-6.1-3.4-11.6-8.8-14.3L416 192v-16l23.2-11.6zM352 432c0 8.8-7.2 16-16 16H112c-8.8 0-16-7.2-16-16V80c0-8.8 7.2-16 16-16h224c8.8 0 16 7.2 16 16v352z\"]\n};\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\"]\n};\nvar faTachometer = {\n prefix: 'fas',\n iconName: 'tachometer',\n icon: [576, 512, [], \"f0e4\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm102.77 119.59l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36z\"]\n};\nvar faTachometerAlt = {\n prefix: 'fas',\n iconName: 'tachometer-alt',\n icon: [576, 512, [], \"f3fd\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTachometerAltAverage = {\n prefix: 'fas',\n iconName: 'tachometer-alt-average',\n icon: [576, 512, [], \"f624\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm199.12 192H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-26.85 16.56-49.75 40-59.25V128c0-13.25 10.75-24 24-24s24 10.75 24 24v196.75c23.44 9.5 40 32.41 40 59.25 0 11.72-3.38 22.55-8.88 32zM400 192c0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32-32-14.33-32-32zm80 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTachometerAltFast = {\n prefix: 'fas',\n iconName: 'tachometer-alt-fast',\n icon: [576, 512, [], \"f625\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm199.12 192H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-35.35 28.65-64 64-64 5.65 0 11.02.96 16.24 2.34L412.8 177.59c7.98-10.56 23-12.72 33.61-4.8 10.59 7.95 12.75 23 4.8 33.61L342.65 351.14c5.81 9.63 9.35 20.79 9.35 32.86 0 11.72-3.38 22.55-8.88 32zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTachometerAltFastest = {\n prefix: 'fas',\n iconName: 'tachometer-alt-fastest',\n icon: [576, 512, [], \"f626\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm144 128c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32zM288 96c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm339.95 151.67l-133.93 22.32c-1.51 6.37-3.69 12.48-6.9 18.01H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-35.35 28.65-64 64-64 23.06 0 43.1 12.31 54.37 30.61l133.68-22.28c13.09-2.17 25.45 6.64 27.62 19.72 2.19 13.07-6.65 25.45-19.72 27.62z\"]\n};\nvar faTachometerAltSlow = {\n prefix: 'fas',\n iconName: 'tachometer-alt-slow',\n icon: [576, 512, [], \"f627\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm247.12 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-12.07 3.54-23.23 9.35-32.86L124.8 206.41c-7.95-10.61-5.8-25.66 4.8-33.61 10.64-7.92 25.66-5.77 33.61 4.8l108.56 144.74c5.21-1.37 10.59-2.34 16.24-2.34 35.35 0 64 28.65 64 64-.01 11.72-3.39 22.55-8.89 32zM400 192c0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32-32-14.33-32-32zm80 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTachometerAltSlowest = {\n prefix: 'fas',\n iconName: 'tachometer-alt-slowest',\n icon: [576, 512, [], \"f628\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32zm-144 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32zm199.12 256H232.88c-3.21-5.52-5.39-11.63-6.9-18.01L92.05 375.67c-13.06-2.17-21.91-14.55-19.72-27.62 2.17-13.08 14.53-21.89 27.62-19.72l133.68 22.28C244.9 332.31 264.94 320 288 320c35.35 0 64 28.65 64 64 0 11.72-3.38 22.55-8.88 32zM400 192c0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32-32-14.33-32-32zm80 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTachometerAverage = {\n prefix: 'fas',\n iconName: 'tachometer-average',\n icon: [576, 512, [], \"f629\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm55.12 384H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-26.85 16.56-49.75 40-59.25V128c0-13.25 10.75-24 24-24s24 10.75 24 24v196.75c23.44 9.5 40 32.41 40 59.25 0 11.72-3.38 22.55-8.88 32z\"]\n};\nvar faTachometerFast = {\n prefix: 'fas',\n iconName: 'tachometer-fast',\n icon: [576, 512, [], \"f62a\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm163.2 174.41L342.65 351.14c5.81 9.63 9.35 20.79 9.35 32.86 0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-35.35 28.65-64 64-64 5.65 0 11.02.96 16.24 2.34L412.8 177.59c7.98-10.56 23-12.72 33.61-4.8 10.59 7.96 12.75 23.01 4.79 33.62z\"]\n};\nvar faTachometerFastest = {\n prefix: 'fas',\n iconName: 'tachometer-fastest',\n icon: [576, 512, [], \"f62b\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm195.95 343.67l-133.93 22.32c-1.51 6.37-3.69 12.48-6.9 18.01H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-35.35 28.65-64 64-64 23.06 0 43.1 12.31 54.37 30.61l133.68-22.28c13.09-2.17 25.45 6.64 27.62 19.72 2.19 13.07-6.65 25.45-19.72 27.62z\"]\n};\nvar faTachometerSlow = {\n prefix: 'fas',\n iconName: 'tachometer-slow',\n icon: [576, 512, [], \"f62c\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm55.12 384H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-12.07 3.54-23.23 9.35-32.86L124.8 206.41c-7.95-10.61-5.8-25.66 4.8-33.61 10.64-7.92 25.66-5.77 33.61 4.8l108.56 144.74c5.21-1.37 10.59-2.34 16.24-2.34 35.35 0 64 28.65 64 64-.01 11.72-3.39 22.55-8.89 32z\"]\n};\nvar faTachometerSlowest = {\n prefix: 'fas',\n iconName: 'tachometer-slowest',\n icon: [576, 512, [], \"f62d\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm55.12 384H232.88c-3.21-5.52-5.39-11.63-6.9-18.01L92.05 375.67c-13.06-2.17-21.91-14.55-19.72-27.62 2.17-13.08 14.53-21.89 27.62-19.72l133.68 22.28C244.9 332.31 264.94 320 288 320c35.35 0 64 28.65 64 64 0 11.72-3.38 22.55-8.88 32z\"]\n};\nvar faTaco = {\n prefix: 'fas',\n iconName: 'taco',\n icon: [512, 512, [], \"f826\", \"M256 192C125.82 192 18.14 299.4.32 439.08-2.43 460.66 13 480 32.56 480h446.88c19.56 0 35-19.34 32.24-40.92C493.86 299.4 386.18 192 256 192zM112 416a16 16 0 1 1 16-16 16 16 0 0 1-16 16zm64-64a16 16 0 1 1 16-16 16 16 0 0 1-16 16zM7.33 279.48a129 129 0 0 1 4.53 28.14C64 218.51 154.91 160 256 160s192 58.52 244.14 147.64a128.36 128.36 0 0 1 4.53-28.09c0-.09.05-.18.08-.26 5.14-17.32 11-36.94 4.16-55-7.15-19.06-24.76-29.36-40.31-38.46-9.49-5.54-19.32-11.29-23.71-17.53-4.74-6.69-7.33-18.51-9.83-30-3.95-18.08-8.44-38.58-23.64-50.64-15.69-12.45-36-11-54-9.81-10.79.76-22 1.5-29.18-1.1-6.93-2.51-15.12-10.14-23-17.51-29.05-27.07-50.66-44.51-98.38-.05-7.92 7.37-16.11 15-23 17.51-7.22 2.6-18.39 1.86-29.18 1.1-18-1.24-38.32-2.64-54 9.81-15.2 12.06-19.69 32.56-23.64 50.64-2.5 11.46-5.09 23.28-9.83 30-4.39 6.24-14.22 12-23.71 17.53-15.55 9.1-33.16 19.39-40.31 38.46-6.81 18.08-1 37.7 4.16 55-.07.07-.05.16-.02.24z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [512, 512, [], \"f02b\", \"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [640, 512, [], \"f02c\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\"]\n};\nvar faTally = {\n prefix: 'fas',\n iconName: 'tally',\n icon: [640, 512, [], \"f69c\", \"M639.21 169.49l-9.89-30.43c-2.73-8.4-11.75-13-20.16-10.27L544 149.88V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v122.59l-64 20.71V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v164.01l-64 20.71V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v205.43l-64 20.71V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v246.86l-84.94 27.49C2.65 325.08-1.95 334.11.79 342.51l9.89 30.43c2.73 8.4 11.76 13 20.16 10.27L96 362.13V464c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V341.41l64-20.71V464c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V299.99l64-20.71V464c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V258.57l64-20.71V464c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V217.14l84.94-27.49c8.4-2.73 13.01-11.75 10.27-20.16z\"]\n};\nvar faTanakh = {\n prefix: 'fas',\n iconName: 'tanakh',\n icon: [448, 512, [], \"f827\", \"M318 139.44h-34.9l17.48 29.19zm-34.86 105.12h34.91l-17.47-29.17zm-59.09 52.07l16.78-28.07h-33.58zM130 244.56h34.9l-17.48-29.19zm34.89-105.12H130l17.47 29.17zM352 0H25.6C9.6 0 0 9.6 0 25.6v332.8q0 14.4 9.6 19.2c3.2 12.8 3.2 57.6 0 73.6Q0 460.8 0 470.4v16c0 16 12.8 25.6 25.6 25.6H352c54.4 0 96-41.6 96-96V96c0-54.4-41.6-96-96-96zM105.41 125.59a20.11 20.11 0 0 1 17.5-10.15h56.3L206.8 69.3a20 20 0 0 1 17.25-9.82 19.66 19.66 0 0 1 17 9.68l27.7 46.28h56.36a20 20 0 0 1 17.14 30.29L314.57 192l27.79 46.43a19.6 19.6 0 0 1 .23 20 20.11 20.11 0 0 1-17.5 10.15h-56.3L241.2 314.7a20 20 0 0 1-17.2 9.82 19.66 19.66 0 0 1-17-9.68l-27.7-46.28h-56.39a20 20 0 0 1-17.14-30.29L133.43 192l-27.79-46.43a19.6 19.6 0 0 1-.23-19.98zM352 448H67.2v-64H352c16 0 32 12.8 32 32s-12.8 32-32 32zM224 87.38l-16.78 28.06h33.58zm-31.12 157.18h62.3L286.59 192l-31.47-52.58h-62.3L161.41 192z\"]\n};\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [640, 512, [], \"f4db\", \"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"]\n};\nvar faTasks = {\n prefix: 'fas',\n iconName: 'tasks',\n icon: [512, 512, [], \"f0ae\", \"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faTasksAlt = {\n prefix: 'fas',\n iconName: 'tasks-alt',\n icon: [512, 512, [], \"f828\", \"M488 351H24c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h464c13.3 0 24-10.7 24-24v-80c0-13.3-10.7-24-24-24zm-24 80H289v-32h175v32zm24-240H24c-13.3 0-24 10.7-24 24v80c0 13.3 10.7 24 24 24h464c13.3 0 24-10.7 24-24v-80c0-13.3-10.7-24-24-24zm-24 80H161v-32h303v32zm24-240H24C10.7 31 0 41.7 0 55v80c0 13.3 10.7 24 24 24h464c13.3 0 24-10.7 24-24V55c0-13.3-10.7-24-24-24zm-24 80H353V79h111v32z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [], \"f1ba\", \"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\"]\n};\nvar faTelescope = {\n prefix: 'fas',\n iconName: 'telescope',\n icon: [640, 512, [], \"e03e\", \"M380.41991,92.1336,74.29894,241.7427c-8.31835,4.06444-12.27733,13.25583-9.05663,21.02925l8.74413,21.10934L9.881,310.43593a16.00146,16.00146,0,0,0-8.66015,20.90425L21.27748,379.762a16.00055,16.00055,0,0,0,20.90429,8.66014l64.10544-26.55464,8.74219,21.10738c3.21874,7.77343,12.51757,11.47459,21.27147,8.46678l127.0019-43.623c.1875.24219.39258.46875.584.709L216.42,490.93949A16.00034,16.00034,0,0,0,231.5977,512H248.459a15.99985,15.99985,0,0,0,15.17772-10.94139l42.16209-126.49585a71.088,71.088,0,0,0,28.44726,0l42.164,126.49585A15.99986,15.99986,0,0,0,391.58787,512h16.85937a16.00062,16.00062,0,0,0,15.17968-21.06051L376.16014,348.52765a71.2877,71.2877,0,0,0,15.85742-44.52726c0-.13086-.03906-.25-.03906-.38086l66.56637-22.86519ZM320,328.00035a24,24,0,1,1,24-24A24.02622,24.02622,0,0,1,320,328.00035ZM638.77722,216.83064,553.06241,9.88181a15.99768,15.99768,0,0,0-20.90233-8.66014L414.84372,49.81923a15.99966,15.99966,0,0,0-8.65625,20.90426l85.71286,206.94883a16.00055,16.00055,0,0,0,20.90429,8.66014L630.119,237.73489A15.99729,15.99729,0,0,0,638.77722,216.83064Z\"]\n};\nvar faTemperatureDown = {\n prefix: 'fas',\n iconName: 'temperature-down',\n icon: [512, 512, [], \"e03f\", \"M160,322.91V304a16,16,0,0,0-32,0v18.91a48,48,0,1,0,32,0ZM256,112a112,112,0,0,0-224,0V278.5C12.3,303.19,0,334,0,368a144,144,0,0,0,288,0c0-34-12.3-64.91-32-89.5ZM144,448A79.87,79.87,0,0,1,96,304.19V112a48,48,0,0,1,96,0V304.19A79.87,79.87,0,0,1,144,448Zm352-96H448V48a16,16,0,0,0-16-16H400a16,16,0,0,0-16,16V352H336c-14.21,0-21.39,17.25-11.31,27.31l80,96a16,16,0,0,0,22.62,0l80-96C517.34,369.25,510.22,352,496,352Z\"]\n};\nvar faTemperatureFrigid = {\n prefix: 'fas',\n iconName: 'temperature-frigid',\n icon: [576, 512, [], \"f768\", \"M544 278.5V112C544 50.1 493.9 0 432 0S320 50.1 320 112v166.5c-19.7 24.6-32 55.5-32 89.5 0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5zM432 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zM268.3 305.4c5.1-13 11.4-25.7 19.7-37.5v-7.2L224.6 224l63.4-36.6v-56.1l-88 50.8v-56.9L240.2 85c4.7-4.7 4.7-12.3 0-17l-8.5-8.5c-4.7-4.7-12.3-4.7-17 0L200 74.3V44c0-6.6-5.4-12-12-12h-24c-6.6 0-12 5.4-12 12v30.3l-14.8-14.8c-4.7-4.7-12.3-4.7-17 0l-8.5 8.5c-4.7 4.7-4.7 12.3 0 17l40.2 40.2v56.9L101.6 153l-15-55.7c-1.7-6.5-8.4-10.3-14.9-8.6L60 91.9c-6.5 1.7-10.3 8.4-8.6 14.9l5.5 20.4-26.6-15.3c-5.8-3.4-13.2-1.4-16.6 4.4l-12.1 21c-3.4 5.8-1.4 13.2 4.4 16.6l26.6 15.3-20.4 5.5c-6.5 1.7-10.3 8.4-8.6 14.9l3.1 11.7c1.7 6.5 8.4 10.3 14.9 8.6L77.3 195l50.2 29-50.2 29-55.7-15c-6.5-1.7-13.1 2.1-14.9 8.6l-3.1 11.7c-1.7 6.5 2.1 13.1 8.6 14.9l20.4 5.5-26.5 15.4c-5.8 3.4-7.8 10.8-4.4 16.6l12.1 21c3.4 5.8 10.8 7.8 16.6 4.4L57 320.8l-5.5 20.4c-1.7 6.5 2.1 13.1 8.6 14.9l11.7 3.1c6.5 1.7 13.1-2.1 14.9-8.6l14.9-55.6 50.4-29.1v56.9L111.8 363c-4.7 4.7-4.7 12.3 0 17l8.5 8.5c4.7 4.7 12.3 4.7 17 0l14.8-14.8V404c0 6.6 5.4 12 12 12h24c6.6 0 12-5.4 12-12v-30.3l14.8 14.8c4.7 4.7 12.3 4.7 17 0l8.5-8.5c4.7-4.7 4.7-12.3 0-17L200 322.8v-56.9l68.3 39.5zM448 322.9V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureHot = {\n prefix: 'fas',\n iconName: 'temperature-hot',\n icon: [640, 512, [], \"f76a\", \"M352 267.9V112c0-16.9 3.5-33 8.9-48.1L279 91.2 237.6 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1L91.2 169 8.4 210.4c-11.2 5.6-11.2 21.5 0 27.1L91.2 279l-29.3 87.9c-4 11.9 7.3 23.1 19.2 19.2l87.9-29.3 41.4 82.8c5.6 11.2 21.6 11.2 27.1 0l41.4-82.9 41.1 13.7c0-.8-.1-1.6-.1-2.5.1-35.8 11.1-70.2 32.1-100zm-60.1 24c-37.4 37.4-98.3 37.4-135.8 0s-37.4-98.4 0-135.8c37.4-37.4 98.3-37.4 135.8 0 37.4 37.4 37.4 98.4 0 135.8zM224 160c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm384 118.5V112C608 50.1 557.9 0 496 0S384 50.1 384 112v166.5c-19.7 24.6-32 55.5-32 89.5 0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5zM496 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureUp = {\n prefix: 'fas',\n iconName: 'temperature-up',\n icon: [512, 512, [], \"e040\", \"M160,322.91V112a16,16,0,0,0-32,0V322.91a48,48,0,1,0,32,0ZM256,112a112,112,0,0,0-224,0V278.5C12.3,303.19,0,334,0,368a144,144,0,0,0,288,0c0-34-12.3-64.91-32-89.5ZM144,448A79.87,79.87,0,0,1,96,304.19V112a48,48,0,0,1,96,0V304.19A79.87,79.87,0,0,1,144,448ZM507.3,132.69l-80-96a16,16,0,0,0-22.63,0l-80,96C314.66,142.75,321.78,160,336,160h48V464a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V160h48C510.19,160,517.36,142.75,507.3,132.69Z\"]\n};\nvar faTenge = {\n prefix: 'fas',\n iconName: 'tenge',\n icon: [384, 512, [], \"f7d7\", \"M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTennisBall = {\n prefix: 'fas',\n iconName: 'tennis-ball',\n icon: [496, 512, [], \"f45e\", \"M219 79.1c-.9-27.9 5.6-52.4 18.4-71.1C113.8 13.2 5.8 110.6 0 245.3c18.7-12.9 43.1-19.6 71.1-18.4C150 228.8 221.2 150.3 219 79.1zm207.4 157.8c19.4.4 64.8-3.1 58.7-54.8-11.6-37.2-32-72.3-61.5-101.8S359 30.4 321.8 18.8c-51.7-6-55.4 39.2-54.8 58.7 1.5 47.1-21.6 101.6-58.7 138.7-37.1 37.3-91.3 60.6-138.7 58.8-19.6-.5-64.9 3.1-58.7 55 11.6 37.2 31.9 72.2 61.4 101.7s64.5 49.8 101.7 61.4c51.8 6 55.6-39.1 55-58.7-1.5-47.1 21.6-101.6 58.7-138.7 37.2-37.2 91.9-60.7 138.7-58.8zm-1.5 48.1c-71.5-2.6-150.3 70.4-147.9 147.9.9 27.9-5.6 52.4-18.5 71.1 121-5.1 231.6-100.1 237.4-237.4-18.6 12.8-43.1 19.3-71 18.4z\"]\n};\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [640, 512, [], \"f120\", \"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\"]\n};\nvar faText = {\n prefix: 'fas',\n iconName: 'text',\n icon: [448, 512, [], \"f893\", \"M432 32a16 16 0 0 1 16 16v96a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32H264v304h40a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H144a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h40V112H64v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16z\"]\n};\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"]\n};\nvar faTextSize = {\n prefix: 'fas',\n iconName: 'text-size',\n icon: [640, 512, [], \"f894\", \"M624 32H272a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h88v304h-40a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h88v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM304 224H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h56v128H96a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V288h56v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z\"]\n};\nvar faTh = {\n prefix: 'fas',\n iconName: 'th',\n icon: [512, 512, [], \"f00a\", \"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\"]\n};\nvar faThLarge = {\n prefix: 'fas',\n iconName: 'th-large',\n icon: [512, 512, [], \"f009\", \"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\"]\n};\nvar faThList = {\n prefix: 'fas',\n iconName: 'th-list',\n icon: [512, 512, [], \"f00b\", \"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\"]\n};\nvar faTheaterMasks = {\n prefix: 'fas',\n iconName: 'theater-masks',\n icon: [640, 512, [], \"f630\", \"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\"]\n};\nvar faThermometerEmpty = {\n prefix: 'fas',\n iconName: 'thermometer-empty',\n icon: [256, 512, [], \"f2cb\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerFull = {\n prefix: 'fas',\n iconName: 'thermometer-full',\n icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\"]\n};\nvar faThermometerHalf = {\n prefix: 'fas',\n iconName: 'thermometer-half',\n icon: [256, 512, [], \"f2c9\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerQuarter = {\n prefix: 'fas',\n iconName: 'thermometer-quarter',\n icon: [256, 512, [], \"f2ca\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerThreeQuarters = {\n prefix: 'fas',\n iconName: 'thermometer-three-quarters',\n icon: [256, 512, [], \"f2c8\", \"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faTheta = {\n prefix: 'fas',\n iconName: 'theta',\n icon: [384, 512, [], \"f69e\", \"M192 8C84.34 8 0 116.94 0 256s84.34 248 192 248 192-108.94 192-248S299.66 8 192 8zm0 96c41.44 0 77.35 44.41 90.43 104H101.57c13.08-59.59 48.99-104 90.43-104zm0 304c-41.44 0-77.35-44.41-90.43-104h180.86c-13.08 59.59-48.99 104-90.43 104z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [], \"f165\", \"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\"]\n};\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [], \"f164\", \"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\"]\n};\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [], \"f08d\", \"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\"]\n};\nvar faThunderstorm = {\n prefix: 'fas',\n iconName: 'thunderstorm',\n icon: [512, 512, [], \"f76c\", \"M337 288h-72.1l22.6-77.1c2.5-9.5-4.6-18.9-14.5-18.9h-82c-7.5 0-13.9 5.6-14.9 13l-16 130c-1.2 9 5.8 17 14.9 17h81l-31.6 141.5c-2.2 9.5 5 18.5 14.6 18.5 5.2 0 10.2-2.7 13-7.5l98-194c5.7-10-1.5-22.5-13-22.5zm79-160c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h32.5l15.9-119.2c3.1-23.3 23.1-40.8 46.6-40.8h85c14.7 0 28.3 6.7 37.3 18.4s11.9 26.5 8.1 40.7L310.5 260H341c16.7 0 32.3 9 40.7 23.5 6.4 11.2 7.8 24.4 4.3 36.5h30c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faThunderstormMoon = {\n prefix: 'fas',\n iconName: 'thunderstorm-moon',\n icon: [576, 512, [], \"f76d\", \"M567.9 223.8c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM276 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm74.5-110.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h16.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2 8.4 10.9 11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44.2 0 80-35.8 80-80 .1-39.2-28.1-71.7-65.4-78.5z\"]\n};\nvar faThunderstormSun = {\n prefix: 'fas',\n iconName: 'thunderstorm-sun',\n icon: [576, 512, [], \"f76e\", \"M124.1 259.9c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zM436 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm74.5-110.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h16.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2 8.4 10.9 11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44.2 0 80-35.8 80-80 .1-39.2-28.1-71.7-65.4-78.5z\"]\n};\nvar faTicket = {\n prefix: 'fas',\n iconName: 'ticket',\n icon: [576, 512, [], \"f145\", \"M576 208v-96c0-26.51-21.49-48-48-48H48C21.49 64 0 85.49 0 112v96c26.51 0 48 21.49 48 48s-21.49 48-48 48v96c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48v-96c-26.51 0-48-21.49-48-48s21.49-48 48-48z\"]\n};\nvar faTicketAlt = {\n prefix: 'fas',\n iconName: 'ticket-alt',\n icon: [576, 512, [], \"f3ff\", \"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\"]\n};\nvar faTilde = {\n prefix: 'fas',\n iconName: 'tilde',\n icon: [512, 512, [], \"f69f\", \"M339.54 381.51c-35.52-6.48-66.75-27.68-89.31-55.87l-66.52-83.15C174.33 230.73 160.3 224 145.25 224 118.09 224 96 246.09 96 273.25V321c0 17.67-14.33 32-32 32H32c-17.67 0-32-14.33-32-32v-40.92c0-78.1 58.67-147.33 136.64-151.83 47.6-2.75 92.54 17.39 122.05 54.27l69.59 87c9.39 11.75 23.42 18.48 38.47 18.48 27.16 0 49.25-22.09 49.25-49.25V192c0-17.67 14.33-32 32-32h32c17.67 0 32 14.33 32 32v46.75c0 89-80.45 159.56-172.46 142.76z\"]\n};\nvar faTimes = {\n prefix: 'fas',\n iconName: 'times',\n icon: [352, 512, [], \"f00d\", \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"]\n};\nvar faTimesCircle = {\n prefix: 'fas',\n iconName: 'times-circle',\n icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"]\n};\nvar faTimesHexagon = {\n prefix: 'fas',\n iconName: 'times-hexagon',\n icon: [576, 512, [], \"f2ee\", \"M553.5 231.8c8.7 14.9 8.7 33.4 0 48.4l-112 192c-8.6 14.7-24.4 23.8-41.5 23.8H176c-17.1 0-32.9-9.1-41.5-23.8l-112-192c-8.7-14.9-8.7-33.4 0-48.4l112-192C143.1 25.1 158.9 16 176 16h224c17.1 0 32.9 9.1 41.5 23.8l112 192zM409.6 338c4.7-4.7 4.7-12.3 0-17l-65-65 65.1-65.1c4.7-4.7 4.7-12.3 0-17L370 134.4c-4.7-4.7-12.3-4.7-17 0l-65 65-65.1-65.1c-4.7-4.7-12.3-4.7-17 0L166.4 174c-4.7 4.7-4.7 12.3 0 17l65.1 65.1-65.1 65.1c-4.7 4.7-4.7 12.3 0 17l39.6 39.6c4.7 4.7 12.3 4.7 17 0l65.1-65.1 65.1 65.1c4.7 4.7 12.3 4.7 17 0l39.4-39.8z\"]\n};\nvar faTimesOctagon = {\n prefix: 'fas',\n iconName: 'times-octagon',\n icon: [512, 512, [], \"f2f0\", \"M497.9 150.5c9 9 14.1 21.2 14.1 33.9v143.1c0 12.7-5.1 24.9-14.1 33.9L361.5 497.9c-9 9-21.2 14.1-33.9 14.1H184.5c-12.7 0-24.9-5.1-33.9-14.1L14.1 361.5c-9-9-14.1-21.2-14.1-33.9V184.5c0-12.7 5.1-24.9 14.1-33.9L150.5 14.1c9-9 21.2-14.1 33.9-14.1h143.1c12.7 0 24.9 5.1 33.9 14.1l136.5 136.4zM377.6 338c4.7-4.7 4.7-12.3 0-17l-65-65 65.1-65.1c4.7-4.7 4.7-12.3 0-17L338 134.4c-4.7-4.7-12.3-4.7-17 0l-65 65-65.1-65.1c-4.7-4.7-12.3-4.7-17 0L134.4 174c-4.7 4.7-4.7 12.3 0 17l65.1 65.1-65.1 65.1c-4.7 4.7-4.7 12.3 0 17l39.6 39.6c4.7 4.7 12.3 4.7 17 0l65.1-65.1 65.1 65.1c4.7 4.7 12.3 4.7 17 0l39.4-39.8z\"]\n};\nvar faTimesSquare = {\n prefix: 'fas',\n iconName: 'times-square',\n icon: [448, 512, [], \"f2d3\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-54.4 289.1c4.7 4.7 4.7 12.3 0 17L306 377.6c-4.7 4.7-12.3 4.7-17 0L224 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L102.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L280 256l65.6 65.1z\"]\n};\nvar faTint = {\n prefix: 'fas',\n iconName: 'tint',\n icon: [352, 512, [], \"f043\", \"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faTintSlash = {\n prefix: 'fas',\n iconName: 'tint-slash',\n icon: [640, 512, [], \"f5c7\", \"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\"]\n};\nvar faTire = {\n prefix: 'fas',\n iconName: 'tire',\n icon: [512, 512, [], \"f631\", \"M256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm0 448c-105.87 0-192-86.13-192-192S150.13 64 256 64s192 86.13 192 192-86.13 192-192 192zm-80-192c0-17.82 6.03-34.12 15.88-47.41l-48.23-66.38C114.27 171.22 96 211.45 96 256c0 8.87 1.22 17.42 2.61 25.89l77.46-25.17c0-.24-.07-.47-.07-.72zm15 46.36l-77.42 25.15c22.86 45.4 66.32 78.17 118.42 86.07v-81.65c-16.69-5.28-31.04-15.64-41-29.57zM256 176c8.87 0 17.25 1.79 25.22 4.45l47.93-65.97C307.14 103.06 282.51 96 256 96s-51.14 7.06-73.15 18.48l47.93 65.97c7.97-2.66 16.35-4.45 25.22-4.45zm112.35-33.79l-48.23 66.38C329.97 221.88 336 238.18 336 256c0 .25-.07.48-.07.73l77.46 25.17c1.39-8.48 2.61-17.02 2.61-25.89 0-44.56-18.27-84.79-47.65-113.8zM280 331.93v81.65c52.1-7.9 95.55-40.67 118.42-86.07L321 302.36c-9.96 13.93-24.31 24.29-41 29.57zM256 224c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faTireFlat = {\n prefix: 'fas',\n iconName: 'tire-flat',\n icon: [512, 512, [], \"f632\", \"M256 160c-26.51 0-51.14 7.06-73.15 18.48l47.93 65.97c7.97-2.66 16.35-4.45 25.22-4.45s17.25 1.79 25.22 4.45l47.93-65.97C307.14 167.06 282.51 160 256 160zM96 320c0 8.87 1.22 17.42 2.61 25.89l77.46-25.17c0-.25-.07-.48-.07-.73 0-17.82 6.03-34.12 15.88-47.41l-48.23-66.38C114.27 235.22 96 275.45 96 320zm224.12-47.41C329.97 285.88 336 302.18 336 320c0 .25-.07.48-.07.73l77.46 25.17c1.39-8.48 2.61-17.02 2.61-25.89 0-44.55-18.27-84.78-47.65-113.79l-48.23 66.37zM256 288c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm224 160h-2.61C499.3 410.36 512 366.71 512 320c0-141.38-114.62-256-256-256S0 178.62 0 320c0 46.71 12.7 90.36 34.61 128H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h448c17.67 0 32-14.33 32-32s-14.33-32-32-32zm-81.3 0h-47.79a160.175 160.175 0 0 0 47.51-56.49L321 366.36c-9.96 13.94-24.31 24.29-41 29.57V448h-48v-52.07c-16.69-5.28-31.04-15.64-41-29.57l-77.42 25.15A160.175 160.175 0 0 0 161.09 448H113.3C82.76 413.99 64 369.2 64 320c0-105.87 86.13-192 192-192s192 86.13 192 192c0 49.2-18.76 93.99-49.3 128z\"]\n};\nvar faTirePressureWarning = {\n prefix: 'fas',\n iconName: 'tire-pressure-warning',\n icon: [512, 512, [], \"f633\", \"M474.5 141.54C458.33 113.26 448 80.61 448 46.09V17.14C448 7.67 440.84 0 432 0h-32c-8.84 0-16 7.16-16 16v48c0 32 15.23 74.85 34.94 109.31C437.95 206.56 448 244.86 448 284.08c0 41.13-12.75 82.49-35.8 118.12-5.72 8.85-15.95 13.79-26.48 13.79H126.29c-10.53 0-20.76-4.95-26.48-13.79-23.05-35.63-35.8-77-35.8-118.12 0-39.22 10.05-77.53 29.06-110.77C112.77 138.85 128 96 128 64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.67-16 17.14v28.95c0 34.53-10.33 67.17-26.5 95.46C13.76 183.06 0 231.81 0 284.08 0 360.89 32.54 430.22 80 480v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c47.46-49.78 80-119.11 80-195.92 0-52.27-13.76-101.02-37.5-142.54zM246.48 256h19.04c8.22 0 15.1-6.23 15.92-14.41l12.8-128c.94-9.42-6.45-17.59-15.92-17.59h-44.64c-9.47 0-16.86 8.17-15.92 17.59l12.8 128c.82 8.18 7.7 14.41 15.92 14.41zm9.52 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faTireRugged = {\n prefix: 'fas',\n iconName: 'tire-rugged',\n icon: [512, 512, [], \"f634\", \"M480 192h-9.4c-4.43-14.88-10.27-29.15-17.53-42.56l6.58-6.58c12.5-12.5 12.5-32.76 0-45.26L414.4 52.35c-12.5-12.5-32.76-12.5-45.26 0l-6.58 6.58c-13.41-7.27-27.68-13.1-42.56-17.53V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v9.4c-14.88 4.43-29.15 10.27-42.56 17.53l-6.58-6.58c-12.5-12.5-32.76-12.5-45.26 0L52.35 97.61c-12.5 12.5-12.5 32.76 0 45.26l6.58 6.58c-7.27 13.41-13.1 27.68-17.53 42.56H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h9.4c4.43 14.88 10.27 29.15 17.53 42.56l-6.58 6.58c-12.5 12.5-12.5 32.76 0 45.25l45.25 45.26c12.5 12.5 32.76 12.5 45.26 0l6.58-6.58c13.41 7.27 27.68 13.1 42.56 17.53v9.4c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-9.4c14.88-4.43 29.15-10.27 42.56-17.53l6.58 6.58c12.5 12.5 32.76 12.5 45.26 0l45.25-45.26c12.5-12.5 12.5-32.76 0-45.25l-6.58-6.58c7.27-13.41 13.1-27.68 17.53-42.56h9.4c17.67 0 32-14.33 32-32v-64c0-17.68-14.33-32.01-32-32.01zM256 383.98c-70.69 0-128-57.31-128-128s57.31-128 128-128 128 57.31 128 128c0 70.7-57.31 128-128 128zM256 160c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm0 144c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm72-72c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24zm-144 0c-13.25 0-24 10.74-24 24 0 13.25 10.75 24 24 24s24-10.75 24-24c0-13.26-10.75-24-24-24z\"]\n};\nvar faTired = {\n prefix: 'fas',\n iconName: 'tired',\n icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\"]\n};\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\"]\n};\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [384, 512, [], \"f7d8\", \"M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [576, 512, [], \"f71e\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToiletPaperAlt = {\n prefix: 'fas',\n iconName: 'toilet-paper-alt',\n icon: [576, 512, [], \"f71f\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zm352 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToiletPaperSlash = {\n prefix: 'fas',\n iconName: 'toilet-paper-slash',\n icon: [640, 512, [], \"e072\", \"M64,192V364.13c0,41.12-9.75,62.75-31.12,126.87A16,16,0,0,0,48,512H328.86a31.87,31.87,0,0,0,30.38-21.87c9.31-27.83,18-53.35,22.18-85.55l-316-244.25C64.53,170.66,64,181.19,64,192ZM633.82,458.09l-102-78.81C575.28,360.91,608,284.32,608,192,608,86,565,0,512,0s-96,86-96,192c0,42,7,80.4,18.43,112L384,265V192c0-83.62,23.63-153.5,60.5-192H160c-23.33,0-44.63,16.83-61.26,44.53L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.45A16,16,0,0,0,6.18,53.91L594.54,508.63A16,16,0,0,0,617,505.81l19.64-25.26A16,16,0,0,0,633.82,458.09ZM512,256c-17.63,0-32-28.62-32-64s14.37-64,32-64,32,28.63,32,64S529.62,256,512,256Z\"]\n};\nvar faTombstone = {\n prefix: 'fas',\n iconName: 'tombstone',\n icon: [512, 512, [], \"f720\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-48-256C448 85.96 362.04 0 256 0S64 85.96 64 192v224h384V192zm-96-8c0 8.84-7.16 16-16 16h-56v128c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16V200h-56c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h56v-48c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v48h56c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faTombstoneAlt = {\n prefix: 'fas',\n iconName: 'tombstone-alt',\n icon: [512, 512, [], \"f721\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-48-256C448 85.96 362.04 0 256 0S64 85.96 64 192v224h384V192z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [], \"f552\", \"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\"]\n};\nvar faTools = {\n prefix: 'fas',\n iconName: 'tools',\n icon: [512, 512, [], \"f7d9\", \"M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z\"]\n};\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [], \"f5c9\", \"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\"]\n};\nvar faToothbrush = {\n prefix: 'fas',\n iconName: 'toothbrush',\n icon: [640, 512, [], \"f635\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM64 416V232c0-4.42-3.58-8-8-8H40c-4.42 0-8 3.58-8 8v184h32zm64 0V232c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v184h32zm64 0V232c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v184h32zm64 0V232c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v184h32zm64 0V232c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v184h32zm64 0V232c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v184h32zm32 0h32V232c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v184zM64 192h352c35.35 0 64-28.65 64-64C480 57.31 422.69 0 352 0c23.62 23.62 6.89 64-26.51 64H64C28.65 64 0 92.65 0 128s28.65 64 64 64z\"]\n};\nvar faTorah = {\n prefix: 'fas',\n iconName: 'torah',\n icon: [640, 512, [], \"f6a0\", \"M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z\"]\n};\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [], \"f6a1\", \"M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z\"]\n};\nvar faTornado = {\n prefix: 'fas',\n iconName: 'tornado',\n icon: [512, 512, [], \"f76f\", \"M393.8 96H12.2c9.7 34.2 24.5 62.1 42.7 85.3h349.8c-14.1-23.1-20.6-50.2-10.9-85.3zm35.4-70.8c7.4-10.6 0-25.2-12.9-25.2H16.1C7.1 0-.3 7.6 0 16.5c.6 17 2.5 32.6 5.1 47.5h401.1c5.9-12.1 13.3-24.9 23-38.8zM299 330.7c33 20.5 54.4 45.8 53.3 85.3h125.5c25.1-34.4 34.7-62 34.1-85.3H299zm130.9-117.4h-345c45.1 40.4 101 63.6 150.1 85.3h269.4c-14.5-32.1-47.4-56.9-74.5-85.3zm-98.1 275.8c-5 10.6 2.7 22.9 14.4 22.9h27.4c7.9 0 15.8-3 21.7-8.3 22.7-20.3 41-38.6 56.4-55.7H347.4c-3.4 12.5-8.4 26.1-15.6 41.1z\"]\n};\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [], \"f722\", \"M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [], \"f25c\", \"M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z\"]\n};\nvar faTrafficCone = {\n prefix: 'fas',\n iconName: 'traffic-cone',\n icon: [512, 512, [], \"f636\", \"M362.12 192H149.88l-38.21 96h288.65l-38.2-96zM289.73 10.08A16.01 16.01 0 0 0 274.86 0h-37.72a16.01 16.01 0 0 0-14.87 10.08L175.35 128h161.3L289.73 10.08zM496 448h-32l-38.21-96H86.21L48 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [384, 512, [], \"f637\", \"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrafficLightGo = {\n prefix: 'fas',\n iconName: 'traffic-light-go',\n icon: [384, 512, [], \"f638\", \"M192 208c-17.64 0-32 14.36-32 32s14.36 32 32 32 32-14.36 32-32-14.36-32-32-32zm0-128c-17.64 0-32 14.36-32 32s14.36 32 32 32 32-14.36 32-32-14.36-32-32-32zm192 112h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrafficLightSlow = {\n prefix: 'fas',\n iconName: 'traffic-light-slow',\n icon: [384, 512, [], \"f639\", \"M192 336c-17.64 0-32 14.36-32 32s14.36 32 32 32 32-14.36 32-32-14.36-32-32-32zm192-144h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-80c-17.64 0-32 14.36-32 32s14.36 32 32 32 32-14.36 32-32-14.36-32-32-32z\"]\n};\nvar faTrafficLightStop = {\n prefix: 'fas',\n iconName: 'traffic-light-stop',\n icon: [384, 512, [], \"f63a\", \"M192 336c-17.64 0-32 14.36-32 32s14.36 32 32 32 32-14.36 32-32-14.36-32-32-32zm0-128c-17.64 0-32 14.36-32 32s14.36 32 32 32 32-14.36 32-32-14.36-32-32-32zm192-16h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"e041\", \"M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n prefix: 'fas',\n iconName: 'tram',\n icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransgenderAlt = {\n prefix: 'fas',\n iconName: 'transgender-alt',\n icon: [480, 512, [], \"f225\", \"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransporter = {\n prefix: 'fas',\n iconName: 'transporter',\n icon: [512, 512, [], \"e042\", \"M384.00049,448H327.999V238.7793l31.42272,37.70508a31.99572,31.99572,0,0,0,49.15756-40.96876l-70.39251-84.48437A63.843,63.843,0,0,0,289.01358,128h-66.033A63.7877,63.7877,0,0,0,173.823,151.03125l-70.40813,84.48437a31.99572,31.99572,0,0,0,49.15756,40.96876l31.42272-37.70508V448h-56.0015A31.99951,31.99951,0,0,0,95.9928,480v32H416.00134V480A31.99951,31.99951,0,0,0,384.00049,448Zm-120.00321,0H247.99686V320h16.00042ZM255.958,96l.01953-.00195L255.99707,96a48,48,0,1,0,0-96l-.01953.002L255.958,0a48,48,0,1,0,0,96ZM509.789,44.43164,480.005,32.01172,467.58475,2.22656a3.99471,3.99471,0,0,0-7.15644,0L448.00806,32.01172l-29.784,12.41992a3.99921,3.99921,0,0,0,0,7.1543l29.784,12.41992L460.42831,93.791a3.99628,3.99628,0,0,0,7.15644,0L480.005,64.00586l29.784-12.41992a3.99921,3.99921,0,0,0,0-7.1543ZM63.99194,96,51.57169,66.21484a3.99313,3.99313,0,0,0-7.15449,0L31.997,96,2.211,108.41992a3.99921,3.99921,0,0,0,0,7.1543l29.786,12.41992L44.4172,157.7793a3.9947,3.9947,0,0,0,7.15449,0l12.42025-29.78516,29.786-12.41992a4.00079,4.00079,0,0,0,0-7.1543Z\"]\n};\nvar faTransporter1 = {\n prefix: 'fas',\n iconName: 'transporter-1',\n icon: [512, 512, [], \"e043\", \"M263.99728,416H327.999V384H263.99728ZM152.57243,276.48438l31.42272-37.70508V352h64.00171V320h16.00042v32H327.999V238.7793l31.42272,37.70508a31.99572,31.99572,0,0,0,49.15756-40.96876l-70.39251-84.48437A63.843,63.843,0,0,0,289.01358,128h-66.033A63.7877,63.7877,0,0,0,173.823,151.03125l-70.40813,84.48437a31.99572,31.99572,0,0,0,49.15756,40.96876ZM255.958,96l.01953-.00195L255.99707,96a48,48,0,1,0,0-96l-.01953.002L255.958,0a48,48,0,1,0,0,96ZM183.99515,416h64.00171V384H183.99515ZM509.789,364.41992,480.005,352l-12.42026-29.78516a3.99471,3.99471,0,0,0-7.15644,0L448.00806,352l-29.784,12.41992a3.99921,3.99921,0,0,0,0,7.1543l29.784,12.41992,12.42025,29.78516a3.99628,3.99628,0,0,0,7.15644,0L480.005,383.99414l29.784-12.41992a3.99921,3.99921,0,0,0,0-7.1543ZM63.99194,128.002,51.57169,98.21875a3.99313,3.99313,0,0,0-7.15449,0L31.997,128.002,2.211,140.42188a4.00078,4.00078,0,0,0,0,7.15624l29.786,12.41993,12.42025,29.7832a3.99313,3.99313,0,0,0,7.15449,0l12.42025-29.7832,29.786-12.41993a4.00236,4.00236,0,0,0,0-7.15624ZM384.00049,448H127.99365A31.99951,31.99951,0,0,0,95.9928,480v32H416.00134V480A31.99951,31.99951,0,0,0,384.00049,448Z\"]\n};\nvar faTransporter2 = {\n prefix: 'fas',\n iconName: 'transporter-2',\n icon: [512, 512, [], \"e044\", \"M328.00024,320h-64.002v32h64.002Zm-64.002,96h64.002V384h-64.002ZM255.959,96l.01953-.00195L255.99805,96a48,48,0,1,0,0-96l-.01954.002L255.959,0a48,48,0,1,0,0,96Zm72.04126,160H183.99585v32H328.00024Zm31.42284,20.48438a31.98515,31.98515,0,0,0,45.06387,4.09374A31.45531,31.45531,0,0,0,415.57323,256h-73.221Zm-21.235-125.45313A63.84341,63.84341,0,0,0,289.01468,128H222.98141a63.78806,63.78806,0,0,0-49.15775,23.03125L113.01321,224H398.98679ZM384.002,448H127.99414a31.99957,31.99957,0,0,0-32.001,32v32H416.00293V480A31.99957,31.99957,0,0,0,384.002,448ZM247.9978,320h-64.002v32h64.002ZM152.573,276.48438,169.64385,256h-73.221a31.45534,31.45534,0,0,0,11.08628,24.57812A32.00632,32.00632,0,0,0,152.573,276.48438ZM183.99585,416h64.002V384h-64.002ZM509.791,140.416l-29.78607-12.41993-12.4203-29.7832a3.99315,3.99315,0,0,0-7.15451,0l-12.4203,29.7832L418.2237,140.416a4.00079,4.00079,0,0,0,0,7.15625l29.78607,12.41992,12.4203,29.7832a3.99315,3.99315,0,0,0,7.15451,0l12.4203-29.7832L509.791,147.57227a4.00237,4.00237,0,0,0,0-7.15625ZM63.99023,32.002,51.56993,2.21875a3.99315,3.99315,0,0,0-7.15451,0L31.99512,32.002,2.20905,44.42188a4.00078,4.00078,0,0,0,0,7.15429L31.99512,63.99609l12.4203,29.78516a3.99315,3.99315,0,0,0,7.15451,0l12.4203-29.78516L93.7763,51.57617a3.99921,3.99921,0,0,0,0-7.15429Z\"]\n};\nvar faTransporter3 = {\n prefix: 'fas',\n iconName: 'transporter-3',\n icon: [512, 512, [], \"e045\", \"M372.32386,192H139.68l-26.66683,32H398.98679ZM263.99829,416h64.002V384h-64.002Zm64.002-96h-64.002v32h64.002Zm31.42284-43.51562a31.98515,31.98515,0,0,0,45.06387,4.09374A31.45531,31.45531,0,0,0,415.57323,256h-73.221ZM255.99805,0l-.01954.002L255.959,0a47.95186,47.95186,0,0,0-45.0502,32h90.13947A47.95186,47.95186,0,0,0,255.99805,0ZM255.959,96l.01953-.00195L255.99805,96a47.87741,47.87741,0,0,0,45.06-32H210.899A47.87741,47.87741,0,0,0,255.959,96Zm82.22908,55.03125A63.84341,63.84341,0,0,0,289.01468,128H222.98141a63.78806,63.78806,0,0,0-49.15775,23.03125L166.34883,160H345.66094ZM247.9978,320h-64.002v32h64.002ZM152.573,276.48438,169.64385,256h-73.221a31.45534,31.45534,0,0,0,11.08628,24.57812A32.00632,32.00632,0,0,0,152.573,276.48438ZM384.002,448H127.99414a31.99957,31.99957,0,0,0-32.001,32v32H416.00293V480A31.99957,31.99957,0,0,0,384.002,448ZM328.00024,256H183.99585v32H328.00024ZM183.99585,416h64.002V384h-64.002ZM509.791,44.43164,480.00488,32.01172,467.58458,2.22656a3.99315,3.99315,0,0,0-7.15451,0l-12.4203,29.78516L418.2237,44.43164a3.99921,3.99921,0,0,0,0,7.1543l29.78607,12.41992L460.43007,93.791a3.99472,3.99472,0,0,0,7.15451,0l12.4203-29.78516L509.791,51.58594a4.00079,4.00079,0,0,0,0-7.1543ZM63.99023,352.00391,51.56993,322.2207a3.99315,3.99315,0,0,0-7.15451,0l-12.4203,29.78321L2.20905,364.42383a4.00237,4.00237,0,0,0,0,7.15625L31.99512,384l12.4203,29.7832a3.99315,3.99315,0,0,0,7.15451,0L63.99023,384,93.7763,371.58008a4.00079,4.00079,0,0,0,0-7.15625Z\"]\n};\nvar faTransporterEmpty = {\n prefix: 'fas',\n iconName: 'transporter-empty',\n icon: [512, 512, [], \"e046\", \"M384.002,447.99976H127.99414a31.99963,31.99963,0,0,0-32.001,32.00012V512H416.00293V479.99988A31.99963,31.99963,0,0,0,384.002,447.99976ZM509.791,268.419l-29.78607-12.42-12.4203-29.78527a3.99315,3.99315,0,0,0-7.15451,0L448.00977,255.999l-29.78607,12.42a3.99924,3.99924,0,0,0,0,7.15433l29.78607,12.42,12.4203,29.78527a3.99471,3.99471,0,0,0,7.15451,0l12.4203-29.78527,29.78607-12.42a4.00082,4.00082,0,0,0,0-7.15433ZM63.99023,32.00208,51.56993,2.21876a3.99314,3.99314,0,0,0-7.15451,0L31.99512,32.00208,2.20905,44.422a4.0024,4.0024,0,0,0,0,7.15628l29.78607,12.42,12.4203,29.78332a3.99314,3.99314,0,0,0,7.15451,0l12.4203-29.78332,29.78607-12.42a4.00082,4.00082,0,0,0,0-7.15628Z\"]\n};\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"]\n};\nvar faTrashAlt = {\n prefix: 'fas',\n iconName: 'trash-alt',\n icon: [448, 512, [], \"f2ed\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestore = {\n prefix: 'fas',\n iconName: 'trash-restore',\n icon: [448, 512, [], \"f829\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestoreAlt = {\n prefix: 'fas',\n iconName: 'trash-restore-alt',\n icon: [448, 512, [], \"f82a\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashUndo = {\n prefix: 'fas',\n iconName: 'trash-undo',\n icon: [448, 512, [], \"f895\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm47.18-189.47l84-81.59c8.84-8.59 23.61-2.24 23.61 10.47v41.67c82.47.8 144 18.36 144 103.92 0 34.29-20.14 68.26-42.41 86-6.95 5.54-16.85-1.41-14.29-10.4 23.08-80.93-6.55-101.74-87.3-102.72v44.69c0 12.69-14.76 19.07-23.61 10.47l-84-81.59a14.7 14.7 0 0 1 0-20.92zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashUndoAlt = {\n prefix: 'fas',\n iconName: 'trash-undo-alt',\n icon: [448, 512, [], \"f896\", \"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm68.38-186.47l84-81.59c8.84-8.59 23.61-2.24 23.61 10.47v41.67c82.47.8 144 18.36 144 103.92 0 34.29-20.14 68.26-42.41 86-6.95 5.54-16.85-1.41-14.29-10.4 23.08-80.93-6.55-101.74-87.3-102.72v44.69c0 12.69-14.76 19.07-23.61 10.47l-84-81.59a14.7 14.7 0 0 1 0-20.92z\"]\n};\nvar faTreasureChest = {\n prefix: 'fas',\n iconName: 'treasure-chest',\n icon: [576, 512, [], \"f723\", \"M0 448c0 17.67 14.33 32 32 32h64V288H0v160zm0-320v128h96V32C42.98 32 0 74.98 0 128zm352 208c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48h-96v192h320V288h-96v48zm128 144h64c17.67 0 32-14.33 32-32V288h-96v192zM128 256h96v-48c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v48h96V32H128v224zM480 32v224h96V128c0-53.02-42.98-96-96-96zM304 304v-64c0-8.84-7.16-16-16-16s-16 7.16-16 16v64c0 8.84 7.16 16 16 16s16-7.16 16-16z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [384, 512, [], \"f1bb\", \"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z\"]\n};\nvar faTreeAlt = {\n prefix: 'fas',\n iconName: 'tree-alt',\n icon: [512, 512, [], \"f400\", \"M496 235c-10.67-16-25-27.67-43-35h1c8.67-16 11.83-32.5 9.5-49.5s-9.17-31.67-20.5-44S417.83 86 401.5 82s-32.83-2.33-49.5 5c-2.67-24.67-13.17-45.33-31.5-62S280.67 0 256 0s-46.17 8.33-64.5 25-28.83 37.33-31.5 62c-16.67-7.33-33.17-9-49.5-5S80.33 94.17 69 106.5s-18.17 27-20.5 44S49.67 184 59 200c-18 7.33-32.33 19-43 35S0 268.67 0 288c0 26.67 9.33 49.33 28 68s41.33 28 68 28h128v56.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L288 440.45V384h128c26.67 0 49.33-9.33 68-28s28-41.33 28-68c0-19.33-5.33-37-16-53z\"]\n};\nvar faTreeChristmas = {\n prefix: 'fas',\n iconName: 'tree-christmas',\n icon: [448, 512, [], \"f7db\", \"M224 160l26.7-53.3L304 80l-53.3-26.7L224 0l-26.7 53.3L144 80l53.3 26.7L224 160zm215.6 295.6L349.8 352h36c25.6 0 39.5-26.3 23.2-43.5L262.8 154 224 208l-38.8-54L39 308.5C22.7 325.7 36.6 352 62.2 352h36L8.4 455.6c-19 21.9-3.8 56.4 24.7 56.4h381.7c28.6 0 43.7-34.6 24.8-56.4zM160 312c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm128 128c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faTreeDecorated = {\n prefix: 'fas',\n iconName: 'tree-decorated',\n icon: [448, 512, [], \"f7dc\", \"M439.6 455.6L349.8 352h36c25.6 0 39.5-29.2 23.2-48.5L314.1 192h44.8c21.3 0 32.9-22.5 19.3-37.3L243.3 8.2c-10-10.9-28.6-10.9-38.6 0L69.9 154.7c-13.6 14.8-2 37.3 19.3 37.3H134L39 303.5C22.7 322.8 36.6 352 62.2 352h36L8.4 455.6c-19 21.9-3.8 56.4 24.7 56.4h381.7c28.6 0 43.7-34.6 24.8-56.4zM160 312c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm72-152c0-13.3 10.7-24 24-24s24 10.7 24 24-10.7 24-24 24-24-10.7-24-24zm56 280c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faTreeLarge = {\n prefix: 'fas',\n iconName: 'tree-large',\n icon: [448, 512, [], \"f7dd\", \"M439.6 455.6L349.8 352h36c25.6 0 39.5-29.2 23.2-48.5L314.1 192h44.8c21.3 0 32.9-22.5 19.3-37.3L243.3 8.2c-10-10.9-28.6-10.9-38.6 0L69.9 154.7c-13.6 14.8-2 37.3 19.3 37.3H134L39 303.5C22.7 322.8 36.6 352 62.2 352h36L8.4 455.6c-19 21.9-3.8 56.4 24.7 56.4h381.7c28.6 0 43.7-34.6 24.8-56.4z\"]\n};\nvar faTreePalm = {\n prefix: 'fas',\n iconName: 'tree-palm',\n icon: [640, 512, [], \"f82b\", \"M448.76 64c-39.43 0-75.06 11.74-103 30.5C327.14 40.17 265.37 0 191.24 0c-80.62 0-147.37 47.24-159 108.86C30.39 118.79 38.75 128 50 128h54l24-48 33.46 66.92c-3.53 3.07-7.28 5.69-10.66 9.07C93.8 213 80 293.6 115.37 345.38c5.7 8.34 18.12 8.94 26.07 1l146.13-146.14c10.72 104.75-11.42 215-25.85 272.15C256.64 492.52 272 512 292.8 512h55.13c15.75 0 29.67-11.37 31.71-27 14.79-113.47-11.57-236.34-26.41-293H488l24-48 24 48h54c11.25 0 19.61-9.21 17.74-19.14C596.13 111.24 529.38 64 448.76 64z\"]\n};\nvar faTrees = {\n prefix: 'fas',\n iconName: 'trees',\n icon: [640, 512, [], \"f724\", \"M298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.39 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.87c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26L298.42 288zm335.89 90.49L554.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L524.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L459.66 4.83c-6.03-6.45-17.28-6.45-23.32 0l-95.06 101.26c11.09 15.37 13.97 35.3 6.34 52.96-4 9.27-10.38 17.03-18.26 22.68l41.54 48.32c13.93 16.25 17.04 39.23 7.94 58.52-4.19 8.89-10.46 16.24-18.11 21.58l41.62 47.15c8.65 9.8 13.34 14.15 13.65 26.69v56.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L480 440.45V416h136.87c9.01 0 17.26-5.2 21.01-13.25 3.79-8.17 2.43-17.47-3.57-24.26z\"]\n};\nvar faTriangle = {\n prefix: 'fas',\n iconName: 'triangle',\n icon: [576, 512, [], \"f2ec\", \"M329.6 24c-18.4-32-64.7-32-83.2 0L6.5 440c-18.4 31.9 4.6 72 41.6 72H528c36.9 0 60-40 41.6-72l-240-416z\"]\n};\nvar faTriangleMusic = {\n prefix: 'fas',\n iconName: 'triangle-music',\n icon: [512, 512, [], \"f8e2\", \"M497.81 368.09l-80.48-130.24-46.49 46.5 72.55 117.4a29 29 0 0 1 .69 30A31.73 31.73 0 0 1 415.87 448H96.13a31.73 31.73 0 0 1-28.21-16.23 29 29 0 0 1 .69-30l159.87-258.7c8.4-13.6 22.05-15.07 27.52-15.07s19.12 1.47 27.52 15.05l44.11 71.37-53 53a56.85 56.85 0 1 0 33.92 33.94l198.7-198.74a16 16 0 0 0 0-22.62l-11.31-11.31a16 16 0 0 0-22.62 0l-99.21 99.23L338 109.39c-11.72-19-29.55-32.22-50-39.34V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v54.05c-20.41 7.12-38.24 20.37-50 39.34L14.19 368.09A92.48 92.48 0 0 0 12 462.92 96.17 96.17 0 0 0 96.13 512h319.74A96.17 96.17 0 0 0 500 462.92a92.48 92.48 0 0 0-2.19-94.83z\"]\n};\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [], \"f091\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"]\n};\nvar faTrophyAlt = {\n prefix: 'fas',\n iconName: 'trophy-alt',\n icon: [576, 512, [], \"f2eb\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 66.5 77.9 131.7 171.9 142.4C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6C498.4 275.6 576 210.3 576 144V88c0-13.3-10.7-24-24-24zM64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-47.5-16.4-77-49.9-77-70.2zm448 0c0 20.2-29.4 53.8-77 70.2 7-25 11.8-53.6 12.8-86.2H512v16zm-127.3 4.7l-39.6 38.6 9.4 54.6c1.7 9.8-8.7 17.2-17.4 12.6l-49-25.8-49 25.8c-8.8 4.6-19.1-2.9-17.4-12.6l9.4-54.6-39.6-38.6c-7.1-6.9-3.2-19 6.7-20.5l54.8-8 24.5-49.6c4.4-8.9 17.1-8.9 21.5 0l24.5 49.6 54.8 8c9.6 1.5 13.5 13.6 6.4 20.5z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [], \"f0d1\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faTruckContainer = {\n prefix: 'fas',\n iconName: 'truck-container',\n icon: [640, 512, [], \"f4dc\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H464c-17.7 0-32 14.3-32 32v144H32c-17.7 0-32 14.3-32 32v27.8c0 40.8 28.7 78.1 69.1 83.5 30.7 4.1 58.3-9.5 74.9-31.7 18.4 24.7 50.4 38.7 85.3 29.7 25.2-6.5 46.1-26.2 54.4-50.8 4.9-14.8 5.4-29.2 2.8-42.4h163.2c-2.7 13.2-2.2 27.6 2.8 42.4 8.4 25.1 29.9 44.9 55.6 51.1 52.8 12.8 100-26.9 100-77.6 0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17.1-6.7-33.3-18.7-45.3zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm-48-176v-48h37.5c4.2 0 8.3 1.7 11.3 4.7l43.3 43.3H480zM32 304h336c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v208c0 17.7 14.3 32 32 32zM304 80h32v176h-32V80zm-80 0h32v176h-32V80zm-80 0h32v176h-32V80zm-80 0h32v176H64V80z\"]\n};\nvar faTruckCouch = {\n prefix: 'fas',\n iconName: 'truck-couch',\n icon: [640, 512, [], \"f4dd\", \"M24.1 400L320 320.7v-122c-8.3-4-18-5.6-27.6-3.1-21.3 5.7-34 27.7-28.3 49l6.2 23.2-185.4 49.7-6.2-23.2C73 273 51 260.3 29.7 266c-21.3 5.7-34 27.7-28.3 49l22.7 85zm-2.7-164.9c39.6-10.6 73.7 13.4 85.5 43.4L232 245c-5.4-35.7 16.5-70.7 52.2-80.2 2.6-.7 5.3-.7 8-1.1-9.9-36.9-45.9-55.1-78.7-46.3L58.9 158.8c-32.8 8.8-54.8 42.6-45.1 79.1 2.5-1 5-2.1 7.6-2.8zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckLoading = {\n prefix: 'fas',\n iconName: 'truck-loading',\n icon: [640, 512, [], \"f4de\", \"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [], \"f63c\", \"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faTruckPlow = {\n prefix: 'fas',\n iconName: 'truck-plow',\n icon: [640, 512, [], \"f7de\", \"M598.6 393.4c-14.5-14.5-22.6-34.1-22.6-54.6V237.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-32v-64c0-17.7-14.3-32-32-32h-45.9l-82-136.7C311.5 40.9 295.7 32 278.9 32H168c-22.1 0-40 17.9-40 40v120H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h5.9c-3.6 10.1-5.9 20.7-5.9 32 0 53 43 96 96 96s96-43 96-96c0-11.3-2.3-21.9-5.9-32h75.8c-3.6 10.1-5.9 20.7-5.9 32 0 53 43 96 96 96s96-43 96-96c0-11.3-2.3-21.9-5.9-32h39.2c3.1 32.6 16.7 63.3 40.1 86.6l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 96h77.9l57.6 96H192V96zm-32 288c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32zm224 32c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckRamp = {\n prefix: 'fas',\n iconName: 'truck-ramp',\n icon: [640, 512, [], \"f4e0\", \"M384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTrumpet = {\n prefix: 'fas',\n iconName: 'trumpet',\n icon: [640, 512, [], \"f8e3\", \"M624 64a16.27 16.27 0 0 0-13 6.67 555.44 555.44 0 0 1-66.19 71.68c-15.38 13-32.93 25.66-52.54 36-5.55 2.94-25.75 13.6-60 13.63H400V160a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v32h-40v-32a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v32h-40v-32a16 16 0 0 0-16-16h-16a16 16 0 0 0-16 16v32H48a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h16a16 16 0 0 0 16-16h33.81C70.78 274.9 64 296.58 64 320a128.14 128.14 0 0 0 128 128h224a96.1 96.1 0 0 0 96-96v-31.43a251.78 251.78 0 0 0-34.67-22.65c-8.63-4.55-18.76-7-29.33-8.41V352a32 32 0 0 1-32 32h-16V256h32c34.48 0 54.66 10.66 60.27 13.62a294.39 294.39 0 0 1 49.17 33.28c39.49 34.65 69.09 73.78 69.25 74A16 16 0 0 0 624 384c12.09 0 16-10.94 16-16V80c0-12-10.81-16-16-16zM176 381.73a63.69 63.69 0 0 1 0-123.46zm88 2.27h-40V256h40zm88 0h-40V256h40z\"]\n};\nvar faTshirt = {\n prefix: 'fas',\n iconName: 'tshirt',\n icon: [640, 512, [], \"f553\", \"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [], \"f1e4\", \"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faTurkey = {\n prefix: 'fas',\n iconName: 'turkey',\n icon: [640, 512, [], \"f725\", \"M596.39 83.63A52.25 52.25 0 0 0 572.46 85a51.78 51.78 0 0 0 10.25-36.3c-2-20.79-16.24-39.48-36.09-46a53.11 53.11 0 0 0-69 41.13 52.26 52.26 0 0 0 .43 20.88c3.53 15.67-1.36 32-14.57 41.19-15.48 10.73-24.23 17.61-48.07 28C377 110.67 333.83 96 288 96 128.94 96 0 269.13 0 384s128.94 128 288 128 288-13.12 288-128c0-50-24.54-110.94-65.24-163.91a193.68 193.68 0 0 0-61 90.2c-19.05 58.14-68.12 99.33-125 104.93q-8 .78-15.7.78c-49.36 0-93.81-23-121.94-63a148 148 0 0 1-23.87-55.58 8 8 0 0 1 7.94-9.42h16.43a8 8 0 0 1 7.71 6.28C207.22 344.46 251.64 384 309.05 384q6.19 0 12.56-.62c45.84-4.51 83.33-39.06 97.74-83.05 20.72-63.26 63.07-101.22 90.64-120.41 14.76-10.27 33.47-8.35 48.61 1.35a52.93 52.93 0 0 0 30.26 8.26c20.9-.57 40.12-14.38 47.52-33.94 12.22-32.3-7.86-66.09-39.99-71.96z\"]\n};\nvar faTurntable = {\n prefix: 'fas',\n iconName: 'turntable',\n icon: [576, 512, [], \"f8e4\", \"M224 224a32 32 0 1 0 32 32 32 32 0 0 0-32-32zM512 32H64A64 64 0 0 0 0 96v320a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V96a64 64 0 0 0-64-64zM224 416a160 160 0 1 1 160-160 160 160 0 0 1-160 160zm288-148.18a64 64 0 0 1-6.76 28.63l-18.93 37.86a16 16 0 0 1 7.16 21.46l-25.69 51.38a16 16 0 0 1-21.47 7.16L417.69 400a16 16 0 0 1-7.16-21.46l25.69-51.38a16 16 0 0 1 21.47-7.16l18.93-37.87a32 32 0 0 0 3.38-14.32V104a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8z\"]\n};\nvar faTurtle = {\n prefix: 'fas',\n iconName: 'turtle',\n icon: [576, 512, [], \"f726\", \"M68.25 256h279.51c23.54 0 40.97-19.8 35.1-40.04C362.84 146.97 292.33 64 208.41 64h-.82c-83.91 0-154.43 82.97-174.44 151.96C27.27 236.2 44.71 256 68.25 256zm484.03-118.75l-48.65-34.75c-35.17-17.42-80.49 1.57-86.81 40.31-.54 3.32-.82 6.72-.82 10.19v71.22c-.03 13.88-4.6 27.18-13.27 38.44-12.42 16.11-31.25 25.34-51.68 25.34H18.6C8.33 288 0 296.33 0 306.6c0 8 5.12 15.11 12.71 17.64l98.29 22.1L66.17 424c-6.16 10.67 1.54 24 13.86 24h36.95c5.71 0 11-3.05 13.86-8l40.3-69.8c25.99 8.52 45.55 13.8 84.87 13.8s58.89-5.28 84.87-13.8l40.3 69.8c2.86 4.95 8.14 8 13.86 8h36.95c12.32 0 20.01-13.33 13.86-24l-47.21-81.76c21.25-8.42 40.36-21.78 54.81-40.53 14.08-18.28 22.47-39.4 25.29-61.7h40.62c31.29 0 56.65-25.36 56.65-56.65a56.7 56.7 0 0 0-23.73-46.11zM480 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faTvAlt = {\n prefix: 'fas',\n iconName: 'tv-alt',\n icon: [640, 512, [], \"f8e5\", \"M520 448H120a24 24 0 0 0-24 24v16a24 24 0 0 0 24 24h400a24 24 0 0 0 24-24v-16a24 24 0 0 0-24-24zM592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h544a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faTvMusic = {\n prefix: 'fas',\n iconName: 'tv-music',\n icon: [640, 512, [], \"f8e6\", \"M512 448H128a32 32 0 0 0 0 64h384a32 32 0 0 0 0-64zM240 320c26.5 0 48-14.33 48-32v-84.84l96-37.52V226a69.89 69.89 0 0 0-16-2c-26.5 0-48 14.33-48 32s21.5 32 48 32 48-14.33 48-32V112a16 16 0 0 0-20.81-15.25l-128 47.25A16 16 0 0 0 256 159.25V258a69.89 69.89 0 0 0-16-2c-26.5 0-48 14.33-48 32s21.5 32 48 32zM592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h544a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faTvRetro = {\n prefix: 'fas',\n iconName: 'tv-retro',\n icon: [512, 512, [], \"f401\", \"M464 96H338.8l35.7-41.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L256 94.2 182.8 9.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L173.2 96H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h16v32h48l21.3-32h245.3l21.3 32h48v-32h16c26.5 0 48-21.5 48-48V144c.1-26.5-21.4-48-47.9-48zm-72 312s0 8-168 8c-152 0-152-8-152-8s-8 0-8-120 8-120 8-120 0-8 152-8c168 0 168 8 168 8s8 0 8 120-8 120-8 120zm72-100c0 6.6-5.4 12-12 12h-8c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h8c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12h-8c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h8c6.6 0 12 5.4 12 12v8z\"]\n};\nvar faTypewriter = {\n prefix: 'fas',\n iconName: 'typewriter',\n icon: [512, 512, [], \"f8e7\", \"M480 192h-32V77.26a32 32 0 0 0-9.38-22.64L393.38 9.38A32 32 0 0 0 370.73 0H96a32 32 0 0 0-32 32v160H32a32 32 0 0 0-32 32v32a32 32 0 0 0 32 32v160a64 64 0 0 0 64 64h320a64 64 0 0 0 64-64V288a32 32 0 0 0 32-32v-32a32 32 0 0 0-32-32zM128 64h192v48a16 16 0 0 0 16 16h48v64h-18.75a32 32 0 0 0-22.62 9.37l-13.26 13.26a32 32 0 0 1-22.62 9.37h-101.5a32 32 0 0 1-22.62-9.37l-13.26-13.26a32 32 0 0 0-22.62-9.37H128zm240 232v16a8 8 0 0 1-8 8h-16a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8zm-64 64a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v16a8 8 0 0 1-8 8h-16a8 8 0 0 1-8-8zm-8-40h-16a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v16a8 8 0 0 1-8 8zm-56 40a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v16a8 8 0 0 1-8 8h-16a8 8 0 0 1-8-8zm-8-40h-16a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v16a8 8 0 0 1-8 8zm-56 40a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v16a8 8 0 0 1-8 8h-16a8 8 0 0 1-8-8zm-8-40h-16a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v16a8 8 0 0 1-8 8zm-64 0H88a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v16a8 8 0 0 1-8 8zm32 64h-16a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8v16a8 8 0 0 1-8 8zm232 56a8 8 0 0 1-8 8H152a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h208a8 8 0 0 1 8 8zm32-64a8 8 0 0 1-8 8h-16a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8zm32-64a8 8 0 0 1-8 8h-16a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h16a8 8 0 0 1 8 8z\"]\n};\nvar faUfo = {\n prefix: 'fas',\n iconName: 'ufo',\n icon: [640, 512, [], \"e047\", \"M494.73633,212.84375C481.5332,128.67773,408.32031,64,320,64S158.4668,128.67773,145.26367,212.84375C57.86328,235.69336,0,275.11719,0,320c0,70.69141,143.26953,128,320,128s320-57.30859,320-128C640,275.11719,582.13672,235.69336,494.73633,212.84375ZM128,360a24,24,0,1,1,24-24A24.00118,24.00118,0,0,1,128,360Zm192,32a24,24,0,1,1,24-24A24.00118,24.00118,0,0,1,320,392ZM447.36133,256.78125a275.4037,275.4037,0,0,1-254.72266,0c-.74023-5.54687-1.70508-11.0332-1.70508-16.78125,0-70.69336,57.78321-128,129.06641-128s129.06641,57.30664,129.06641,128C449.06641,245.74805,448.10156,251.23438,447.36133,256.78125ZM512,360a24,24,0,1,1,24-24A24.00118,24.00118,0,0,1,512,360Z\"]\n};\nvar faUfoBeam = {\n prefix: 'fas',\n iconName: 'ufo-beam',\n icon: [640, 512, [], \"e048\", \"M33.69355,481.68452A15.99666,15.99666,0,0,0,40.8477,503.1494l14.31611,7.15822a16.00213,16.00213,0,0,0,21.46635-7.15431L158.316,339.77409a15.87807,15.87807,0,0,0,1.57028-5.79493,454.17592,454.17592,0,0,1-45.60452-13.47659Zm492.02691-161.178A454.88192,454.88192,0,0,1,480.114,333.98111a15.86859,15.86859,0,0,0,1.57028,5.793l81.68581,163.37922a16.00157,16.00157,0,0,0,21.46635,7.15431l14.31611-7.15822a15.99835,15.99835,0,0,0,7.15415-21.46488ZM608,208.0004c0-40.89266-56.534-76.56069-140.68263-96.11151C449.22009,47.57626,390.38147,0,320.006,0S190.79185,47.57626,172.69457,111.88889C88.54593,131.43971,32.01194,167.10774,32.01194,208.0004c0,61.85559,128.93874,112.00022,287.994,112.00022S608,269.856,608,208.0004Zm-479.99,24a24.00005,24.00005,0,1,1,23.9995-24A24.001,24.001,0,0,1,128.01,232.00045Zm191.996,48.00009a24,24,0,1,1,23.9995-24A24.001,24.001,0,0,1,320.006,280.00054ZM424.20889,166.45735a224.72853,224.72853,0,0,1-104.20292,25.543,224.72856,224.72856,0,0,1-104.20292-25.543,102.694,102.694,0,0,1-1.3945-13.73049c0-57.84,47.27636-104.72677,105.59742-104.72677S425.60339,94.8869,425.60339,152.72686A102.694,102.694,0,0,1,424.20889,166.45735Zm87.7931,65.5431a24.00005,24.00005,0,1,1,23.9995-24A24.001,24.001,0,0,1,512.002,232.00045Z\"]\n};\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [640, 512, [], \"f5ca\", \"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\"]\n};\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n prefix: 'fas',\n iconName: 'undo',\n icon: [512, 512, [], \"f0e2\", \"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"]\n};\nvar faUndoAlt = {\n prefix: 'fas',\n iconName: 'undo-alt',\n icon: [512, 512, [], \"f2ea\", \"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\"]\n};\nvar faUnicorn = {\n prefix: 'fas',\n iconName: 'unicorn',\n icon: [640, 512, [], \"f727\", \"M631.98 32H531.73c5.93-6.14 10.4-13.63 12.18-22.36 1.01-4.96-2.88-9.64-7.94-9.64H416c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59 102.04 22.33V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74L544 83.3l92.42-36.65c6.59-4.38 3.48-14.65-4.44-14.65zM480 96c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faUnion = {\n prefix: 'fas',\n iconName: 'union',\n icon: [384, 512, [], \"f6a2\", \"M384 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v240c0 59.2-53.85 106.04-115.13 94.14-45.58-8.85-76.87-51.5-76.87-97.93V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v240c0 114.18 100.17 205.4 217.26 190.38C314.04 465.96 384 378.89 384 281.32V48z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\"]\n};\nvar faUniversity = {\n prefix: 'fas',\n iconName: 'university',\n icon: [512, 512, [], \"f19c\", \"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\"]\n};\nvar faUnlink = {\n prefix: 'fas',\n iconName: 'unlink',\n icon: [512, 512, [], \"f127\", \"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [], \"f09c\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faUnlockAlt = {\n prefix: 'fas',\n iconName: 'unlock-alt',\n icon: [448, 512, [], \"f13e\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faUsbDrive = {\n prefix: 'fas',\n iconName: 'usb-drive',\n icon: [640, 512, [], \"f8e9\", \"M624 128H480v256h144a16 16 0 0 0 16-16V144a16 16 0 0 0-16-16zm-40 184a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16zm0-96a16 16 0 0 1-16 16h-16a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h16a16 16 0 0 1 16 16zM432 96H64a64 64 0 0 0-64 64v192a64 64 0 0 0 64 64h368a16 16 0 0 0 16-16V112a16 16 0 0 0-16-16z\"]\n};\nvar faUsdCircle = {\n prefix: 'fas',\n iconName: 'usd-circle',\n icon: [496, 512, [], \"f2e8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 376v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16.2c-16.5-.6-32.6-5.8-46.4-15.1-8.7-5.9-10-18.1-2.3-25.2l12-11.3c5.4-5.1 13.3-5.4 19.7-1.6 6.1 3.6 12.9 5.4 19.9 5.4h45c11.3 0 20.5-10.5 20.5-23.4 0-10.6-6.3-19.9-15.2-22.7L205 268c-29-8.8-49.2-37-49.2-68.6 0-39.3 30.6-71.3 68.2-71.4v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16.2c16.5.6 32.6 5.8 46.4 15.1 8.7 5.9 10 18.1 2.3 25.2l-12 11.3c-5.4 5.1-13.3 5.4-19.7 1.6-6.1-3.6-12.9-5.4-19.9-5.4h-45c-11.3 0-20.5 10.5-20.5 23.4 0 10.6 6.3 19.9 15.2 22.7l72 21.9c29 8.8 49.2 37 49.2 68.6.2 39.3-30.4 71.2-68 71.4z\"]\n};\nvar faUsdSquare = {\n prefix: 'fas',\n iconName: 'usd-square',\n icon: [448, 512, [], \"f2e9\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM248 384v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16.2c-16.5-.6-32.6-5.8-46.4-15.1-8.7-5.9-10-18.1-2.3-25.2l12-11.3c5.4-5.1 13.3-5.4 19.7-1.6 6.1 3.6 12.9 5.4 19.9 5.4h45c11.3 0 20.5-10.5 20.5-23.4 0-10.6-6.3-19.9-15.2-22.7L181 268c-29-8.8-49.2-37-49.2-68.6 0-39.3 30.6-71.3 68.2-71.4v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16.2c16.5.6 32.6 5.8 46.4 15.1 8.7 5.9 10 18.1 2.3 25.2l-12 11.3c-5.4 5.1-13.3 5.4-19.7 1.6-6.1-3.6-12.9-5.4-19.9-5.4h-45c-11.3 0-20.5 10.5-20.5 23.4 0 10.6 6.3 19.9 15.2 22.7l72 21.9c29 8.8 49.2 37 49.2 68.6.2 39.3-30.4 71.2-68 71.4z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserAlien = {\n prefix: 'fas',\n iconName: 'user-alien',\n icon: [448, 512, [], \"e04a\", \"M352,384H317.61523c-19.65039,17.98828-39.01953,33.541-55.49023,45.84766a63.66049,63.66049,0,0,1-76.25.00195C169.4043,417.543,150.03516,401.98828,130.38477,384H96A95.99975,95.99975,0,0,0,0,480a32.00033,32.00033,0,0,0,32,32H416a32.00033,32.00033,0,0,0,32-32A95.99975,95.99975,0,0,0,352,384ZM205.0293,404.21484a31.66414,31.66414,0,0,0,37.9414,0C288.459,370.22266,400,277.51172,400,185.68359,400,70.31836,321.18164,0,224,0,126.791,0,48,70.31836,48,185.68359,48,277.51172,159.541,370.22266,205.0293,404.21484ZM240,252a60.00047,60.00047,0,0,1,60-60h24a12.0006,12.0006,0,0,1,12,12v8a60.00047,60.00047,0,0,1-60,60H252a12.0006,12.0006,0,0,1-12-12ZM112,212v-8a12.0006,12.0006,0,0,1,12-12h24a60.00047,60.00047,0,0,1,60,60v8a12.0006,12.0006,0,0,1-12,12H172A60.00047,60.00047,0,0,1,112,212Z\"]\n};\nvar faUserAlt = {\n prefix: 'fas',\n iconName: 'user-alt',\n icon: [512, 512, [], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\"]\n};\nvar faUserAltSlash = {\n prefix: 'fas',\n iconName: 'user-alt-slash',\n icon: [640, 512, [], \"f4fa\", \"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserChart = {\n prefix: 'fas',\n iconName: 'user-chart',\n icon: [640, 512, [], \"f6a3\", \"M208 352h-3.81c-13.93 4.83-28.64 8-44.19 8s-30.26-3.17-44.19-8H112C50.14 352 0 402.14 0 464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48 0-61.86-50.14-112-112-112zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288H307.76c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0zM160 320c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zm168.97-152.97c-9.37-9.37-24.57-9.37-33.94 0l-14.75 14.75c4.68 13.29 7.72 27.35 7.72 42.21 0 6.83-.98 13.41-2.02 19.95l26.02-26 55.03 55.03c9.37 9.37 24.57 9.37 33.94 0l72-72 24.3 24.3c11.34 11.34 30.73 3.31 30.73-12.73V124c0-6.63-5.37-12-12-12h-88.54c-16.04 0-24.07 19.39-12.73 30.73l24.3 24.3L384 222.06l-55.03-55.03z\"]\n};\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\"]\n};\nvar faUserCircle = {\n prefix: 'fas',\n iconName: 'user-circle',\n icon: [496, 512, [], \"f2bd\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\"]\n};\nvar faUserCog = {\n prefix: 'fas',\n iconName: 'user-cog',\n icon: [640, 512, [], \"f4fe\", \"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\"]\n};\nvar faUserCowboy = {\n prefix: 'fas',\n iconName: 'user-cowboy',\n icon: [448, 512, [], \"f8ea\", \"M438.47 97.8a18.2 18.2 0 0 0-21.92 5.2c-.43.57-44.81 61.59-192.55 61.59C77.12 164.57 32.4 104.21 31.46 103a18 18 0 0 0-21.79-5.37c-7.76 3.53-11.51 11.84-8.79 19.44.35 1 24.66 66 95.14 106.7v.23a128 128 0 0 0 256 0v-.22C422.47 183 446.77 118 447.13 117.07c2.69-7.54-1.03-15.69-8.66-19.27zM313.59 384H296.9a174.1 174.1 0 0 1-145.81 0H134.4A133.82 133.82 0 0 0 9.54 469.8c-7.88 20.39 8.53 42.2 30.4 42.2h368.11c21.87 0 38.28-21.81 30.4-42.2A133.82 133.82 0 0 0 313.59 384zm28.9-270.43C331.44 64.05 310.86 0 278.1 0c-10.33 0-19.55 4.45-27.3 10.47a42.42 42.42 0 0 1-52.08 0C191 4.45 181.75 0 171.42 0c-32.87 0-53.48 64.49-64.51 114.08C133 124 170.75 132.57 224 132.57c54.17 0 92.36-8.84 118.49-19z\"]\n};\nvar faUserCrown = {\n prefix: 'fas',\n iconName: 'user-crown',\n icon: [448, 512, [], \"f6a4\", \"M352 0l-64 32-64-32-64 32L96 0v96h256V0zm-38.4 304h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16H134.4C60.17 304 0 364.17 0 438.4V464c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-25.6c0-74.23-60.17-134.4-134.4-134.4zM224 272c70.69 0 128-57.31 128-128v-16H96v16c0 70.69 57.31 128 128 128z\"]\n};\nvar faUserEdit = {\n prefix: 'fas',\n iconName: 'user-edit',\n icon: [640, 512, [], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\"]\n};\nvar faUserFriends = {\n prefix: 'fas',\n iconName: 'user-friends',\n icon: [640, 512, [], \"f500\", \"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\"]\n};\nvar faUserHardHat = {\n prefix: 'fas',\n iconName: 'user-hard-hat',\n icon: [448, 512, [], \"f82c\", \"M88 176h272a8 8 0 0 0 8-8v-32a8 8 0 0 0-8-8h-8a112 112 0 0 0-68.4-103.2L256 80V16a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v64l-27.6-55.2A112 112 0 0 0 96 128h-8a8 8 0 0 0-8 8v32a8 8 0 0 0 8 8zm225.6 176h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.4 134.4 0 0 0 0 486.4 25.6 25.6 0 0 0 25.6 512h396.8a25.6 25.6 0 0 0 25.6-25.6A134.4 134.4 0 0 0 313.6 352zM224 320c65.22 0 118.44-48.94 126.39-112H97.61c7.95 63.06 61.17 112 126.39 112z\"]\n};\nvar faUserHeadset = {\n prefix: 'fas',\n iconName: 'user-headset',\n icon: [448, 512, [], \"f82d\", \"M320 352h-23.1a174.08 174.08 0 0 1-145.8 0H128A128 128 0 0 0 0 480a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32 128 128 0 0 0-128-128zM48 224a16 16 0 0 0 16-16v-16c0-88.22 71.78-160 160-160s160 71.78 160 160v16a80.09 80.09 0 0 1-80 80h-32a32 32 0 0 0-32-32h-32a32 32 0 0 0 0 64h96a112.14 112.14 0 0 0 112-112v-16C416 86.13 329.87 0 224 0S32 86.13 32 192v16a16 16 0 0 0 16 16zm160 0h32a64 64 0 0 1 55.41 32H304a48.05 48.05 0 0 0 48-48v-16a128 128 0 0 0-256 0c0 40.42 19.1 76 48.35 99.47-.06-1.17-.35-2.28-.35-3.47a64.07 64.07 0 0 1 64-64z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z\"]\n};\nvar faUserMd = {\n prefix: 'fas',\n iconName: 'user-md',\n icon: [448, 512, [], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\"]\n};\nvar faUserMdChat = {\n prefix: 'fas',\n iconName: 'user-md-chat',\n icon: [640, 512, [], \"f82e\", \"M104 424a24 24 0 1 0 24-24 24 24 0 0 0-24 24zm120-168A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 32.65v49A80.13 80.13 0 0 1 384 416v40a16 16 0 0 1-12.86 15.69L339 478.14a8 8 0 0 1-9.41-6.27l-3.14-15.69a8 8 0 0 1 6.28-9.41l19.27-3.86V416a48.08 48.08 0 0 0-57.57-47c-22.79 4.42-38.43 25.75-38.43 49v25l19.29 3.86a8 8 0 0 1 6.28 9.41l-3.14 15.69a8 8 0 0 1-9.41 6.27l-31.17-4.24A16 16 0 0 1 224 458.05V416a80.13 80.13 0 0 1 64-78.38v-46.1a172 172 0 0 1-121.42 2.69A111.51 111.51 0 0 0 144 289v81.6a56 56 0 1 1-32 0v-80.34C48.49 301 0 355.84 0 422.4V464a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48v-41.6c0-72.03-56.82-130.33-128-133.75zM512 0c-70.69 0-128 50.15-128 112 0 28.76 12.75 54.72 33.11 74.55a312.08 312.08 0 0 1-31.29 55.37 9.86 9.86 0 0 0-1.25 9.07c1.09 3.13 3.43 5 6.11 5 39.84 0 72.35-17.13 95.22-34.36A146 146 0 0 0 512 224c70.69 0 128-50.15 128-112S582.69 0 512 0z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserMusic = {\n prefix: 'fas',\n iconName: 'user-music',\n icon: [640, 512, [], \"f8eb\", \"M224 257A128 128 0 1 0 96 129a128 128 0 0 0 128 128zm64 176c0-54.9 48.34-99.39 114.45-109.72C378.72 302.2 347.82 289 313.59 289h-16.68a174.12 174.12 0 0 1-145.82 0h-16.68A134.43 134.43 0 0 0 0 423.41V465a48 48 0 0 0 48 48h282.42C304.13 492.81 288 464.66 288 433zM598.94 98.33l-96.53 28.51a32 32 0 0 0-22.41 30.5V361a148.76 148.76 0 0 0-48-8c-61.86 0-112 35.82-112 80s50.14 80 112 80 112-35.82 112-80V245.15l73-21.39a32 32 0 0 0 23-30.71V129a32 32 0 0 0-41.06-30.67z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [], \"f504\", \"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserRobot = {\n prefix: 'fas',\n iconName: 'user-robot',\n icon: [448, 512, [], \"e04b\", \"M17.99986,256H48V128H17.99986A17.9784,17.9784,0,0,0,0,146v92A17.97965,17.97965,0,0,0,17.99986,256Zm412-128H400V256h29.99985A17.97847,17.97847,0,0,0,448,238V146A17.97722,17.97722,0,0,0,429.99985,128ZM116,320H332a36.0356,36.0356,0,0,0,36-36V109a44.98411,44.98411,0,0,0-45-45H241.99985V18a18,18,0,1,0-36,0V64H125a44.98536,44.98536,0,0,0-45,45V284A36.03685,36.03685,0,0,0,116,320Zm188-48H272V240h32ZM288,128a32,32,0,1,1-32,32A31.99658,31.99658,0,0,1,288,128ZM208,240h32v32H208Zm-32,32H144V240h32ZM160,128a32,32,0,1,1-32,32A31.99658,31.99658,0,0,1,160,128ZM352,352H96A95.99975,95.99975,0,0,0,0,448v32a32.00033,32.00033,0,0,0,32,32h96V448a31.99908,31.99908,0,0,1,32-32H288a31.99908,31.99908,0,0,1,32,32v64h96a32.00033,32.00033,0,0,0,32-32V448A95.99975,95.99975,0,0,0,352,352ZM176,448a15.99954,15.99954,0,0,0-16,16v48h32V464A15.99954,15.99954,0,0,0,176,448Zm96,0a16,16,0,1,0,16,16A15.99954,15.99954,0,0,0,272,448Z\"]\n};\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\"]\n};\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\"]\n};\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\"]\n};\nvar faUserTimes = {\n prefix: 'fas',\n iconName: 'user-times',\n icon: [640, 512, [], \"f235\", \"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserUnlock = {\n prefix: 'fas',\n iconName: 'user-unlock',\n icon: [640, 512, [], \"e058\", \"M224,256A128,128,0,1,0,96,128,128,128,0,0,0,224,256Zm96,64a63.07,63.07,0,0,1,8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5H296.9a174.1,174.1,0,0,1-145.8,0H134.4A134.43,134.43,0,0,0,0,422.4V464a48,48,0,0,0,48,48H328.9a63.58,63.58,0,0,1-8.9-32Zm288-32H464V208.67c0-17.44,13.67-32.18,31.1-32.66A32,32,0,0,1,528,208a16,16,0,0,0,16,16h17a15,15,0,0,0,15-15h0c0-43.28-34-79.51-77.26-80.95A80,80,0,0,0,416,208v80H384a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H608a32,32,0,0,0,32-32V320A32,32,0,0,0,608,288ZM496,432a32,32,0,1,1,32-32A32,32,0,0,1,496,432Z\"]\n};\nvar faUserVisor = {\n prefix: 'fas',\n iconName: 'user-visor',\n icon: [448, 512, [], \"e04c\", \"M105.05859,174.653C123.72266,222.237,169.79492,256.05336,224,256.05336S324.27734,222.237,342.94141,174.653C357.168,171.401,368,159.2643,368,144.05336v-64a31.99909,31.99909,0,0,0-32-32H323.18164C299.7168,19.00649,264.25.05336,224,.05336s-75.7168,18.95313-99.18164,48H112a31.99909,31.99909,0,0,0-32,32v64C80,159.2643,90.832,171.401,105.05859,174.653ZM128,96.05336H320v32H128Zm185.59375,192h-16.6875a174.10379,174.10379,0,0,1-145.8125,0h-16.6875A134.44134,134.44134,0,0,0,0,422.45961v41.59375a48.01238,48.01238,0,0,0,48,48H400a48.01238,48.01238,0,0,0,48-48V422.45961A134.44134,134.44134,0,0,0,313.59375,288.05336Zm39.6875,159.79688A4.06431,4.06431,0,0,1,352,448.05336a4.01558,4.01558,0,0,1-3.26562-1.6875c-12.1875-17.1875-17.625-23.04687-19.85938-25.03125a5.72835,5.72835,0,0,0-1.375.375c-3.29688,1-12.1875,5.48438-37.04688,24.8125a4.1133,4.1133,0,0,1-4.39062.34375,4.03445,4.03445,0,0,1-2.04688-3.92187c3.875-36.39063,15.875-66.5,35.70313-89.5a4.30685,4.30685,0,0,1,3.14063-1.39063,3.97907,3.97907,0,0,1,3.0625,1.5625c18.8125,24.59375,28.92187,54.96875,30.07812,90.3125A3.992,3.992,0,0,1,353.28125,447.85024Z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersClass = {\n prefix: 'fas',\n iconName: 'users-class',\n icon: [640, 512, [], \"f63d\", \"M256 288c0 35.35 28.66 64 64 64 35.35 0 64-28.65 64-64s-28.65-64-64-64c-35.34 0-64 28.65-64 64zm224 0c0 35.35 28.66 64 64 64 35.35 0 64-28.65 64-64s-28.65-64-64-64c-35.34 0-64 28.65-64 64zM96 352c35.35 0 64-28.65 64-64s-28.65-64-64-64c-35.34 0-64 28.65-64 64s28.66 64 64 64zm480 32h-64c-35.34 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32v-32c0-35.35-28.66-64-64-64zm-224 0h-64c-35.34 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32v-32c0-35.35-28.66-64-64-64zm-224 0H64c-35.34 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32v-32c0-35.35-28.66-64-64-64zM96 64h448v128c24.68 0 46.98 9.62 64 24.97V49.59C608 22.25 586.47 0 560 0H80C53.53 0 32 22.25 32 49.59v167.38C49.02 201.62 71.33 192 96 192V64z\"]\n};\nvar faUsersCog = {\n prefix: 'fas',\n iconName: 'users-cog',\n icon: [640, 512, [], \"f509\", \"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersCrown = {\n prefix: 'fas',\n iconName: 'users-crown',\n icon: [640, 512, [], \"f6a5\", \"M96 224c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm224 32c53.02 0 96-42.98 96-96v-16H224v16c0 53.02 42.98 96 96 96zm256 0h-64c-17.59 0-33.5 7.11-45.07 18.59 40.27 22.06 68.86 62.03 75.13 109.41H608c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-402.93 18.59C161.5 263.11 145.59 256 128 256H64c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h65.94c6.27-47.38 34.85-87.34 75.13-109.41zM544 224c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm-147.2 64h-8.31c-20.84 9.96-43.89 16-68.49 16s-47.64-6.04-68.49-16h-8.31C179.58 288 128 339.58 128 403.2V432c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-28.8c0-63.62-51.58-115.2-115.2-115.2zM416 32l-48 24-48-24-48 24-48-24v80h192V32z\"]\n};\nvar faUsersMedical = {\n prefix: 'fas',\n iconName: 'users-medical',\n icon: [640, 512, [], \"f830\", \"M96 224a64 64 0 1 0-64-64 64.06 64.06 0 0 0 64 64zm224 32a112 112 0 1 0-112-112 111.94 111.94 0 0 0 112 112zm32 96c0-19.1 3.92-37.17 10.09-54.17A152.75 152.75 0 0 1 320 304c-24.6 0-47.6-6-68.5-16h-8.3A115.23 115.23 0 0 0 128 403.2V432a48 48 0 0 0 48 48h241c-39.22-29.19-65-75.47-65-128zm-178.9-77.4A63.81 63.81 0 0 0 128 256H64a64.06 64.06 0 0 0-64 64v32a32 32 0 0 0 32 32h65.9a146.64 146.64 0 0 1 75.2-109.4zM512 224a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm64 144a5.33 5.33 0 0 1-5.33 5.33h-37.34v37.34A5.33 5.33 0 0 1 528 416h-32a5.33 5.33 0 0 1-5.33-5.33v-37.34h-37.34A5.33 5.33 0 0 1 448 368v-32a5.33 5.33 0 0 1 5.33-5.33h37.34v-37.34A5.33 5.33 0 0 1 496 288h32a5.33 5.33 0 0 1 5.33 5.33v37.34h37.34A5.33 5.33 0 0 1 576 336z\"]\n};\nvar faUsersSlash = {\n prefix: 'fas',\n iconName: 'users-slash',\n icon: [640, 512, [], \"e073\", \"M132.65,212.32,36.21,137.78A63.4,63.4,0,0,0,32,160a63.84,63.84,0,0,0,100.65,52.32Zm40.44,62.28A63.79,63.79,0,0,0,128,256H64A64.06,64.06,0,0,0,0,320v32a32,32,0,0,0,32,32H97.91A146.62,146.62,0,0,1,173.09,274.6ZM544,224a64,64,0,1,0-64-64A64.06,64.06,0,0,0,544,224ZM500.56,355.11a114.24,114.24,0,0,0-84.47-65.28L361,247.23c41.46-16.3,71-55.92,71-103.23A111.93,111.93,0,0,0,320,32c-57.14,0-103.69,42.83-110.6,98.08L45.46,3.38A16,16,0,0,0,23,6.19L3.37,31.46A16,16,0,0,0,6.18,53.91L594.53,508.63A16,16,0,0,0,617,505.82l19.64-25.27a16,16,0,0,0-2.81-22.45ZM128,403.21V432a48,48,0,0,0,48,48H464a47.45,47.45,0,0,0,12.57-1.87L232,289.13C173.74,294.83,128,343.42,128,403.21ZM576,256H512a63.79,63.79,0,0,0-45.09,18.6A146.29,146.29,0,0,1,542,384h66a32,32,0,0,0,32-32V320A64.06,64.06,0,0,0,576,256Z\"]\n};\nvar faUtensilFork = {\n prefix: 'fas',\n iconName: 'utensil-fork',\n icon: [512, 512, [], \"f2e3\", \"M469.5 119.4L356.3 232.6c-3.8 1.7-14.7-9.5-12.9-12.9 19.2-21.5 105.3-117.9 107.3-120.1 14.1-19.3-19.1-52.5-38.4-38.4-2.3 2-98.7 88.1-120.1 107.3-3.4 1.8-14.6-9.1-12.9-12.9L392.5 42.4c15.4-19.4-18.7-53-37.5-39.3-4.4 3.1-88.6 62.8-116.2 90.3-41.8 41.8-49.6 94.1-28.7 139.1L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l180.5-201.2c45 20.9 97.2 13.3 139.1-28.7 27.6-27.6 87.3-111.8 90.4-116.2 13.7-18.7-19.9-52.7-39.3-37.4z\"]\n};\nvar faUtensilKnife = {\n prefix: 'fas',\n iconName: 'utensil-knife',\n icon: [512, 512, [], \"f2e4\", \"M424.9 8.7L20.8 412.8c-11.5 11.5-11.5 30.3 0 41.8l48.8 48.8c12.2 12.2 32.2 11.4 43.4-1.8l148.2-174.3C504.1 357 538.5 80.5 466.7 8.7c-11.6-11.6-30.3-11.6-41.8 0z\"]\n};\nvar faUtensilSpoon = {\n prefix: 'fas',\n iconName: 'utensil-spoon',\n icon: [512, 512, [], \"f2e5\", \"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\"]\n};\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [416, 512, [], \"f2e7\", \"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\"]\n};\nvar faUtensilsAlt = {\n prefix: 'fas',\n iconName: 'utensils-alt',\n icon: [576, 512, [], \"f2e6\", \"M53.8 8.6L293 230.7c28.8-25.5 18-16 48.4-42.9-21.4-36.3-17.2-75.1 16.1-108.4C379.3 57.7 452.3 6 456.2 3.2c16.1-11.8 37.6 11.5 24.8 26.2l-81.2 93.8c-1.3 1.5 3 6 4.7 4.6L501.4 49c15.1-12.3 37.9 10.2 25.5 25.5l-78.8 96.9c-1.3 1.6 3.1 6 4.6 4.6l93.8-81.2c14.7-12.7 38 8.7 26.2 24.9-2.8 4-54.5 76.9-76.2 98.6-34.2 34.3-73.5 36.9-108.5 16.2-26.6 30.1-14.5 16.3-41 46.3l154.7 143.6c13.3 12.3 13.7 33.3.8 46.1l-32 32c-12.8 12.8-33.6 12.4-46-.7C405.4 479.2 223.9 265.3 216 256 56 256 0 165.9 0 32.1 0 4.2 33.3-10.4 53.8 8.6zm19.6 462l32 32c13 13 34.4 12.4 46.6-1.4l117.5-132.7-56.6-66.8L74.8 424c-13.8 12.3-14.5 33.6-1.4 46.6z\"]\n};\nvar faVacuum = {\n prefix: 'fas',\n iconName: 'vacuum',\n icon: [640, 512, [], \"e04d\", \"M143.27,256,102.12,448H48A48,48,0,0,0,0,496a16,16,0,0,0,16,16H176a16,16,0,0,0,16-16V464a16,16,0,0,0-16-16h-8.41l41.14-192ZM640,128A128.14,128.14,0,0,0,512,0H301.61C241.64,0,189,42.56,176.44,101.19L150.12,224h65.47L239,114.59A64.33,64.33,0,0,1,301.61,64H512a64,64,0,0,1,13.47,126.51A191.27,191.27,0,0,0,384,128a32,32,0,0,0-32,32V321.62A109.65,109.65,0,0,1,368,320a111.83,111.83,0,0,1,78.14,192H512a64,64,0,0,0,64-64V320a191.27,191.27,0,0,0-15.06-74.65C607.17,226.11,640,181.13,640,128ZM368,352a80,80,0,1,0,80,80A80,80,0,0,0,368,352Zm0,96a16,16,0,1,1,16-16A16,16,0,0,1,368,448Z\"]\n};\nvar faVacuumRobot = {\n prefix: 'fas',\n iconName: 'vacuum-robot',\n icon: [512, 512, [], \"e04e\", \"M431.36,80.64c-96.85-96.85-253.87-96.85-350.72,0s-96.85,253.87,0,350.72,253.87,96.85,350.72,0S528.21,177.49,431.36,80.64ZM199.43,403.08a16,16,0,0,1-22.63,0L108.92,335.2a16,16,0,0,1,22.63-22.63l67.88,67.88A16,16,0,0,1,199.43,403.08Zm67.88-22.63a16,16,0,0,1-22.62,0L131.55,267.31a16,16,0,0,1,22.63-22.62L267.31,357.82A16,16,0,0,1,267.31,380.45Zm22.63-67.88a16,16,0,0,1-22.63,0l-67.88-67.88a16,16,0,0,1,22.63-22.63l67.88,67.88A16,16,0,0,1,289.94,312.57Zm90.51,67.88a16,16,0,0,1-22.62-22.62c56.14-56.16,56.14-147.5,0-203.66s-147.5-56.15-203.66,0a16,16,0,0,1-22.62-22.62c68.62-68.63,180.28-68.63,248.9,0S449.08,311.83,380.45,380.45Z\"]\n};\nvar faValueAbsolute = {\n prefix: 'fas',\n iconName: 'value-absolute',\n icon: [512, 512, [], \"f6a6\", \"M48 32H16C7.16 32 0 39.16 0 48v416c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16zm448 0h-32c-8.84 0-16 7.16-16 16v416c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16zM377.3 150.87l-16.17-16.17c-8.93-8.93-23.41-8.93-32.35 0L256 207.48l-72.78-72.78c-8.93-8.93-23.41-8.93-32.35 0l-16.17 16.17c-8.93 8.93-8.93 23.41 0 32.35L207.48 256l-72.78 72.78c-8.93 8.93-8.93 23.41 0 32.35l16.17 16.17c8.93 8.93 23.41 8.93 32.35 0L256 304.52l72.78 72.78c8.93 8.93 23.41 8.93 32.35 0l16.17-16.17c8.93-8.93 8.93-23.41 0-32.35L304.52 256l72.78-72.78c8.93-8.93 8.93-23.42 0-32.35z\"]\n};\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [512, 512, [], \"f5cb\", \"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [576, 512, [], \"f228\", \"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faVest = {\n prefix: 'fas',\n iconName: 'vest',\n icon: [448, 512, [], \"e085\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a24.021,24.021,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A24.021,24.021,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.564A151.518,151.518,0,0,0,224,86.234a151.55,151.55,0,0,0,73.812-19.672L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM131.312,371.312l-48,48a16,16,0,0,1-22.624-22.624l48-48a16,16,0,0,1,22.624,22.624Zm256,48a15.992,15.992,0,0,1-22.624,0l-48-48a16,16,0,0,1,22.624-22.624l48,48A15.993,15.993,0,0,1,387.312,419.312Z\"]\n};\nvar faVestPatches = {\n prefix: 'fas',\n iconName: 'vest-patches',\n icon: [448, 512, [], \"e086\", \"M437.252,239.877,384,160V32A32,32,0,0,0,352,0H320a23.982,23.982,0,0,0-13.312,4.031l-25,16.672a103.794,103.794,0,0,1-115.376,0l-25-16.672A23.982,23.982,0,0,0,128,0H96A32,32,0,0,0,64,32V160L10.748,239.877A64,64,0,0,0,0,275.377V480a32,32,0,0,0,32,32H192V288a31.987,31.987,0,0,1,1.643-10.119L207.135,237.4,150.188,66.561A151.579,151.579,0,0,0,224,86.234a151.565,151.565,0,0,0,73.811-19.668L224,288V512H416a32,32,0,0,0,32-32V275.377A64,64,0,0,0,437.252,239.877ZM63.5,272.484a12.01,12.01,0,0,1,17-16.968l15.5,15.5,15.5-15.5a12.01,12.01,0,0,1,17,16.968L112.984,288,128.5,303.516a12.01,12.01,0,0,1-17,16.968L96,304.984l-15.5,15.5a12.01,12.01,0,0,1-17-16.968L79.016,288ZM96,456a40,40,0,1,1,40-40A40,40,0,0,1,96,456ZM359.227,335.785,310.7,336a6.671,6.671,0,0,1-6.7-6.7l.215-48.574A24.987,24.987,0,0,1,331.43,256.1c12.789,1.162,22.129,12.619,22.056,25.419l-.037,5.057,5.051-.037c12.826-.035,24.236,9.275,25.4,22.076A24.948,24.948,0,0,1,359.227,335.785Z\"]\n};\nvar faVhs = {\n prefix: 'fas',\n iconName: 'vhs',\n icon: [512, 512, [], \"f8ec\", \"M496 64H16A16 16 0 0 0 0 80v48h512V80a16 16 0 0 0-16-16zM0 400a48 48 0 0 0 48 48h416a48 48 0 0 0 48-48V160H0zm384-50.94a47.73 47.73 0 0 0 0-90.12V224h48.86C452 245.26 464 273.12 464 304s-12 58.73-31.14 80H384zM192 224h128v160H192zm-112.86 0H128v34.94a47.73 47.73 0 0 0 0 90.12V384H79.14C60 362.73 48 334.87 48 304s12-58.74 31.14-80z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\"]\n};\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [640, 512, [], \"f493\", \"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [], \"f03d\", \"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\"]\n};\nvar faVideoPlus = {\n prefix: 'fas',\n iconName: 'video-plus',\n icon: [576, 512, [], \"f4e1\", \"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zM304 264c0 8.8-7.2 16-16 16h-72v72c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-72H96c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h72v-72c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v72h72c8.8 0 16 7.2 16 16v16zm272-136.5v256.9c0 25.5-29.1 40.4-50.4 25.8L416 334.7V177.3l109.6-75.5c21.3-14.7 50.4.3 50.4 25.7z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\"]\n};\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z\"]\n};\nvar faViolin = {\n prefix: 'fas',\n iconName: 'violin',\n icon: [640, 512, [], \"f8ed\", \"M347.31 16L336 4.69a16 16 0 0 0-22.62 0L4.69 313.38a16 16 0 0 0 0 22.62L16 347.31a16 16 0 0 0 22.62 0L347.31 38.62a16 16 0 0 0 0-22.62zM520 48a24 24 0 1 0-24-24 24 24 0 0 0 24 24zM237.61 415.84l-13.45-13.45a16 16 0 0 0-20.19-2l-68.84 45.9a16 16 0 0 0-2.44 24.62l36.4 36.4a16 16 0 0 0 24.62-2.44l45.9-68.87a16 16 0 0 0-2-20.16zM472 96a24 24 0 1 0-24-24 24 24 0 0 0 24 24zm-14.23 131.48L635.31 49.94a16 16 0 0 0 0-22.63L612.69 4.69a16 16 0 0 0-22.63 0L412.52 182.23c-12.17-8.77-25.53-15.76-40.15-19.16-32.87-7.65-65.69-.93-88.56 21.05A79.09 79.09 0 0 1 288 208.4a79.78 79.78 0 0 1-123.28 67.08 89.85 89.85 0 0 0-7.16 6c-31.25 31.16-36.67 79.33-19.54 124.47l48.23-32.16a48 48 0 0 1 60.57 6l13.45 13.45a48.15 48.15 0 0 1 6 60.57L234.11 502c45.12 17.09 93.26 11.63 124.41-19.53a89.77 89.77 0 0 0 6.23-7.48A79.27 79.27 0 0 1 455.87 356c21.92-22.84 28.6-55.6 21-88.4-3.36-14.6-10.34-27.95-19.1-40.12zM616 96a24 24 0 1 0 24 24 24 24 0 0 0-24-24zm-48 48a24 24 0 1 0 24 24 24 24 0 0 0-24-24z\"]\n};\nvar faVirus = {\n prefix: 'fas',\n iconName: 'virus',\n icon: [512, 512, [], \"e074\", \"M483.55,227.55H462c-50.68,0-76.07-61.27-40.23-97.11L437,115.19A28.44,28.44,0,0,0,396.8,75L381.56,90.22c-35.84,35.83-97.11,10.45-97.11-40.23V28.44a28.45,28.45,0,0,0-56.9,0V50c0,50.68-61.27,76.06-97.11,40.23L115.2,75A28.44,28.44,0,0,0,75,115.19l15.25,15.25c35.84,35.84,10.45,97.11-40.23,97.11H28.45a28.45,28.45,0,1,0,0,56.89H50c50.68,0,76.07,61.28,40.23,97.12L75,396.8A28.45,28.45,0,0,0,115.2,437l15.24-15.25c35.84-35.84,97.11-10.45,97.11,40.23v21.54a28.45,28.45,0,0,0,56.9,0V462c0-50.68,61.27-76.07,97.11-40.23L396.8,437A28.45,28.45,0,0,0,437,396.8l-15.25-15.24c-35.84-35.84-10.45-97.12,40.23-97.12h21.54a28.45,28.45,0,1,0,0-56.89ZM224,272a48,48,0,1,1,48-48A48,48,0,0,1,224,272Zm80,56a24,24,0,1,1,24-24A24,24,0,0,1,304,328Z\"]\n};\nvar faVirusSlash = {\n prefix: 'fas',\n iconName: 'virus-slash',\n icon: [640, 512, [], \"e075\", \"M114,227.6H92.4C76.7,227.6,64,240.3,64,256s12.7,28.4,28.4,28.4H114c50.7,0,76.1,61.3,40.2,97.1L139,396.8 c-11.5,10.7-12.2,28.7-1.6,40.2s28.7,12.2,40.2,1.6c0.5-0.5,1.1-1,1.6-1.6l15.2-15.2c35.8-35.8,97.1-10.5,97.1,40.2v21.5 c0,15.7,12.8,28.4,28.5,28.4c15.7,0,28.4-12.7,28.4-28.4V462c0-26.6,17-45.9,38.2-53.4l-244.5-189 C133.7,224.7,123.9,227.5,114,227.6z M617,505.8l19.6-25.3c5.4-7,4.2-17-2.8-22.5L470.6,332c4.2-25.4,24.9-47.5,55.4-47.5h21.5 c15.7,0,28.4-12.7,28.4-28.4s-12.7-28.4-28.4-28.4H526c-50.7,0-76.1-61.3-40.2-97.1l15.2-15.3c10.7-11.5,10-29.5-1.6-40.2 c-10.9-10.1-27.7-10.1-38.6,0l-15.2,15.2c-35.8,35.8-97.1,10.5-97.1-40.2V28.5C348.4,12.7,335.7,0,320,0 c-15.7,0-28.4,12.7-28.4,28.4V50c0,50.7-61.3,76.1-97.1,40.2L179.2,75c-11.1-11.1-29.4-10.6-40.5,0.5L45.5,3.4 c-7-5.4-17-4.2-22.5,2.8L3.4,31.5c-5.4,7-4.2,17,2.8,22.5l588.4,454.7C601.5,514.1,611.6,512.8,617,505.8z M335.4,227.5l-62.9-48.6 c4.9-1.8,10.2-2.8,15.4-2.9c26.5,0,48,21.5,48,48C336,225.2,335.5,226.3,335.4,227.5z\"]\n};\nvar faViruses = {\n prefix: 'fas',\n iconName: 'viruses',\n icon: [640, 512, [], \"e076\", \"M624,352H611.88c-28.51,0-42.79-34.47-22.63-54.63l8.58-8.57a16,16,0,1,0-22.63-22.63l-8.57,8.58C546.47,294.91,512,280.63,512,252.12V240a16,16,0,0,0-32,0v12.12c0,28.51-34.47,42.79-54.63,22.63l-8.57-8.58a16,16,0,0,0-22.63,22.63l8.58,8.57c20.16,20.16,5.88,54.63-22.63,54.63H368a16,16,0,0,0,0,32h12.12c28.51,0,42.79,34.47,22.63,54.63l-8.58,8.57a16,16,0,1,0,22.63,22.63l8.57-8.58c20.16-20.16,54.63-5.88,54.63,22.63V496a16,16,0,0,0,32,0V483.88c0-28.51,34.47-42.79,54.63-22.63l8.57,8.58a16,16,0,1,0,22.63-22.63l-8.58-8.57C569.09,418.47,583.37,384,611.88,384H624a16,16,0,0,0,0-32ZM480,384a32,32,0,1,1,32-32A32,32,0,0,1,480,384ZM346.51,213.33h16.16a21.33,21.33,0,0,0,0-42.66H346.51c-38,0-57.05-46-30.17-72.84l11.43-11.44A21.33,21.33,0,0,0,297.6,56.23L286.17,67.66c-26.88,26.88-72.84,7.85-72.84-30.17V21.33a21.33,21.33,0,0,0-42.66,0V37.49c0,38-46,57.05-72.84,30.17L86.4,56.23A21.33,21.33,0,0,0,56.23,86.39L67.66,97.83c26.88,26.88,7.85,72.84-30.17,72.84H21.33a21.33,21.33,0,0,0,0,42.66H37.49c38,0,57.05,46,30.17,72.84L56.23,297.6A21.33,21.33,0,1,0,86.4,327.77l11.43-11.43c26.88-26.88,72.84-7.85,72.84,30.17v16.16a21.33,21.33,0,0,0,42.66,0V346.51c0-38,46-57.05,72.84-30.17l11.43,11.43a21.33,21.33,0,0,0,30.17-30.17l-11.43-11.43C289.46,259.29,308.49,213.33,346.51,213.33ZM160,192a32,32,0,1,1,32-32A32,32,0,0,1,160,192Zm80,32a16,16,0,1,1,16-16A16,16,0,0,1,240,224Z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faVolcano = {\n prefix: 'fas',\n iconName: 'volcano',\n icon: [512, 512, [], \"f770\", \"M160 144c12.9 0 24.8-3.9 34.8-10.4L224 192h64l29.2-58.4c10 6.5 21.9 10.4 34.8 10.4 35.3 0 64-28.7 64-64s-28.7-64-64-64c-15.8 0-30 5.9-41.2 15.4C299.6 12.7 279.4 0 256 0s-43.6 12.7-54.8 31.4C190 21.9 175.8 16 160 16c-35.3 0-64 28.7-64 64s28.7 64 64 64zm144.4 80h-96.8c-9.8 0-19.1 4.5-25.2 12.3l-55.6 71 13.2 16.5c9.8 12.2 30.3 12.2 40.1 0 10.8-13.5 26.8-21.3 44.1-21.6 17.2-1.5 33.6 7 44.8 20.1l31.6 36.8c9.8 11.4 29.2 11.4 39 0l45.1-52.6-55-70.2c-6.2-7.8-15.4-12.3-25.3-12.3zm201.1 236.8L404.7 332.1l-40.9 47.7c-11 12.8-27 20.2-43.8 20.2s-32.8-7.3-43.8-20.2L244.6 343c-4.9-5.7-12-9-19.5-9h-.4c-7.7.2-14.8 3.7-19.6 9.7-22.1 27.5-68.1 27.5-90.1 0l-8.4-10.6L6.5 460.8C-9.4 481.9 5.7 512 32.1 512H480c26.3 0 41.4-30.1 25.5-51.2z\"]\n};\nvar faVolleyballBall = {\n prefix: 'fas',\n iconName: 'volleyball-ball',\n icon: [512, 512, [], \"f45f\", \"M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\"]\n};\nvar faVolume = {\n prefix: 'fas',\n iconName: 'volume',\n icon: [480, 512, [], \"f6a8\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.53 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVolumeDown = {\n prefix: 'fas',\n iconName: 'volume-down',\n icon: [384, 512, [], \"f027\", \"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z\"]\n};\nvar faVolumeMute = {\n prefix: 'fas',\n iconName: 'volume-mute',\n icon: [512, 512, [], \"f6a9\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [256, 512, [], \"f026\", \"M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z\"]\n};\nvar faVolumeSlash = {\n prefix: 'fas',\n iconName: 'volume-slash',\n icon: [640, 512, [], \"f2e2\", \"M633.82 458.1l-69-53.33C592.42 360.8 608 309.68 608 256c0-95.33-47.73-183.58-127.65-236.03-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 42.78-11.96 83.59-33.22 119.06l-38.12-29.46C503.49 318.68 512 288.06 512 256c0-63.09-32.06-122.09-85.77-156.16-11.19-7.09-26.03-3.8-33.12 7.41-7.09 11.2-3.78 26.03 7.41 33.13C440.27 165.59 464 209.44 464 256c0 21.21-5.03 41.57-14.2 59.88l-39.56-30.58c3.38-9.35 5.76-19.07 5.76-29.3 0-31.88-17.53-61.33-45.77-76.88-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61 11.76 6.46 19.12 18.18 20.4 31.06L288 190.82V88.02c0-21.46-25.96-31.98-40.97-16.97l-49.71 49.7L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM32 184v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V352.6L43.76 163.84C36.86 168.05 32 175.32 32 184z\"]\n};\nvar faVolumeUp = {\n prefix: 'fas',\n iconName: 'volume-up',\n icon: [576, 512, [], \"f028\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVoteNay = {\n prefix: 'fas',\n iconName: 'vote-nay',\n icon: [640, 512, [], \"f771\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM235.1 157.1c-6.2-6.2-6.2-16.4 0-22.6l11.3-11.3c6.2-6.2 16.4-6.2 22.6 0l50.9 50.9 50.9-50.9c6.2-6.2 16.4-6.2 22.6 0l11.3 11.3c6.2 6.2 6.2 16.4 0 22.6L353.9 208l50.9 50.9c6.2 6.2 6.2 16.4 0 22.6l-11.3 11.3c-6.2 6.2-16.4 6.2-22.6 0L320 241.9l-50.9 50.9c-6.2 6.2-16.4 6.2-22.6 0l-11.3-11.3c-6.2-6.2-6.2-16.4 0-22.6l50.9-50.9-51-50.9z\"]\n};\nvar faVoteYea = {\n prefix: 'fas',\n iconName: 'vote-yea',\n icon: [640, 512, [], \"f772\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z\"]\n};\nvar faWagonCovered = {\n prefix: 'fas',\n iconName: 'wagon-covered',\n icon: [640, 512, [], \"f8ee\", \"M224,224V92.88c0-36.88-25.33-68.15-59.43-73.37L39.55.39c-26-4-46.53,23.34-37.3,49.69L70.78,224ZM600.45.39l-125,19.12C441.33,24.73,416,56,416,92.88V224H569.22L637.75,50.08C647,23.73,626.48-3.59,600.45.39ZM384,56a40,40,0,0,0-40-40H296a40,40,0,0,0-40,40V224H384ZM560,256H80a16,16,0,0,0-16,16v32a16,16,0,0,0,16,16H97.79c-.31.3-.68.5-1,.8A112,112,0,1,0,286.47,416h67.06A111.85,111.85,0,1,0,543.2,320.8c-.31-.3-.68-.5-1-.8H560a16,16,0,0,0,16-16V272A16,16,0,0,0,560,256ZM160,461.74A62.48,62.48,0,0,1,114.26,416H160ZM160,384H114.26A62.44,62.44,0,0,1,160,338.26Zm61.25,61.25A63.43,63.43,0,0,1,192,461.74V416h45.74A63.43,63.43,0,0,1,221.25,445.25ZM192,384V338.26A62.44,62.44,0,0,1,237.74,384Zm256,77.74A62.48,62.48,0,0,1,402.26,416H448ZM448,384H402.26A62.44,62.44,0,0,1,448,338.26Zm61.25,61.25A63.43,63.43,0,0,1,480,461.74V416h45.74A63.34,63.34,0,0,1,509.25,445.25ZM480,384V338.26A62.44,62.44,0,0,1,525.74,384Z\"]\n};\nvar faWalker = {\n prefix: 'fas',\n iconName: 'walker',\n icon: [448, 512, [], \"f831\", \"M416 392.88V96a96 96 0 0 0-96-96H190.66A95.62 95.62 0 0 0 96 80L.24 487.77a16 16 0 0 0 13 18.51l31.54 5.48a16 16 0 0 0 18.5-13L127.81 224H352v168.88a64 64 0 1 0 64 0zM352 160H142.83l16.26-69.25A31.91 31.91 0 0 1 190.66 64H320a32 32 0 0 1 32 32zm32 304a16 16 0 1 1 16-16 16 16 0 0 1-16 16z\"]\n};\nvar faWalkieTalkie = {\n prefix: 'fas',\n iconName: 'walkie-talkie',\n icon: [384, 512, [], \"f8ef\", \"M352 96h-32V80a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v16h-32V80a16 16 0 0 0-16-16h-32a16 16 0 0 0-16 16v16h-48V16A16 16 0 0 0 96 0H80a16 16 0 0 0-16 16v80H32a32.09 32.09 0 0 0-32 32v178.74a32 32 0 0 0 9.37 22.63L32 352v112a48 48 0 0 0 48 48h224a48 48 0 0 0 48-48V352l22.63-22.63a32 32 0 0 0 9.37-22.63V128a32.09 32.09 0 0 0-32-32zm-64 216a8 8 0 0 1-8 8H104a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h176a8 8 0 0 1 8 8zm0-64a8 8 0 0 1-8 8H104a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h176a8 8 0 0 1 8 8zm0-64a8 8 0 0 1-8 8H104a8 8 0 0 1-8-8v-16a8 8 0 0 1 8-8h176a8 8 0 0 1 8 8z\"]\n};\nvar faWalking = {\n prefix: 'fas',\n iconName: 'walking',\n icon: [320, 512, [], \"f554\", \"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faWand = {\n prefix: 'fas',\n iconName: 'wand',\n icon: [512, 512, [], \"f72a\", \"M400 192c8.84 0 16-7.16 16-16v-27.96l91.87-101.83c5.72-6.32 5.48-16.02-.55-22.05L487.84 4.69c-6.03-6.03-15.73-6.27-22.05-.55L186.6 256H144c-8.84 0-16 7.16-16 16v36.87L10.53 414.84c-13.57 12.28-14.1 33.42-1.16 46.36l41.43 41.43c12.94 12.94 34.08 12.41 46.36-1.16L376.34 192H400z\"]\n};\nvar faWandMagic = {\n prefix: 'fas',\n iconName: 'wand-magic',\n icon: [512, 512, [], \"f72b\", \"M80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.34 0 80l53.34 26.67L80 160zm144-64l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zm234.66 245.33L432 288l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67zM400 192c8.84 0 16-7.16 16-16v-27.96l91.87-101.83c5.72-6.32 5.48-16.02-.55-22.05L487.84 4.69c-6.03-6.03-15.73-6.27-22.05-.55L186.6 256H144c-8.84 0-16 7.16-16 16v36.87L10.53 414.84c-13.57 12.28-14.1 33.42-1.16 46.36l41.43 41.43c12.94 12.94 34.08 12.41 46.36-1.16L376.34 192H400z\"]\n};\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\"]\n};\nvar faWarehouseAlt = {\n prefix: 'fas',\n iconName: 'warehouse-alt',\n icon: [640, 512, [], \"f495\", \"M610.5 117L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V208c0-8.8 7.2-16 16-16h480c8.8 0 16 7.2 16 16v296c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3zM304 416H144c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h160c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm192 0H368c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zM304 288H144c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h160c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faWasher = {\n prefix: 'fas',\n iconName: 'washer',\n icon: [446, 512, [], \"f898\", \"M384 0H64A64 64 0 0 0 0 64v416a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a64 64 0 0 0-64-64zM184 64a24 24 0 1 1-24 24 24 24 0 0 1 24-24zM64 88a24 24 0 1 1 24 24 24 24 0 0 1-24-24zm160 360a144 144 0 1 1 144-144 144 144 0 0 1-144 144zm36.87-163.66a51.23 51.23 0 0 1-73.74 0 51.79 51.79 0 0 1-73.24 1A110.76 110.76 0 0 0 112 304a112 112 0 0 0 224 0 110.76 110.76 0 0 0-1.89-18.69 51.79 51.79 0 0 1-73.24-1z\"]\n};\nvar faWatch = {\n prefix: 'fas',\n iconName: 'watch',\n icon: [384, 512, [], \"f2e1\", \"M192 80c97.2 0 176 78.8 176 176s-78.8 176-176 176S16 353.2 16 256 94.8 80 192 80m0-24c47.4 0 92.4 16.6 128 46.3V24c0-13.3-10.7-24-24-24H88C74.7 0 64 10.7 64 24v78.3C99.6 72.6 144.5 56 192 56zm0 400c-47.5 0-92.4-16.7-128-46.3V488c0 13.3 10.7 24 24 24h208c13.3 0 24-10.7 24-24v-78.3c-35.6 29.7-80.6 46.3-128 46.3zm53-130.3l18.8-25.9c3.9-5.4 2.7-12.9-2.6-16.8L220 253v-93c0-6.6-5.4-12-12-12h-32c-6.6 0-12 5.4-12 12v115.4c0 3.8 1.8 7.4 4.9 9.7l59.3 43.2c5.4 4 12.9 2.8 16.8-2.6z\"]\n};\nvar faWatchCalculator = {\n prefix: 'fas',\n iconName: 'watch-calculator',\n icon: [384, 512, [], \"f8f0\", \"M320 80H64a64 64 0 0 0-64 64v224a64 64 0 0 0 64 64h256a64 64 0 0 0 64-64V144a64 64 0 0 0-64-64zM120 368a8 8 0 0 1-8 8H80a8 8 0 0 1-8-8v-32a8 8 0 0 1 8-8h32a8 8 0 0 1 8 8zm0-96a8 8 0 0 1-8 8H80a8 8 0 0 1-8-8v-32a8 8 0 0 1 8-8h32a8 8 0 0 1 8 8zm96 96a8 8 0 0 1-8 8h-32a8 8 0 0 1-8-8v-32a8 8 0 0 1 8-8h32a8 8 0 0 1 8 8zm0-96a8 8 0 0 1-8 8h-32a8 8 0 0 1-8-8v-32a8 8 0 0 1 8-8h32a8 8 0 0 1 8 8zm96 96a8 8 0 0 1-8 8h-32a8 8 0 0 1-8-8v-32a8 8 0 0 1 8-8h32a8 8 0 0 1 8 8zm0-96a8 8 0 0 1-8 8h-32a8 8 0 0 1-8-8v-32a8 8 0 0 1 8-8h32a8 8 0 0 1 8 8zm0-96a8 8 0 0 1-8 8H80a8 8 0 0 1-8-8v-32a8 8 0 0 1 8-8h224a8 8 0 0 1 8 8zm8-144a32 32 0 0 0-32-32H96a32 32 0 0 0-32 32v16h256zM64 480a32 32 0 0 0 32 32h192a32 32 0 0 0 32-32v-16H64z\"]\n};\nvar faWatchFitness = {\n prefix: 'fas',\n iconName: 'watch-fitness',\n icon: [384, 512, [], \"f63e\", \"M64 480c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-16H64v16zM320 32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v16h256V32zm0 48H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h256c35.35 0 64-28.65 64-64V144c0-35.35-28.65-64-64-64zm-33.43 182.21l-84.67 85.64a13.89 13.89 0 0 1-19.8 0l-84.67-85.64c-24.6-24.88-23.16-66.13 4.33-89.08 23.96-20.02 59.65-16.42 81.62 5.81l8.62 8.72 8.62-8.72c21.97-22.23 57.66-25.82 81.62-5.81 27.49 22.96 28.93 64.21 4.33 89.08z\"]\n};\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z\"]\n};\nvar faWaterLower = {\n prefix: 'fas',\n iconName: 'water-lower',\n icon: [576, 512, [], \"f774\", \"M562.1 447.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zM276 219c6.6 6.6 17.4 6.6 24 0l96.4-95.7c10.1-10.1 3-27.4-11.3-27.4H320V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v80h-65.2c-14.3 0-21.4 17.3-11.2 27.4L276 219z\"]\n};\nvar faWaterRise = {\n prefix: 'fas',\n iconName: 'water-rise',\n icon: [576, 512, [], \"f775\", \"M562.1 447.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zM190.8 128H256v80c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-80h65.2c14.3 0 21.4-17.3 11.2-27.4L300 5c-6.6-6.6-17.4-6.6-24 0l-96.4 95.7c-10.2 10-3 27.3 11.2 27.3z\"]\n};\nvar faWaveSine = {\n prefix: 'fas',\n iconName: 'wave-sine',\n icon: [640, 512, [], \"f899\", \"M464 480c-90.52 0-132.84-107.94-173.8-212.31C258.64 187.2 222.88 96 176 96c-39.7 0-91.38 81.89-114.12 149a16 16 0 0 1-19.74 10.33l-30.72-9.21A16 16 0 0 1 .84 225.68C19.55 169.79 82.16 32 176 32c90.52 0 132.84 107.94 173.8 212.31C381.36 324.8 417.12 416 464 416c39.7 0 91.38-81.89 114.12-149a16 16 0 0 1 19.74-10.33l30.72 9.21a16 16 0 0 1 10.58 20.43C620.45 342.21 557.84 480 464 480z\"]\n};\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z\"]\n};\nvar faWaveTriangle = {\n prefix: 'fas',\n iconName: 'wave-triangle',\n icon: [640, 512, [], \"f89a\", \"M464 480h-.34a32 32 0 0 1-25.25-12.8l-263-350.65L53.73 281.88a16 16 0 0 1-22.46 2.7L6.12 264.82a16 16 0 0 1-2.7-22.47L150.84 44.23A32 32 0 0 1 176 32h.34a32 32 0 0 1 25.25 12.8l263 350.65 121.68-165.33a16 16 0 0 1 22.46-2.7l25.15 19.76a16 16 0 0 1 2.7 22.47L489.16 467.77A32 32 0 0 1 464 480z\"]\n};\nvar faWaveform = {\n prefix: 'fas',\n iconName: 'waveform',\n icon: [640, 512, [], \"f8f1\", \"M140 192h-24a16 16 0 0 0-16 16v96a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-96a16 16 0 0 0-16-16zm-96 32H20a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM236 96h-24a16 16 0 0 0-16 16v288a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V112a16 16 0 0 0-16-16zm384 128h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM524 64h-24a16 16 0 0 0-16 16v352a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm-96 64h-24a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V144a16 16 0 0 0-16-16zM332 0h-24a16 16 0 0 0-16 16v480a16 16 0 0 0 16 16h24a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16z\"]\n};\nvar faWaveformPath = {\n prefix: 'fas',\n iconName: 'waveform-path',\n icon: [640, 512, [], \"f8f2\", \"M624 263h-43.69l-12.65-84a24 24 0 0 0-23.1-20h-.12c-9.5 0-21.38 7.22-23.91 18.95L500.16 281 471.75 83.44a24 24 0 0 0-47.41-.39l-38.5 239-42.06-302.46a24 24 0 0 0-47.56 0l-42.06 302.47-38.5-239a24 24 0 0 0-47.41.39L139.84 281l-20.37-103a23.54 23.54 0 0 0-23.59-19h-.5a24 24 0 0 0-23 20l-12.69 84H16a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h81.19l23.34 117c2.56 11.89 11.94 19.42 24.13 19a24.08 24.08 0 0 0 23.09-20.45l25.5-178.08L232.34 491c1.82 11.13 12.63 19.8 23.85 20.05a24 24 0 0 0 23.59-20.61L320 200.7l40.22 289.71a24 24 0 0 0 47.44.54l39.09-242.5 25.5 178.13a24 24 0 0 0 23 20.42c12 0 21.84-8 24.19-18.95l23.34-117H624a16 16 0 0 0 16-16V279a16 16 0 0 0-16-16z\"]\n};\nvar faWebcam = {\n prefix: 'fas',\n iconName: 'webcam',\n icon: [448, 512, [], \"f832\", \"M402.29 438.6l-49.19-30.75c58.11-40.46 96.23-107.66 96.23-183.85 0-123.71-100.29-224-224-224s-224 100.29-224 224c0 76.19 38.12 143.39 96.23 183.85L48.37 438.6a32 32 0 0 0-15 27.14V480a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32v-14.26a32 32 0 0 0-15.08-27.14zm-177-54.6a160 160 0 1 1 160-160 160 160 0 0 1-159.96 160zm0-288a128 128 0 1 0 128 128A128 128 0 0 0 225.33 96zm0 80a48.05 48.05 0 0 0-48 48 16 16 0 0 1-32 0 80.09 80.09 0 0 1 80-80 16 16 0 1 1 0 32z\"]\n};\nvar faWebcamSlash = {\n prefix: 'fas',\n iconName: 'webcam-slash',\n icon: [640, 512, [], \"f833\", \"M163.46 256.92l-66.53-51.41c-.5 6.11-.93 12.25-.93 18.49 0 76.19 38.12 143.39 96.23 183.85L143 438.6a32 32 0 0 0-15 27.14V480a32 32 0 0 0 32 32h320a31.58 31.58 0 0 0 10.7-2.16L327 383.3c-83.42 3.7-148.41-54.1-163.54-126.38zM633.82 458.1L500.7 355.21c27-36.85 43.3-82 43.3-131.21C544 100.29 443.71 0 320 0a223.48 223.48 0 0 0-173 81.8L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM320 176a47.78 47.78 0 0 0-33.46 13.69l-25.3-19.55A79.57 79.57 0 0 1 320 144a16 16 0 0 1 0 32zm130.12 140.12l-25.23-19.5A126 126 0 0 0 448 224a127.86 127.86 0 0 0-224.93-83.36l-24.65-19C227.56 86.62 270.85 64 320 64a160 160 0 0 1 160 160 157.21 157.21 0 0 1-29.88 92.12z\"]\n};\nvar faWeight = {\n prefix: 'fas',\n iconName: 'weight',\n icon: [512, 512, [], \"f496\", \"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faWhale = {\n prefix: 'fas',\n iconName: 'whale',\n icon: [640, 512, [], \"f72c\", \"M544 160c-243.05 0-315.29 224-380.12 224-19.78 0-35.88-16.09-35.88-35.87v-97.99l49.75-30.51A32.007 32.007 0 0 0 192 193v-80.98c0-12.78-14.24-20.4-24.88-13.31L96 146.13 24.88 98.71C14.24 91.63 0 99.25 0 112.03V193c0 10.7 5.35 20.69 14.25 26.62L64 250.14v97.99C64 403.2 108.8 448 163.88 448H576c35.35 0 64-28.65 64-64V256c0-52.94-43.06-96-96-96zM432 288c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16z\"]\n};\nvar faWheat = {\n prefix: 'fas',\n iconName: 'wheat',\n icon: [512, 512, [], \"f72d\", \"M481.7 113.55c25.4-27.43 32.47-72.08 29.75-113C482.47-1.39 431.2.29 398.9 30.43c-37.2 37.35-30.99 104.3-29.76 113 41.58 2.78 85-4.15 112.56-29.88zm-43.51 56c-16.1 3.87-33.24 6.45-52.18 6.45-6.34 0-12.69-.22-19-.64l-25.9-1.73-3.65-25.7c-.32-2.29-4.98-37.33 4.65-75.88-12.86-31.93-40.99-55.43-45.79-59.03-27.88 24.38-50.81 56.03-51.97 89.52 1.09 28.48 18.66 56.4 40.93 78.93l-41.48 41.48c1.59-5.97 2.8-12.06 3.02-18.39-.09-46.86-46.08-85.04-52.32-89.73-27.88 24.38-50.81 56.03-51.97 89.52 1.1 28.48 18.66 56.4 40.93 78.93l-41.48 41.48c1.59-5.97 2.8-12.06 3.02-18.39-.09-46.86-46.08-85.04-52.32-89.73-27.88 24.38-50.81 56.03-51.96 89.52 1.09 28.48 18.66 56.4 40.93 78.93L9.38 457.38c-12.5 12.5-12.5 32.75 0 45.25C15.63 508.88 23.81 512 32 512s16.38-3.12 22.63-9.38l72.24-72.24c22.73 22.77 50.36 40.17 79.4 41.17 33.21-1.28 65.71-24.89 89.73-52.32-17-19.44-50.28-50.61-89.52-51.97-6.62.01-12.99 1.11-19.2 2.71l41.41-41.41c22.73 22.77 50.36 40.17 79.4 41.17 33.21-1.28 65.71-24.89 89.73-52.32-17-19.44-50.28-50.61-89.52-51.97-6.62.01-12.99 1.11-19.2 2.71l41.41-41.41c22.73 22.77 50.36 40.17 79.4 41.17 33.21-1.28 65.71-24.89 89.73-52.32-12.76-14.6-34.7-35.8-61.45-46.04z\"]\n};\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\"]\n};\nvar faWhistle = {\n prefix: 'fas',\n iconName: 'whistle',\n icon: [640, 512, [], \"f460\", \"M232 256c0 13.2-10.8 24-24 24s-24-10.8-24-24 10.8-24 24-24 24 10.8 24 24zm252-49.7l150 120c6.7 5.4 8 15.2 2.8 22.1l-78.2 104.3c-4.8 6.5-13.7 8.3-20.7 4.3l-150.4-86C312.1 484.4 150.8 492.8 61 403c-65.5-65.5-78.1-163.8-38-242-14.4-11.8-23-29.7-23-49 0-35.3 28.7-64 64-64 19.2 0 36.9 8.9 49 23.5 65.3-33.6 144.4-30.8 207 9.3l86.6 63.6c5.3 4.2 7.3 11.3 5.1 17.7l-10.2 29.5c-1.1 3.2-.1 6.7 2.6 8.9l25.2 20.2c2.6 2.1 6.2 2.3 9.1.6l27.4-16.2c5.8-3.4 13-2.9 18.2 1.2zM85.5 88.3C79.7 83 72 80 64 80c-17.7 0-32 14.3-32 32 0 8.1 3.3 15.4 8.4 21.2 15.2-20.6 27.3-31.9 45.1-44.9zM280 256c0-39.7-32.3-72-72-72s-72 32.3-72 72 32.3 72 72 72 72-32.3 72-72z\"]\n};\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [], \"f1eb\", \"M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z\"]\n};\nvar faWifi1 = {\n prefix: 'fas',\n iconName: 'wifi-1',\n icon: [640, 512, [], \"f6aa\", \"M384 416c0 35.35-28.65 64-64 64s-64-28.65-64-64 28.65-64 64-64 64 28.65 64 64z\"]\n};\nvar faWifi2 = {\n prefix: 'fas',\n iconName: 'wifi-2',\n icon: [640, 512, [], \"f6ab\", \"M384 416c0 35.35-28.65 64-64 64s-64-28.65-64-64 28.65-64 64-64 64 28.65 64 64zm139.24-124.44c6.55-6.46 6.33-17.06-.57-23.15-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.45-33.99z\"]\n};\nvar faWifiSlash = {\n prefix: 'fas',\n iconName: 'wifi-slash',\n icon: [640, 512, [], \"f6ac\", \"M5.09 154.87c-6.66 6.16-6.79 16.59-.35 22.97l34.24 33.96c6.14 6.09 16.02 6.23 22.4.38 6.99-6.4 14.31-12.22 21.65-18.01l-64.96-50.21c-4.3 3.71-8.79 7.04-12.98 10.91zm471.75 181.9l45.42-45.21c6.52-6.46 6.29-17.06-.57-23.17-64.94-57.74-148.91-82.66-230.34-74.98l-83.16-64.27c125.94-38.36 267.75-11.01 370.43 83.05 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.96c6.44-6.39 6.3-16.82-.35-22.97C496.46 26.82 298.08-.76 133.42 71.35L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.03-2.81-22.45L476.84 336.77zm-358.53-68.38c-6.86 6.1-7.08 16.7-.57 23.17l34.28 34.01c5.97 5.93 15.59 6.32 21.94.8 13.35-11.6 28.01-20.66 43.15-28.55l-68.36-52.83c-10.48 7.15-20.74 14.78-30.44 23.4zM256 416c0 35.35 28.65 64 64 64 31.91 0 58.15-23.42 62.99-53.98l-88.7-68.56C271.77 367.37 256 389.82 256 416z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z\"]\n};\nvar faWindTurbine = {\n prefix: 'fas',\n iconName: 'wind-turbine',\n icon: [514, 512, [], \"f89b\", \"M350.1 480h-48.32l-5-76.66L221 314l-10.78 166H161.9a36.94 36.94 0 0 0-33 20.42A8 8 0 0 0 136 512h240a8 8 0 0 0 7.15-11.58A36.93 36.93 0 0 0 350.1 480zm48.59-54.21l-88.35-182.32a55.73 55.73 0 0 1-.73-42.79l73.28-179.07a15.8 15.8 0 0 0-27.5-15.07L241.27 163.21a55.74 55.74 0 0 1-36.47 22.4L13.32 215.94A15.81 15.81 0 0 0 0 231.89v.23a15.8 15.8 0 0 0 14.1 15.35L203.83 268a55.78 55.78 0 0 1 37.54 20.58l130.31 153.5a15.81 15.81 0 0 0 20.53 3.63l.19-.12a15.79 15.79 0 0 0 6.29-19.8zM256 248a24 24 0 1 1 24-24 24 24 0 0 1-24 24z\"]\n};\nvar faWindWarning = {\n prefix: 'fas',\n iconName: 'wind-warning',\n icon: [640, 512, [], \"f776\", \"M635.3 161.5c-8.9-28.6-32.2-51.9-60.7-60.8-59.1-18.4-114 19.1-124.7 72.4-2 9.8 5.8 18.9 15.7 18.9h32.8c6.7 0 13.1-3.8 15.2-10.1 4.2-12.7 16.3-21.9 30.4-21.9 19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H413.4c-3.3 22.6-9.9 44.1-19.4 64h150c62.8 0 111.8-60.7 91.3-126.5zm2.8 235.4c-8.9-45.6-51.5-76.9-97.9-76.9H375.6c-18 25.8-41.4 47.4-68.3 63.7.6.1 1 .3 1.6.3h233.3c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1h-32.8c-10 0-17.7 9.3-15.7 19.1 8.9 43.8 47.7 76.9 94.1 76.9 59.2 0 106-53.8 94.1-115.1zM384 192C384 86 298 0 192 0S0 86 0 192s86 192 192 192 192-86 192-192zM192 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm25.4-110.4c-.8 8.2-7.7 14.4-15.9 14.4h-19c-8.2 0-15.1-6.2-15.9-14.4l-12.8-128c-.9-9.4 6.4-17.6 15.9-17.6h44.6c9.5 0 16.9 8.2 15.9 17.6l-12.8 128z\"]\n};\nvar faWindow = {\n prefix: 'fas',\n iconName: 'window',\n icon: [512, 512, [], \"f40e\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-336 96c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm96 0c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm96 0c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32z\"]\n};\nvar faWindowAlt = {\n prefix: 'fas',\n iconName: 'window-alt',\n icon: [512, 512, [], \"f40f\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM256 96c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm96 0c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm96 0c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32z\"]\n};\nvar faWindowClose = {\n prefix: 'fas',\n iconName: 'window-close',\n icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\"]\n};\nvar faWindowFrame = {\n prefix: 'fas',\n iconName: 'window-frame',\n icon: [512, 512, [], \"e04f\", \"M496,448H480V32A32,32,0,0,0,448,0H64A32,32,0,0,0,32,32V448H16A16,16,0,0,0,0,464v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V464A16,16,0,0,0,496,448ZM416,224H272V64H416ZM96,64H240V224H96Zm0,224H240V448H96ZM272,448V288H416V448Z\"]\n};\nvar faWindowFrameOpen = {\n prefix: 'fas',\n iconName: 'window-frame-open',\n icon: [512, 512, [], \"e050\", \"M480,32A32,32,0,0,0,448,0H64A32,32,0,0,0,32,32V288H480ZM240,224H96V64H240Zm176,0H272V64H416Zm80,224H480V320H416V448H96V320H32V448H16A16,16,0,0,0,0,464v32a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V464A16,16,0,0,0,496,448Z\"]\n};\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [], \"f2d1\", \"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\"]\n};\nvar faWindsock = {\n prefix: 'fas',\n iconName: 'windsock',\n icon: [512, 512, [], \"f777\", \"M256 380.6l96-13.7V161.1l-96-13.7v233.2zm-144 20.5l80-11.4V138.3l-80-11.4v274.2zM498.3 182L416 170.3v187.4l82.3-11.8c7.9-1.1 13.7-7.9 13.7-15.8V197.9c0-8-5.9-14.7-13.7-15.9zM56 0C25.1 0 0 25.1 0 56c0 22.3 13.1 41.4 32 50.4V496c0 8.8 7.2 16 16 16h16c8.8 0 16-7.2 16-16V106.4c18.9-9 32-28.1 32-50.4 0-30.9-25.1-56-56-56z\"]\n};\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [288, 512, [], \"f4e3\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\"]\n};\nvar faWineGlassAlt = {\n prefix: 'fas',\n iconName: 'wine-glass-alt',\n icon: [288, 512, [], \"f5ce\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [576, 512, [], \"f159\", \"M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z\"]\n};\nvar faWreath = {\n prefix: 'fas',\n iconName: 'wreath',\n icon: [448, 512, [], \"f7e2\", \"M298.9 384.8L224 416l-74.9-31.2c-10.4-3.5-21.1 4.3-21.1 15.2v96c0 10.9 10.7 18.6 21.1 15.2L224 480l74.9 31.2c10.4 3.5 21.1-4.3 21.1-15.2v-96c0-10.9-10.7-18.6-21.1-15.2zM448 224c0-16.9-8.7-31.6-21.9-40.2 8.9-12.9 11.3-29.9 4.8-45.5-6.6-15.9-20.7-26.2-36.4-28.9 3.3-15.4-.2-31.9-12.1-43.8-11.9-11.9-28.5-15.4-43.8-12.1-2.7-15.8-13-29.9-28.8-36.4-15.6-6.5-32.6-4-45.5 4.8C255.6 8.7 240.9 0 224 0s-31.6 8.7-40.2 21.9c-13-8.9-30-11.3-45.5-4.8-15.8 6.6-26.2 20.7-28.8 36.4-15.4-3.3-31.9.2-43.8 12.1C53.8 77.5 50.3 94 53.6 109.4c-15.8 2.7-29.8 13-36.4 28.8-6.5 15.6-4 32.6 4.8 45.5C8.7 192.4 0 207.1 0 224s8.7 31.6 21.9 40.2c-8.9 12.9-11.3 29.9-4.8 45.5 6.6 15.8 20.7 25.8 36.5 28.5-3.4 15.5 0 32.2 12.1 44.2 8.6 8.6 19.6 12.7 30.8 13.5 1-11.4 5.7-22 14-30.2 9-8.8 21-13.7 33.5-13.7 5.2 0 10.3.8 15.2 2.5l1.1.4 1.1.4 62.7 26.1 62.7-26.1 1.1-.4 1.1-.4c4.9-1.6 10-2.5 15.2-2.5 25 0 45.4 19.3 47.6 43.8 11.2-.7 22.2-4.9 30.8-13.5 12-12 15.5-28.7 12.1-44.2 15.8-2.7 29.9-12.6 36.5-28.5 6.5-15.6 4-32.6-4.8-45.5 12.9-8.5 21.6-23.2 21.6-40.1zm-146.5 26.2c-2.8 8.9-1.1 20.2-6.3 27.6-5.2 7.5-16.1 9.3-23.3 14.8-7.1 5.4-12.1 15.6-20.7 18.5-8.2 2.8-18.1-2.3-27.2-2.3s-19 5.1-27.2 2.3c-8.5-2.9-13.6-13.1-20.7-18.5-7.2-5.4-18.1-7.3-23.3-14.8-5.2-7.4-3.5-18.7-6.3-27.6-2.7-8.6-10.5-16.7-10.5-26.2s7.8-17.6 10.5-26.2c2.8-8.9 1.1-20.2 6.3-27.6 5.2-7.5 16.1-9.3 23.3-14.8 7.1-5.4 12.1-15.6 20.7-18.5 8.2-2.8 18.1 2.3 27.2 2.3s19-5.1 27.2-2.3c8.5 2.9 13.6 13.1 20.7 18.5 7.2 5.4 18.1 7.3 23.3 14.8 5.2 7.4 3.5 18.7 6.3 27.6 2.7 8.6 10.5 16.7 10.5 26.2s-7.8 17.6-10.5 26.2z\"]\n};\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [], \"f0ad\", \"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [640, 512, [], \"f497\", \"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [384, 512, [], \"f157\", \"M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [496, 512, [], \"f6ad\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar _iconsCache = {\n faAbacus: faAbacus,\n faAcorn: faAcorn,\n faAd: faAd,\n faAddressBook: faAddressBook,\n faAddressCard: faAddressCard,\n faAdjust: faAdjust,\n faAirConditioner: faAirConditioner,\n faAirFreshener: faAirFreshener,\n faAlarmClock: faAlarmClock,\n faAlarmExclamation: faAlarmExclamation,\n faAlarmPlus: faAlarmPlus,\n faAlarmSnooze: faAlarmSnooze,\n faAlbum: faAlbum,\n faAlbumCollection: faAlbumCollection,\n faAlicorn: faAlicorn,\n faAlien: faAlien,\n faAlienMonster: faAlienMonster,\n faAlignCenter: faAlignCenter,\n faAlignJustify: faAlignJustify,\n faAlignLeft: faAlignLeft,\n faAlignRight: faAlignRight,\n faAlignSlash: faAlignSlash,\n faAllergies: faAllergies,\n faAmbulance: faAmbulance,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAmpGuitar: faAmpGuitar,\n faAnalytics: faAnalytics,\n faAnchor: faAnchor,\n faAngel: faAngel,\n faAngleDoubleDown: faAngleDoubleDown,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faAngleDoubleRight: faAngleDoubleRight,\n faAngleDoubleUp: faAngleDoubleUp,\n faAngleDown: faAngleDown,\n faAngleLeft: faAngleLeft,\n faAngleRight: faAngleRight,\n faAngleUp: faAngleUp,\n faAngry: faAngry,\n faAnkh: faAnkh,\n faAppleAlt: faAppleAlt,\n faAppleCrate: faAppleCrate,\n faArchive: faArchive,\n faArchway: faArchway,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faArrowAltDown: faArrowAltDown,\n faArrowAltFromBottom: faArrowAltFromBottom,\n faArrowAltFromLeft: faArrowAltFromLeft,\n faArrowAltFromRight: faArrowAltFromRight,\n faArrowAltFromTop: faArrowAltFromTop,\n faArrowAltLeft: faArrowAltLeft,\n faArrowAltRight: faArrowAltRight,\n faArrowAltSquareDown: faArrowAltSquareDown,\n faArrowAltSquareLeft: faArrowAltSquareLeft,\n faArrowAltSquareRight: faArrowAltSquareRight,\n faArrowAltSquareUp: faArrowAltSquareUp,\n faArrowAltToBottom: faArrowAltToBottom,\n faArrowAltToLeft: faArrowAltToLeft,\n faArrowAltToRight: faArrowAltToRight,\n faArrowAltToTop: faArrowAltToTop,\n faArrowAltUp: faArrowAltUp,\n faArrowCircleDown: faArrowCircleDown,\n faArrowCircleLeft: faArrowCircleLeft,\n faArrowCircleRight: faArrowCircleRight,\n faArrowCircleUp: faArrowCircleUp,\n faArrowDown: faArrowDown,\n faArrowFromBottom: faArrowFromBottom,\n faArrowFromLeft: faArrowFromLeft,\n faArrowFromRight: faArrowFromRight,\n faArrowFromTop: faArrowFromTop,\n faArrowLeft: faArrowLeft,\n faArrowRight: faArrowRight,\n faArrowSquareDown: faArrowSquareDown,\n faArrowSquareLeft: faArrowSquareLeft,\n faArrowSquareRight: faArrowSquareRight,\n faArrowSquareUp: faArrowSquareUp,\n faArrowToBottom: faArrowToBottom,\n faArrowToLeft: faArrowToLeft,\n faArrowToRight: faArrowToRight,\n faArrowToTop: faArrowToTop,\n faArrowUp: faArrowUp,\n faArrows: faArrows,\n faArrowsAlt: faArrowsAlt,\n faArrowsAltH: faArrowsAltH,\n faArrowsAltV: faArrowsAltV,\n faArrowsH: faArrowsH,\n faArrowsV: faArrowsV,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faAsterisk: faAsterisk,\n faAt: faAt,\n faAtlas: faAtlas,\n faAtom: faAtom,\n faAtomAlt: faAtomAlt,\n faAudioDescription: faAudioDescription,\n faAward: faAward,\n faAxe: faAxe,\n faAxeBattle: faAxeBattle,\n faBaby: faBaby,\n faBabyCarriage: faBabyCarriage,\n faBackpack: faBackpack,\n faBackspace: faBackspace,\n faBackward: faBackward,\n faBacon: faBacon,\n faBacteria: faBacteria,\n faBacterium: faBacterium,\n faBadge: faBadge,\n faBadgeCheck: faBadgeCheck,\n faBadgeDollar: faBadgeDollar,\n faBadgePercent: faBadgePercent,\n faBadgeSheriff: faBadgeSheriff,\n faBadgerHoney: faBadgerHoney,\n faBagsShopping: faBagsShopping,\n faBahai: faBahai,\n faBalanceScale: faBalanceScale,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faBalanceScaleRight: faBalanceScaleRight,\n faBallPile: faBallPile,\n faBallot: faBallot,\n faBallotCheck: faBallotCheck,\n faBan: faBan,\n faBandAid: faBandAid,\n faBanjo: faBanjo,\n faBarcode: faBarcode,\n faBarcodeAlt: faBarcodeAlt,\n faBarcodeRead: faBarcodeRead,\n faBarcodeScan: faBarcodeScan,\n faBars: faBars,\n faBaseball: faBaseball,\n faBaseballBall: faBaseballBall,\n faBasketballBall: faBasketballBall,\n faBasketballHoop: faBasketballHoop,\n faBat: faBat,\n faBath: faBath,\n faBatteryBolt: faBatteryBolt,\n faBatteryEmpty: faBatteryEmpty,\n faBatteryFull: faBatteryFull,\n faBatteryHalf: faBatteryHalf,\n faBatteryQuarter: faBatteryQuarter,\n faBatterySlash: faBatterySlash,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBed: faBed,\n faBedAlt: faBedAlt,\n faBedBunk: faBedBunk,\n faBedEmpty: faBedEmpty,\n faBeer: faBeer,\n faBell: faBell,\n faBellExclamation: faBellExclamation,\n faBellOn: faBellOn,\n faBellPlus: faBellPlus,\n faBellSchool: faBellSchool,\n faBellSchoolSlash: faBellSchoolSlash,\n faBellSlash: faBellSlash,\n faBells: faBells,\n faBetamax: faBetamax,\n faBezierCurve: faBezierCurve,\n faBible: faBible,\n faBicycle: faBicycle,\n faBiking: faBiking,\n faBikingMountain: faBikingMountain,\n faBinoculars: faBinoculars,\n faBiohazard: faBiohazard,\n faBirthdayCake: faBirthdayCake,\n faBlanket: faBlanket,\n faBlender: faBlender,\n faBlenderPhone: faBlenderPhone,\n faBlind: faBlind,\n faBlinds: faBlinds,\n faBlindsOpen: faBlindsOpen,\n faBlindsRaised: faBlindsRaised,\n faBlog: faBlog,\n faBold: faBold,\n faBolt: faBolt,\n faBomb: faBomb,\n faBone: faBone,\n faBoneBreak: faBoneBreak,\n faBong: faBong,\n faBook: faBook,\n faBookAlt: faBookAlt,\n faBookDead: faBookDead,\n faBookHeart: faBookHeart,\n faBookMedical: faBookMedical,\n faBookOpen: faBookOpen,\n faBookReader: faBookReader,\n faBookSpells: faBookSpells,\n faBookUser: faBookUser,\n faBookmark: faBookmark,\n faBooks: faBooks,\n faBooksMedical: faBooksMedical,\n faBoombox: faBoombox,\n faBoot: faBoot,\n faBoothCurtain: faBoothCurtain,\n faBorderAll: faBorderAll,\n faBorderBottom: faBorderBottom,\n faBorderCenterH: faBorderCenterH,\n faBorderCenterV: faBorderCenterV,\n faBorderInner: faBorderInner,\n faBorderLeft: faBorderLeft,\n faBorderNone: faBorderNone,\n faBorderOuter: faBorderOuter,\n faBorderRight: faBorderRight,\n faBorderStyle: faBorderStyle,\n faBorderStyleAlt: faBorderStyleAlt,\n faBorderTop: faBorderTop,\n faBowArrow: faBowArrow,\n faBowlingBall: faBowlingBall,\n faBowlingPins: faBowlingPins,\n faBox: faBox,\n faBoxAlt: faBoxAlt,\n faBoxBallot: faBoxBallot,\n faBoxCheck: faBoxCheck,\n faBoxFragile: faBoxFragile,\n faBoxFull: faBoxFull,\n faBoxHeart: faBoxHeart,\n faBoxOpen: faBoxOpen,\n faBoxTissue: faBoxTissue,\n faBoxUp: faBoxUp,\n faBoxUsd: faBoxUsd,\n faBoxes: faBoxes,\n faBoxesAlt: faBoxesAlt,\n faBoxingGlove: faBoxingGlove,\n faBrackets: faBrackets,\n faBracketsCurly: faBracketsCurly,\n faBraille: faBraille,\n faBrain: faBrain,\n faBreadLoaf: faBreadLoaf,\n faBreadSlice: faBreadSlice,\n faBriefcase: faBriefcase,\n faBriefcaseMedical: faBriefcaseMedical,\n faBringForward: faBringForward,\n faBringFront: faBringFront,\n faBroadcastTower: faBroadcastTower,\n faBroom: faBroom,\n faBrowser: faBrowser,\n faBrush: faBrush,\n faBug: faBug,\n faBuilding: faBuilding,\n faBullhorn: faBullhorn,\n faBullseye: faBullseye,\n faBullseyeArrow: faBullseyeArrow,\n faBullseyePointer: faBullseyePointer,\n faBurgerSoda: faBurgerSoda,\n faBurn: faBurn,\n faBurrito: faBurrito,\n faBus: faBus,\n faBusAlt: faBusAlt,\n faBusSchool: faBusSchool,\n faBusinessTime: faBusinessTime,\n faCabinetFiling: faCabinetFiling,\n faCactus: faCactus,\n faCalculator: faCalculator,\n faCalculatorAlt: faCalculatorAlt,\n faCalendar: faCalendar,\n faCalendarAlt: faCalendarAlt,\n faCalendarCheck: faCalendarCheck,\n faCalendarDay: faCalendarDay,\n faCalendarEdit: faCalendarEdit,\n faCalendarExclamation: faCalendarExclamation,\n faCalendarMinus: faCalendarMinus,\n faCalendarPlus: faCalendarPlus,\n faCalendarStar: faCalendarStar,\n faCalendarTimes: faCalendarTimes,\n faCalendarWeek: faCalendarWeek,\n faCamcorder: faCamcorder,\n faCamera: faCamera,\n faCameraAlt: faCameraAlt,\n faCameraHome: faCameraHome,\n faCameraMovie: faCameraMovie,\n faCameraPolaroid: faCameraPolaroid,\n faCameraRetro: faCameraRetro,\n faCampfire: faCampfire,\n faCampground: faCampground,\n faCandleHolder: faCandleHolder,\n faCandyCane: faCandyCane,\n faCandyCorn: faCandyCorn,\n faCannabis: faCannabis,\n faCapsules: faCapsules,\n faCar: faCar,\n faCarAlt: faCarAlt,\n faCarBattery: faCarBattery,\n faCarBuilding: faCarBuilding,\n faCarBump: faCarBump,\n faCarBus: faCarBus,\n faCarCrash: faCarCrash,\n faCarGarage: faCarGarage,\n faCarMechanic: faCarMechanic,\n faCarSide: faCarSide,\n faCarTilt: faCarTilt,\n faCarWash: faCarWash,\n faCaravan: faCaravan,\n faCaravanAlt: faCaravanAlt,\n faCaretCircleDown: faCaretCircleDown,\n faCaretCircleLeft: faCaretCircleLeft,\n faCaretCircleRight: faCaretCircleRight,\n faCaretCircleUp: faCaretCircleUp,\n faCaretDown: faCaretDown,\n faCaretLeft: faCaretLeft,\n faCaretRight: faCaretRight,\n faCaretSquareDown: faCaretSquareDown,\n faCaretSquareLeft: faCaretSquareLeft,\n faCaretSquareRight: faCaretSquareRight,\n faCaretSquareUp: faCaretSquareUp,\n faCaretUp: faCaretUp,\n faCarrot: faCarrot,\n faCars: faCars,\n faCartArrowDown: faCartArrowDown,\n faCartPlus: faCartPlus,\n faCashRegister: faCashRegister,\n faCassetteTape: faCassetteTape,\n faCat: faCat,\n faCatSpace: faCatSpace,\n faCauldron: faCauldron,\n faCctv: faCctv,\n faCertificate: faCertificate,\n faChair: faChair,\n faChairOffice: faChairOffice,\n faChalkboard: faChalkboard,\n faChalkboardTeacher: faChalkboardTeacher,\n faChargingStation: faChargingStation,\n faChartArea: faChartArea,\n faChartBar: faChartBar,\n faChartLine: faChartLine,\n faChartLineDown: faChartLineDown,\n faChartNetwork: faChartNetwork,\n faChartPie: faChartPie,\n faChartPieAlt: faChartPieAlt,\n faChartScatter: faChartScatter,\n faCheck: faCheck,\n faCheckCircle: faCheckCircle,\n faCheckDouble: faCheckDouble,\n faCheckSquare: faCheckSquare,\n faCheese: faCheese,\n faCheeseSwiss: faCheeseSwiss,\n faCheeseburger: faCheeseburger,\n faChess: faChess,\n faChessBishop: faChessBishop,\n faChessBishopAlt: faChessBishopAlt,\n faChessBoard: faChessBoard,\n faChessClock: faChessClock,\n faChessClockAlt: faChessClockAlt,\n faChessKing: faChessKing,\n faChessKingAlt: faChessKingAlt,\n faChessKnight: faChessKnight,\n faChessKnightAlt: faChessKnightAlt,\n faChessPawn: faChessPawn,\n faChessPawnAlt: faChessPawnAlt,\n faChessQueen: faChessQueen,\n faChessQueenAlt: faChessQueenAlt,\n faChessRook: faChessRook,\n faChessRookAlt: faChessRookAlt,\n faChevronCircleDown: faChevronCircleDown,\n faChevronCircleLeft: faChevronCircleLeft,\n faChevronCircleRight: faChevronCircleRight,\n faChevronCircleUp: faChevronCircleUp,\n faChevronDoubleDown: faChevronDoubleDown,\n faChevronDoubleLeft: faChevronDoubleLeft,\n faChevronDoubleRight: faChevronDoubleRight,\n faChevronDoubleUp: faChevronDoubleUp,\n faChevronDown: faChevronDown,\n faChevronLeft: faChevronLeft,\n faChevronRight: faChevronRight,\n faChevronSquareDown: faChevronSquareDown,\n faChevronSquareLeft: faChevronSquareLeft,\n faChevronSquareRight: faChevronSquareRight,\n faChevronSquareUp: faChevronSquareUp,\n faChevronUp: faChevronUp,\n faChild: faChild,\n faChimney: faChimney,\n faChurch: faChurch,\n faCircle: faCircle,\n faCircleNotch: faCircleNotch,\n faCity: faCity,\n faClarinet: faClarinet,\n faClawMarks: faClawMarks,\n faClinicMedical: faClinicMedical,\n faClipboard: faClipboard,\n faClipboardCheck: faClipboardCheck,\n faClipboardList: faClipboardList,\n faClipboardListCheck: faClipboardListCheck,\n faClipboardPrescription: faClipboardPrescription,\n faClipboardUser: faClipboardUser,\n faClock: faClock,\n faClone: faClone,\n faClosedCaptioning: faClosedCaptioning,\n faCloud: faCloud,\n faCloudDownload: faCloudDownload,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faCloudDrizzle: faCloudDrizzle,\n faCloudHail: faCloudHail,\n faCloudHailMixed: faCloudHailMixed,\n faCloudMeatball: faCloudMeatball,\n faCloudMoon: faCloudMoon,\n faCloudMoonRain: faCloudMoonRain,\n faCloudMusic: faCloudMusic,\n faCloudRain: faCloudRain,\n faCloudRainbow: faCloudRainbow,\n faCloudShowers: faCloudShowers,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faCloudSleet: faCloudSleet,\n faCloudSnow: faCloudSnow,\n faCloudSun: faCloudSun,\n faCloudSunRain: faCloudSunRain,\n faCloudUpload: faCloudUpload,\n faCloudUploadAlt: faCloudUploadAlt,\n faClouds: faClouds,\n faCloudsMoon: faCloudsMoon,\n faCloudsSun: faCloudsSun,\n faClub: faClub,\n faCocktail: faCocktail,\n faCode: faCode,\n faCodeBranch: faCodeBranch,\n faCodeCommit: faCodeCommit,\n faCodeMerge: faCodeMerge,\n faCoffee: faCoffee,\n faCoffeePot: faCoffeePot,\n faCoffeeTogo: faCoffeeTogo,\n faCoffin: faCoffin,\n faCoffinCross: faCoffinCross,\n faCog: faCog,\n faCogs: faCogs,\n faCoin: faCoin,\n faCoins: faCoins,\n faColumns: faColumns,\n faComet: faComet,\n faComment: faComment,\n faCommentAlt: faCommentAlt,\n faCommentAltCheck: faCommentAltCheck,\n faCommentAltDollar: faCommentAltDollar,\n faCommentAltDots: faCommentAltDots,\n faCommentAltEdit: faCommentAltEdit,\n faCommentAltExclamation: faCommentAltExclamation,\n faCommentAltLines: faCommentAltLines,\n faCommentAltMedical: faCommentAltMedical,\n faCommentAltMinus: faCommentAltMinus,\n faCommentAltMusic: faCommentAltMusic,\n faCommentAltPlus: faCommentAltPlus,\n faCommentAltSlash: faCommentAltSlash,\n faCommentAltSmile: faCommentAltSmile,\n faCommentAltTimes: faCommentAltTimes,\n faCommentCheck: faCommentCheck,\n faCommentDollar: faCommentDollar,\n faCommentDots: faCommentDots,\n faCommentEdit: faCommentEdit,\n faCommentExclamation: faCommentExclamation,\n faCommentLines: faCommentLines,\n faCommentMedical: faCommentMedical,\n faCommentMinus: faCommentMinus,\n faCommentMusic: faCommentMusic,\n faCommentPlus: faCommentPlus,\n faCommentSlash: faCommentSlash,\n faCommentSmile: faCommentSmile,\n faCommentTimes: faCommentTimes,\n faComments: faComments,\n faCommentsAlt: faCommentsAlt,\n faCommentsAltDollar: faCommentsAltDollar,\n faCommentsDollar: faCommentsDollar,\n faCompactDisc: faCompactDisc,\n faCompass: faCompass,\n faCompassSlash: faCompassSlash,\n faCompress: faCompress,\n faCompressAlt: faCompressAlt,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faCompressWide: faCompressWide,\n faComputerClassic: faComputerClassic,\n faComputerSpeaker: faComputerSpeaker,\n faConciergeBell: faConciergeBell,\n faConstruction: faConstruction,\n faContainerStorage: faContainerStorage,\n faConveyorBelt: faConveyorBelt,\n faConveyorBeltAlt: faConveyorBeltAlt,\n faCookie: faCookie,\n faCookieBite: faCookieBite,\n faCopy: faCopy,\n faCopyright: faCopyright,\n faCorn: faCorn,\n faCouch: faCouch,\n faCow: faCow,\n faCowbell: faCowbell,\n faCowbellMore: faCowbellMore,\n faCreditCard: faCreditCard,\n faCreditCardBlank: faCreditCardBlank,\n faCreditCardFront: faCreditCardFront,\n faCricket: faCricket,\n faCroissant: faCroissant,\n faCrop: faCrop,\n faCropAlt: faCropAlt,\n faCross: faCross,\n faCrosshairs: faCrosshairs,\n faCrow: faCrow,\n faCrown: faCrown,\n faCrutch: faCrutch,\n faCrutches: faCrutches,\n faCube: faCube,\n faCubes: faCubes,\n faCurling: faCurling,\n faCut: faCut,\n faDagger: faDagger,\n faDatabase: faDatabase,\n faDeaf: faDeaf,\n faDebug: faDebug,\n faDeer: faDeer,\n faDeerRudolph: faDeerRudolph,\n faDemocrat: faDemocrat,\n faDesktop: faDesktop,\n faDesktopAlt: faDesktopAlt,\n faDewpoint: faDewpoint,\n faDharmachakra: faDharmachakra,\n faDiagnoses: faDiagnoses,\n faDiamond: faDiamond,\n faDice: faDice,\n faDiceD10: faDiceD10,\n faDiceD12: faDiceD12,\n faDiceD20: faDiceD20,\n faDiceD4: faDiceD4,\n faDiceD6: faDiceD6,\n faDiceD8: faDiceD8,\n faDiceFive: faDiceFive,\n faDiceFour: faDiceFour,\n faDiceOne: faDiceOne,\n faDiceSix: faDiceSix,\n faDiceThree: faDiceThree,\n faDiceTwo: faDiceTwo,\n faDigging: faDigging,\n faDigitalTachograph: faDigitalTachograph,\n faDiploma: faDiploma,\n faDirections: faDirections,\n faDiscDrive: faDiscDrive,\n faDisease: faDisease,\n faDivide: faDivide,\n faDizzy: faDizzy,\n faDna: faDna,\n faDoNotEnter: faDoNotEnter,\n faDog: faDog,\n faDogLeashed: faDogLeashed,\n faDollarSign: faDollarSign,\n faDolly: faDolly,\n faDollyEmpty: faDollyEmpty,\n faDollyFlatbed: faDollyFlatbed,\n faDollyFlatbedAlt: faDollyFlatbedAlt,\n faDollyFlatbedEmpty: faDollyFlatbedEmpty,\n faDonate: faDonate,\n faDoorClosed: faDoorClosed,\n faDoorOpen: faDoorOpen,\n faDotCircle: faDotCircle,\n faDove: faDove,\n faDownload: faDownload,\n faDraftingCompass: faDraftingCompass,\n faDragon: faDragon,\n faDrawCircle: faDrawCircle,\n faDrawPolygon: faDrawPolygon,\n faDrawSquare: faDrawSquare,\n faDreidel: faDreidel,\n faDrone: faDrone,\n faDroneAlt: faDroneAlt,\n faDrum: faDrum,\n faDrumSteelpan: faDrumSteelpan,\n faDrumstick: faDrumstick,\n faDrumstickBite: faDrumstickBite,\n faDryer: faDryer,\n faDryerAlt: faDryerAlt,\n faDuck: faDuck,\n faDumbbell: faDumbbell,\n faDumpster: faDumpster,\n faDumpsterFire: faDumpsterFire,\n faDungeon: faDungeon,\n faEar: faEar,\n faEarMuffs: faEarMuffs,\n faEclipse: faEclipse,\n faEclipseAlt: faEclipseAlt,\n faEdit: faEdit,\n faEgg: faEgg,\n faEggFried: faEggFried,\n faEject: faEject,\n faElephant: faElephant,\n faEllipsisH: faEllipsisH,\n faEllipsisHAlt: faEllipsisHAlt,\n faEllipsisV: faEllipsisV,\n faEllipsisVAlt: faEllipsisVAlt,\n faEmptySet: faEmptySet,\n faEngineWarning: faEngineWarning,\n faEnvelope: faEnvelope,\n faEnvelopeOpen: faEnvelopeOpen,\n faEnvelopeOpenDollar: faEnvelopeOpenDollar,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faEnvelopeSquare: faEnvelopeSquare,\n faEquals: faEquals,\n faEraser: faEraser,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faExchange: faExchange,\n faExchangeAlt: faExchangeAlt,\n faExclamation: faExclamation,\n faExclamationCircle: faExclamationCircle,\n faExclamationSquare: faExclamationSquare,\n faExclamationTriangle: faExclamationTriangle,\n faExpand: faExpand,\n faExpandAlt: faExpandAlt,\n faExpandArrows: faExpandArrows,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faExpandWide: faExpandWide,\n faExternalLink: faExternalLink,\n faExternalLinkAlt: faExternalLinkAlt,\n faExternalLinkSquare: faExternalLinkSquare,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faEye: faEye,\n faEyeDropper: faEyeDropper,\n faEyeEvil: faEyeEvil,\n faEyeSlash: faEyeSlash,\n faFan: faFan,\n faFanTable: faFanTable,\n faFarm: faFarm,\n faFastBackward: faFastBackward,\n faFastForward: faFastForward,\n faFaucet: faFaucet,\n faFaucetDrip: faFaucetDrip,\n faFax: faFax,\n faFeather: faFeather,\n faFeatherAlt: faFeatherAlt,\n faFemale: faFemale,\n faFieldHockey: faFieldHockey,\n faFighterJet: faFighterJet,\n faFile: faFile,\n faFileAlt: faFileAlt,\n faFileArchive: faFileArchive,\n faFileAudio: faFileAudio,\n faFileCertificate: faFileCertificate,\n faFileChartLine: faFileChartLine,\n faFileChartPie: faFileChartPie,\n faFileCheck: faFileCheck,\n faFileCode: faFileCode,\n faFileContract: faFileContract,\n faFileCsv: faFileCsv,\n faFileDownload: faFileDownload,\n faFileEdit: faFileEdit,\n faFileExcel: faFileExcel,\n faFileExclamation: faFileExclamation,\n faFileExport: faFileExport,\n faFileImage: faFileImage,\n faFileImport: faFileImport,\n faFileInvoice: faFileInvoice,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faFileMedical: faFileMedical,\n faFileMedicalAlt: faFileMedicalAlt,\n faFileMinus: faFileMinus,\n faFileMusic: faFileMusic,\n faFilePdf: faFilePdf,\n faFilePlus: faFilePlus,\n faFilePowerpoint: faFilePowerpoint,\n faFilePrescription: faFilePrescription,\n faFileSearch: faFileSearch,\n faFileSignature: faFileSignature,\n faFileSpreadsheet: faFileSpreadsheet,\n faFileTimes: faFileTimes,\n faFileUpload: faFileUpload,\n faFileUser: faFileUser,\n faFileVideo: faFileVideo,\n faFileWord: faFileWord,\n faFilesMedical: faFilesMedical,\n faFill: faFill,\n faFillDrip: faFillDrip,\n faFilm: faFilm,\n faFilmAlt: faFilmAlt,\n faFilmCanister: faFilmCanister,\n faFilter: faFilter,\n faFingerprint: faFingerprint,\n faFire: faFire,\n faFireAlt: faFireAlt,\n faFireExtinguisher: faFireExtinguisher,\n faFireSmoke: faFireSmoke,\n faFireplace: faFireplace,\n faFirstAid: faFirstAid,\n faFish: faFish,\n faFishCooked: faFishCooked,\n faFistRaised: faFistRaised,\n faFlag: faFlag,\n faFlagAlt: faFlagAlt,\n faFlagCheckered: faFlagCheckered,\n faFlagUsa: faFlagUsa,\n faFlame: faFlame,\n faFlashlight: faFlashlight,\n faFlask: faFlask,\n faFlaskPoison: faFlaskPoison,\n faFlaskPotion: faFlaskPotion,\n faFlower: faFlower,\n faFlowerDaffodil: faFlowerDaffodil,\n faFlowerTulip: faFlowerTulip,\n faFlushed: faFlushed,\n faFlute: faFlute,\n faFluxCapacitor: faFluxCapacitor,\n faFog: faFog,\n faFolder: faFolder,\n faFolderDownload: faFolderDownload,\n faFolderMinus: faFolderMinus,\n faFolderOpen: faFolderOpen,\n faFolderPlus: faFolderPlus,\n faFolderTimes: faFolderTimes,\n faFolderTree: faFolderTree,\n faFolderUpload: faFolderUpload,\n faFolders: faFolders,\n faFont: faFont,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFontCase: faFontCase,\n faFootballBall: faFootballBall,\n faFootballHelmet: faFootballHelmet,\n faForklift: faForklift,\n faForward: faForward,\n faFragile: faFragile,\n faFrenchFries: faFrenchFries,\n faFrog: faFrog,\n faFrostyHead: faFrostyHead,\n faFrown: faFrown,\n faFrownOpen: faFrownOpen,\n faFunction: faFunction,\n faFunnelDollar: faFunnelDollar,\n faFutbol: faFutbol,\n faGalaxy: faGalaxy,\n faGameBoard: faGameBoard,\n faGameBoardAlt: faGameBoardAlt,\n faGameConsoleHandheld: faGameConsoleHandheld,\n faGamepad: faGamepad,\n faGamepadAlt: faGamepadAlt,\n faGarage: faGarage,\n faGarageCar: faGarageCar,\n faGarageOpen: faGarageOpen,\n faGasPump: faGasPump,\n faGasPumpSlash: faGasPumpSlash,\n faGavel: faGavel,\n faGem: faGem,\n faGenderless: faGenderless,\n faGhost: faGhost,\n faGift: faGift,\n faGiftCard: faGiftCard,\n faGifts: faGifts,\n faGingerbreadMan: faGingerbreadMan,\n faGlass: faGlass,\n faGlassChampagne: faGlassChampagne,\n faGlassCheers: faGlassCheers,\n faGlassCitrus: faGlassCitrus,\n faGlassMartini: faGlassMartini,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faGlassWhiskey: faGlassWhiskey,\n faGlassWhiskeyRocks: faGlassWhiskeyRocks,\n faGlasses: faGlasses,\n faGlassesAlt: faGlassesAlt,\n faGlobe: faGlobe,\n faGlobeAfrica: faGlobeAfrica,\n faGlobeAmericas: faGlobeAmericas,\n faGlobeAsia: faGlobeAsia,\n faGlobeEurope: faGlobeEurope,\n faGlobeSnow: faGlobeSnow,\n faGlobeStand: faGlobeStand,\n faGolfBall: faGolfBall,\n faGolfClub: faGolfClub,\n faGopuram: faGopuram,\n faGraduationCap: faGraduationCap,\n faGramophone: faGramophone,\n faGreaterThan: faGreaterThan,\n faGreaterThanEqual: faGreaterThanEqual,\n faGrimace: faGrimace,\n faGrin: faGrin,\n faGrinAlt: faGrinAlt,\n faGrinBeam: faGrinBeam,\n faGrinBeamSweat: faGrinBeamSweat,\n faGrinHearts: faGrinHearts,\n faGrinSquint: faGrinSquint,\n faGrinSquintTears: faGrinSquintTears,\n faGrinStars: faGrinStars,\n faGrinTears: faGrinTears,\n faGrinTongue: faGrinTongue,\n faGrinTongueSquint: faGrinTongueSquint,\n faGrinTongueWink: faGrinTongueWink,\n faGrinWink: faGrinWink,\n faGripHorizontal: faGripHorizontal,\n faGripLines: faGripLines,\n faGripLinesVertical: faGripLinesVertical,\n faGripVertical: faGripVertical,\n faGuitar: faGuitar,\n faGuitarElectric: faGuitarElectric,\n faGuitars: faGuitars,\n faHSquare: faHSquare,\n faH1: faH1,\n faH2: faH2,\n faH3: faH3,\n faH4: faH4,\n faHamburger: faHamburger,\n faHammer: faHammer,\n faHammerWar: faHammerWar,\n faHamsa: faHamsa,\n faHandHeart: faHandHeart,\n faHandHolding: faHandHolding,\n faHandHoldingBox: faHandHoldingBox,\n faHandHoldingHeart: faHandHoldingHeart,\n faHandHoldingMagic: faHandHoldingMagic,\n faHandHoldingMedical: faHandHoldingMedical,\n faHandHoldingSeedling: faHandHoldingSeedling,\n faHandHoldingUsd: faHandHoldingUsd,\n faHandHoldingWater: faHandHoldingWater,\n faHandLizard: faHandLizard,\n faHandMiddleFinger: faHandMiddleFinger,\n faHandPaper: faHandPaper,\n faHandPeace: faHandPeace,\n faHandPointDown: faHandPointDown,\n faHandPointLeft: faHandPointLeft,\n faHandPointRight: faHandPointRight,\n faHandPointUp: faHandPointUp,\n faHandPointer: faHandPointer,\n faHandReceiving: faHandReceiving,\n faHandRock: faHandRock,\n faHandScissors: faHandScissors,\n faHandSparkles: faHandSparkles,\n faHandSpock: faHandSpock,\n faHands: faHands,\n faHandsHeart: faHandsHeart,\n faHandsHelping: faHandsHelping,\n faHandsUsd: faHandsUsd,\n faHandsWash: faHandsWash,\n faHandshake: faHandshake,\n faHandshakeAlt: faHandshakeAlt,\n faHandshakeAltSlash: faHandshakeAltSlash,\n faHandshakeSlash: faHandshakeSlash,\n faHanukiah: faHanukiah,\n faHardHat: faHardHat,\n faHashtag: faHashtag,\n faHatChef: faHatChef,\n faHatCowboy: faHatCowboy,\n faHatCowboySide: faHatCowboySide,\n faHatSanta: faHatSanta,\n faHatWinter: faHatWinter,\n faHatWitch: faHatWitch,\n faHatWizard: faHatWizard,\n faHdd: faHdd,\n faHeadSide: faHeadSide,\n faHeadSideBrain: faHeadSideBrain,\n faHeadSideCough: faHeadSideCough,\n faHeadSideCoughSlash: faHeadSideCoughSlash,\n faHeadSideHeadphones: faHeadSideHeadphones,\n faHeadSideMask: faHeadSideMask,\n faHeadSideMedical: faHeadSideMedical,\n faHeadSideVirus: faHeadSideVirus,\n faHeadVr: faHeadVr,\n faHeading: faHeading,\n faHeadphones: faHeadphones,\n faHeadphonesAlt: faHeadphonesAlt,\n faHeadset: faHeadset,\n faHeart: faHeart,\n faHeartBroken: faHeartBroken,\n faHeartCircle: faHeartCircle,\n faHeartRate: faHeartRate,\n faHeartSquare: faHeartSquare,\n faHeartbeat: faHeartbeat,\n faHeat: faHeat,\n faHelicopter: faHelicopter,\n faHelmetBattle: faHelmetBattle,\n faHexagon: faHexagon,\n faHighlighter: faHighlighter,\n faHiking: faHiking,\n faHippo: faHippo,\n faHistory: faHistory,\n faHockeyMask: faHockeyMask,\n faHockeyPuck: faHockeyPuck,\n faHockeySticks: faHockeySticks,\n faHollyBerry: faHollyBerry,\n faHome: faHome,\n faHomeAlt: faHomeAlt,\n faHomeHeart: faHomeHeart,\n faHomeLg: faHomeLg,\n faHomeLgAlt: faHomeLgAlt,\n faHoodCloak: faHoodCloak,\n faHorizontalRule: faHorizontalRule,\n faHorse: faHorse,\n faHorseHead: faHorseHead,\n faHorseSaddle: faHorseSaddle,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalSymbol: faHospitalSymbol,\n faHospitalUser: faHospitalUser,\n faHospitals: faHospitals,\n faHotTub: faHotTub,\n faHotdog: faHotdog,\n faHotel: faHotel,\n faHourglass: faHourglass,\n faHourglassEnd: faHourglassEnd,\n faHourglassHalf: faHourglassHalf,\n faHourglassStart: faHourglassStart,\n faHouse: faHouse,\n faHouseDamage: faHouseDamage,\n faHouseDay: faHouseDay,\n faHouseFlood: faHouseFlood,\n faHouseLeave: faHouseLeave,\n faHouseNight: faHouseNight,\n faHouseReturn: faHouseReturn,\n faHouseSignal: faHouseSignal,\n faHouseUser: faHouseUser,\n faHryvnia: faHryvnia,\n faHumidity: faHumidity,\n faHurricane: faHurricane,\n faICursor: faICursor,\n faIceCream: faIceCream,\n faIceSkate: faIceSkate,\n faIcicles: faIcicles,\n faIcons: faIcons,\n faIconsAlt: faIconsAlt,\n faIdBadge: faIdBadge,\n faIdCard: faIdCard,\n faIdCardAlt: faIdCardAlt,\n faIgloo: faIgloo,\n faImage: faImage,\n faImagePolaroid: faImagePolaroid,\n faImages: faImages,\n faInbox: faInbox,\n faInboxIn: faInboxIn,\n faInboxOut: faInboxOut,\n faIndent: faIndent,\n faIndustry: faIndustry,\n faIndustryAlt: faIndustryAlt,\n faInfinity: faInfinity,\n faInfo: faInfo,\n faInfoCircle: faInfoCircle,\n faInfoSquare: faInfoSquare,\n faInhaler: faInhaler,\n faIntegral: faIntegral,\n faIntersection: faIntersection,\n faInventory: faInventory,\n faIslandTropical: faIslandTropical,\n faItalic: faItalic,\n faJackOLantern: faJackOLantern,\n faJedi: faJedi,\n faJoint: faJoint,\n faJournalWhills: faJournalWhills,\n faJoystick: faJoystick,\n faJug: faJug,\n faKaaba: faKaaba,\n faKazoo: faKazoo,\n faKerning: faKerning,\n faKey: faKey,\n faKeySkeleton: faKeySkeleton,\n faKeyboard: faKeyboard,\n faKeynote: faKeynote,\n faKhanda: faKhanda,\n faKidneys: faKidneys,\n faKiss: faKiss,\n faKissBeam: faKissBeam,\n faKissWinkHeart: faKissWinkHeart,\n faKite: faKite,\n faKiwiBird: faKiwiBird,\n faKnifeKitchen: faKnifeKitchen,\n faLambda: faLambda,\n faLamp: faLamp,\n faLampDesk: faLampDesk,\n faLampFloor: faLampFloor,\n faLandmark: faLandmark,\n faLandmarkAlt: faLandmarkAlt,\n faLanguage: faLanguage,\n faLaptop: faLaptop,\n faLaptopCode: faLaptopCode,\n faLaptopHouse: faLaptopHouse,\n faLaptopMedical: faLaptopMedical,\n faLasso: faLasso,\n faLaugh: faLaugh,\n faLaughBeam: faLaughBeam,\n faLaughSquint: faLaughSquint,\n faLaughWink: faLaughWink,\n faLayerGroup: faLayerGroup,\n faLayerMinus: faLayerMinus,\n faLayerPlus: faLayerPlus,\n faLeaf: faLeaf,\n faLeafHeart: faLeafHeart,\n faLeafMaple: faLeafMaple,\n faLeafOak: faLeafOak,\n faLemon: faLemon,\n faLessThan: faLessThan,\n faLessThanEqual: faLessThanEqual,\n faLevelDown: faLevelDown,\n faLevelDownAlt: faLevelDownAlt,\n faLevelUp: faLevelUp,\n faLevelUpAlt: faLevelUpAlt,\n faLifeRing: faLifeRing,\n faLightCeiling: faLightCeiling,\n faLightSwitch: faLightSwitch,\n faLightSwitchOff: faLightSwitchOff,\n faLightSwitchOn: faLightSwitchOn,\n faLightbulb: faLightbulb,\n faLightbulbDollar: faLightbulbDollar,\n faLightbulbExclamation: faLightbulbExclamation,\n faLightbulbOn: faLightbulbOn,\n faLightbulbSlash: faLightbulbSlash,\n faLightsHoliday: faLightsHoliday,\n faLineColumns: faLineColumns,\n faLineHeight: faLineHeight,\n faLink: faLink,\n faLips: faLips,\n faLiraSign: faLiraSign,\n faList: faList,\n faListAlt: faListAlt,\n faListMusic: faListMusic,\n faListOl: faListOl,\n faListUl: faListUl,\n faLocation: faLocation,\n faLocationArrow: faLocationArrow,\n faLocationCircle: faLocationCircle,\n faLocationSlash: faLocationSlash,\n faLock: faLock,\n faLockAlt: faLockAlt,\n faLockOpen: faLockOpen,\n faLockOpenAlt: faLockOpenAlt,\n faLongArrowAltDown: faLongArrowAltDown,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faLongArrowAltRight: faLongArrowAltRight,\n faLongArrowAltUp: faLongArrowAltUp,\n faLongArrowDown: faLongArrowDown,\n faLongArrowLeft: faLongArrowLeft,\n faLongArrowRight: faLongArrowRight,\n faLongArrowUp: faLongArrowUp,\n faLoveseat: faLoveseat,\n faLowVision: faLowVision,\n faLuchador: faLuchador,\n faLuggageCart: faLuggageCart,\n faLungs: faLungs,\n faLungsVirus: faLungsVirus,\n faMace: faMace,\n faMagic: faMagic,\n faMagnet: faMagnet,\n faMailBulk: faMailBulk,\n faMailbox: faMailbox,\n faMale: faMale,\n faMandolin: faMandolin,\n faMap: faMap,\n faMapMarked: faMapMarked,\n faMapMarkedAlt: faMapMarkedAlt,\n faMapMarker: faMapMarker,\n faMapMarkerAlt: faMapMarkerAlt,\n faMapMarkerAltSlash: faMapMarkerAltSlash,\n faMapMarkerCheck: faMapMarkerCheck,\n faMapMarkerEdit: faMapMarkerEdit,\n faMapMarkerExclamation: faMapMarkerExclamation,\n faMapMarkerMinus: faMapMarkerMinus,\n faMapMarkerPlus: faMapMarkerPlus,\n faMapMarkerQuestion: faMapMarkerQuestion,\n faMapMarkerSlash: faMapMarkerSlash,\n faMapMarkerSmile: faMapMarkerSmile,\n faMapMarkerTimes: faMapMarkerTimes,\n faMapPin: faMapPin,\n faMapSigns: faMapSigns,\n faMarker: faMarker,\n faMars: faMars,\n faMarsDouble: faMarsDouble,\n faMarsStroke: faMarsStroke,\n faMarsStrokeH: faMarsStrokeH,\n faMarsStrokeV: faMarsStrokeV,\n faMask: faMask,\n faMeat: faMeat,\n faMedal: faMedal,\n faMedkit: faMedkit,\n faMegaphone: faMegaphone,\n faMeh: faMeh,\n faMehBlank: faMehBlank,\n faMehRollingEyes: faMehRollingEyes,\n faMemory: faMemory,\n faMenorah: faMenorah,\n faMercury: faMercury,\n faMeteor: faMeteor,\n faMicrochip: faMicrochip,\n faMicrophone: faMicrophone,\n faMicrophoneAlt: faMicrophoneAlt,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faMicrophoneSlash: faMicrophoneSlash,\n faMicrophoneStand: faMicrophoneStand,\n faMicroscope: faMicroscope,\n faMicrowave: faMicrowave,\n faMindShare: faMindShare,\n faMinus: faMinus,\n faMinusCircle: faMinusCircle,\n faMinusHexagon: faMinusHexagon,\n faMinusOctagon: faMinusOctagon,\n faMinusSquare: faMinusSquare,\n faMistletoe: faMistletoe,\n faMitten: faMitten,\n faMobile: faMobile,\n faMobileAlt: faMobileAlt,\n faMobileAndroid: faMobileAndroid,\n faMobileAndroidAlt: faMobileAndroidAlt,\n faMoneyBill: faMoneyBill,\n faMoneyBillAlt: faMoneyBillAlt,\n faMoneyBillWave: faMoneyBillWave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faMoneyCheck: faMoneyCheck,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faMoneyCheckEdit: faMoneyCheckEdit,\n faMoneyCheckEditAlt: faMoneyCheckEditAlt,\n faMonitorHeartRate: faMonitorHeartRate,\n faMonkey: faMonkey,\n faMonument: faMonument,\n faMoon: faMoon,\n faMoonCloud: faMoonCloud,\n faMoonStars: faMoonStars,\n faMortarPestle: faMortarPestle,\n faMosque: faMosque,\n faMotorcycle: faMotorcycle,\n faMountain: faMountain,\n faMountains: faMountains,\n faMouse: faMouse,\n faMouseAlt: faMouseAlt,\n faMousePointer: faMousePointer,\n faMp3Player: faMp3Player,\n faMug: faMug,\n faMugHot: faMugHot,\n faMugMarshmallows: faMugMarshmallows,\n faMugTea: faMugTea,\n faMusic: faMusic,\n faMusicAlt: faMusicAlt,\n faMusicAltSlash: faMusicAltSlash,\n faMusicSlash: faMusicSlash,\n faNarwhal: faNarwhal,\n faNetworkWired: faNetworkWired,\n faNeuter: faNeuter,\n faNewspaper: faNewspaper,\n faNotEqual: faNotEqual,\n faNotesMedical: faNotesMedical,\n faObjectGroup: faObjectGroup,\n faObjectUngroup: faObjectUngroup,\n faOctagon: faOctagon,\n faOilCan: faOilCan,\n faOilTemp: faOilTemp,\n faOm: faOm,\n faOmega: faOmega,\n faOrnament: faOrnament,\n faOtter: faOtter,\n faOutdent: faOutdent,\n faOutlet: faOutlet,\n faOven: faOven,\n faOverline: faOverline,\n faPageBreak: faPageBreak,\n faPager: faPager,\n faPaintBrush: faPaintBrush,\n faPaintBrushAlt: faPaintBrushAlt,\n faPaintRoller: faPaintRoller,\n faPalette: faPalette,\n faPallet: faPallet,\n faPalletAlt: faPalletAlt,\n faPaperPlane: faPaperPlane,\n faPaperclip: faPaperclip,\n faParachuteBox: faParachuteBox,\n faParagraph: faParagraph,\n faParagraphRtl: faParagraphRtl,\n faParking: faParking,\n faParkingCircle: faParkingCircle,\n faParkingCircleSlash: faParkingCircleSlash,\n faParkingSlash: faParkingSlash,\n faPassport: faPassport,\n faPastafarianism: faPastafarianism,\n faPaste: faPaste,\n faPause: faPause,\n faPauseCircle: faPauseCircle,\n faPaw: faPaw,\n faPawAlt: faPawAlt,\n faPawClaws: faPawClaws,\n faPeace: faPeace,\n faPegasus: faPegasus,\n faPen: faPen,\n faPenAlt: faPenAlt,\n faPenFancy: faPenFancy,\n faPenNib: faPenNib,\n faPenSquare: faPenSquare,\n faPencil: faPencil,\n faPencilAlt: faPencilAlt,\n faPencilPaintbrush: faPencilPaintbrush,\n faPencilRuler: faPencilRuler,\n faPennant: faPennant,\n faPeopleArrows: faPeopleArrows,\n faPeopleCarry: faPeopleCarry,\n faPepperHot: faPepperHot,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faPersonBooth: faPersonBooth,\n faPersonCarry: faPersonCarry,\n faPersonDolly: faPersonDolly,\n faPersonDollyEmpty: faPersonDollyEmpty,\n faPersonSign: faPersonSign,\n faPhone: faPhone,\n faPhoneAlt: faPhoneAlt,\n faPhoneLaptop: faPhoneLaptop,\n faPhoneOffice: faPhoneOffice,\n faPhonePlus: faPhonePlus,\n faPhoneRotary: faPhoneRotary,\n faPhoneSlash: faPhoneSlash,\n faPhoneSquare: faPhoneSquare,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faPhoneVolume: faPhoneVolume,\n faPhotoVideo: faPhotoVideo,\n faPi: faPi,\n faPiano: faPiano,\n faPianoKeyboard: faPianoKeyboard,\n faPie: faPie,\n faPig: faPig,\n faPiggyBank: faPiggyBank,\n faPills: faPills,\n faPizza: faPizza,\n faPizzaSlice: faPizzaSlice,\n faPlaceOfWorship: faPlaceOfWorship,\n faPlane: faPlane,\n faPlaneAlt: faPlaneAlt,\n faPlaneArrival: faPlaneArrival,\n faPlaneDeparture: faPlaneDeparture,\n faPlaneSlash: faPlaneSlash,\n faPlanetMoon: faPlanetMoon,\n faPlanetRinged: faPlanetRinged,\n faPlay: faPlay,\n faPlayCircle: faPlayCircle,\n faPlug: faPlug,\n faPlus: faPlus,\n faPlusCircle: faPlusCircle,\n faPlusHexagon: faPlusHexagon,\n faPlusOctagon: faPlusOctagon,\n faPlusSquare: faPlusSquare,\n faPodcast: faPodcast,\n faPodium: faPodium,\n faPodiumStar: faPodiumStar,\n faPoliceBox: faPoliceBox,\n faPoll: faPoll,\n faPollH: faPollH,\n faPollPeople: faPollPeople,\n faPoo: faPoo,\n faPooStorm: faPooStorm,\n faPoop: faPoop,\n faPopcorn: faPopcorn,\n faPortalEnter: faPortalEnter,\n faPortalExit: faPortalExit,\n faPortrait: faPortrait,\n faPoundSign: faPoundSign,\n faPowerOff: faPowerOff,\n faPray: faPray,\n faPrayingHands: faPrayingHands,\n faPrescription: faPrescription,\n faPrescriptionBottle: faPrescriptionBottle,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faPresentation: faPresentation,\n faPrint: faPrint,\n faPrintSearch: faPrintSearch,\n faPrintSlash: faPrintSlash,\n faProcedures: faProcedures,\n faProjectDiagram: faProjectDiagram,\n faProjector: faProjector,\n faPumpMedical: faPumpMedical,\n faPumpSoap: faPumpSoap,\n faPumpkin: faPumpkin,\n faPuzzlePiece: faPuzzlePiece,\n faQrcode: faQrcode,\n faQuestion: faQuestion,\n faQuestionCircle: faQuestionCircle,\n faQuestionSquare: faQuestionSquare,\n faQuidditch: faQuidditch,\n faQuoteLeft: faQuoteLeft,\n faQuoteRight: faQuoteRight,\n faQuran: faQuran,\n faRabbit: faRabbit,\n faRabbitFast: faRabbitFast,\n faRacquet: faRacquet,\n faRadar: faRadar,\n faRadiation: faRadiation,\n faRadiationAlt: faRadiationAlt,\n faRadio: faRadio,\n faRadioAlt: faRadioAlt,\n faRainbow: faRainbow,\n faRaindrops: faRaindrops,\n faRam: faRam,\n faRampLoading: faRampLoading,\n faRandom: faRandom,\n faRaygun: faRaygun,\n faReceipt: faReceipt,\n faRecordVinyl: faRecordVinyl,\n faRectangleLandscape: faRectangleLandscape,\n faRectanglePortrait: faRectanglePortrait,\n faRectangleWide: faRectangleWide,\n faRecycle: faRecycle,\n faRedo: faRedo,\n faRedoAlt: faRedoAlt,\n faRefrigerator: faRefrigerator,\n faRegistered: faRegistered,\n faRemoveFormat: faRemoveFormat,\n faRepeat: faRepeat,\n faRepeat1: faRepeat1,\n faRepeat1Alt: faRepeat1Alt,\n faRepeatAlt: faRepeatAlt,\n faReply: faReply,\n faReplyAll: faReplyAll,\n faRepublican: faRepublican,\n faRestroom: faRestroom,\n faRetweet: faRetweet,\n faRetweetAlt: faRetweetAlt,\n faRibbon: faRibbon,\n faRing: faRing,\n faRingsWedding: faRingsWedding,\n faRoad: faRoad,\n faRobot: faRobot,\n faRocket: faRocket,\n faRocketLaunch: faRocketLaunch,\n faRoute: faRoute,\n faRouteHighway: faRouteHighway,\n faRouteInterstate: faRouteInterstate,\n faRouter: faRouter,\n faRss: faRss,\n faRssSquare: faRssSquare,\n faRubleSign: faRubleSign,\n faRuler: faRuler,\n faRulerCombined: faRulerCombined,\n faRulerHorizontal: faRulerHorizontal,\n faRulerTriangle: faRulerTriangle,\n faRulerVertical: faRulerVertical,\n faRunning: faRunning,\n faRupeeSign: faRupeeSign,\n faRv: faRv,\n faSack: faSack,\n faSackDollar: faSackDollar,\n faSadCry: faSadCry,\n faSadTear: faSadTear,\n faSalad: faSalad,\n faSandwich: faSandwich,\n faSatellite: faSatellite,\n faSatelliteDish: faSatelliteDish,\n faSausage: faSausage,\n faSave: faSave,\n faSaxHot: faSaxHot,\n faSaxophone: faSaxophone,\n faScalpel: faScalpel,\n faScalpelPath: faScalpelPath,\n faScanner: faScanner,\n faScannerImage: faScannerImage,\n faScannerKeyboard: faScannerKeyboard,\n faScannerTouchscreen: faScannerTouchscreen,\n faScarecrow: faScarecrow,\n faScarf: faScarf,\n faSchool: faSchool,\n faScrewdriver: faScrewdriver,\n faScroll: faScroll,\n faScrollOld: faScrollOld,\n faScrubber: faScrubber,\n faScythe: faScythe,\n faSdCard: faSdCard,\n faSearch: faSearch,\n faSearchDollar: faSearchDollar,\n faSearchLocation: faSearchLocation,\n faSearchMinus: faSearchMinus,\n faSearchPlus: faSearchPlus,\n faSeedling: faSeedling,\n faSendBack: faSendBack,\n faSendBackward: faSendBackward,\n faSensor: faSensor,\n faSensorAlert: faSensorAlert,\n faSensorFire: faSensorFire,\n faSensorOn: faSensorOn,\n faSensorSmoke: faSensorSmoke,\n faServer: faServer,\n faShapes: faShapes,\n faShare: faShare,\n faShareAll: faShareAll,\n faShareAlt: faShareAlt,\n faShareAltSquare: faShareAltSquare,\n faShareSquare: faShareSquare,\n faSheep: faSheep,\n faShekelSign: faShekelSign,\n faShield: faShield,\n faShieldAlt: faShieldAlt,\n faShieldCheck: faShieldCheck,\n faShieldCross: faShieldCross,\n faShieldVirus: faShieldVirus,\n faShip: faShip,\n faShippingFast: faShippingFast,\n faShippingTimed: faShippingTimed,\n faShishKebab: faShishKebab,\n faShoePrints: faShoePrints,\n faShoppingBag: faShoppingBag,\n faShoppingBasket: faShoppingBasket,\n faShoppingCart: faShoppingCart,\n faShovel: faShovel,\n faShovelSnow: faShovelSnow,\n faShower: faShower,\n faShredder: faShredder,\n faShuttleVan: faShuttleVan,\n faShuttlecock: faShuttlecock,\n faSickle: faSickle,\n faSigma: faSigma,\n faSign: faSign,\n faSignIn: faSignIn,\n faSignInAlt: faSignInAlt,\n faSignLanguage: faSignLanguage,\n faSignOut: faSignOut,\n faSignOutAlt: faSignOutAlt,\n faSignal: faSignal,\n faSignal1: faSignal1,\n faSignal2: faSignal2,\n faSignal3: faSignal3,\n faSignal4: faSignal4,\n faSignalAlt: faSignalAlt,\n faSignalAlt1: faSignalAlt1,\n faSignalAlt2: faSignalAlt2,\n faSignalAlt3: faSignalAlt3,\n faSignalAltSlash: faSignalAltSlash,\n faSignalSlash: faSignalSlash,\n faSignalStream: faSignalStream,\n faSignature: faSignature,\n faSimCard: faSimCard,\n faSink: faSink,\n faSiren: faSiren,\n faSirenOn: faSirenOn,\n faSitemap: faSitemap,\n faSkating: faSkating,\n faSkeleton: faSkeleton,\n faSkiJump: faSkiJump,\n faSkiLift: faSkiLift,\n faSkiing: faSkiing,\n faSkiingNordic: faSkiingNordic,\n faSkull: faSkull,\n faSkullCow: faSkullCow,\n faSkullCrossbones: faSkullCrossbones,\n faSlash: faSlash,\n faSledding: faSledding,\n faSleigh: faSleigh,\n faSlidersH: faSlidersH,\n faSlidersHSquare: faSlidersHSquare,\n faSlidersV: faSlidersV,\n faSlidersVSquare: faSlidersVSquare,\n faSmile: faSmile,\n faSmileBeam: faSmileBeam,\n faSmilePlus: faSmilePlus,\n faSmileWink: faSmileWink,\n faSmog: faSmog,\n faSmoke: faSmoke,\n faSmoking: faSmoking,\n faSmokingBan: faSmokingBan,\n faSms: faSms,\n faSnake: faSnake,\n faSnooze: faSnooze,\n faSnowBlowing: faSnowBlowing,\n faSnowboarding: faSnowboarding,\n faSnowflake: faSnowflake,\n faSnowflakes: faSnowflakes,\n faSnowman: faSnowman,\n faSnowmobile: faSnowmobile,\n faSnowplow: faSnowplow,\n faSoap: faSoap,\n faSocks: faSocks,\n faSolarPanel: faSolarPanel,\n faSolarSystem: faSolarSystem,\n faSort: faSort,\n faSortAlphaDown: faSortAlphaDown,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faSortAlphaUp: faSortAlphaUp,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faSortAlt: faSortAlt,\n faSortAmountDown: faSortAmountDown,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faSortAmountUp: faSortAmountUp,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faSortCircle: faSortCircle,\n faSortCircleDown: faSortCircleDown,\n faSortCircleUp: faSortCircleUp,\n faSortDown: faSortDown,\n faSortNumericDown: faSortNumericDown,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faSortNumericUp: faSortNumericUp,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faSortShapesDown: faSortShapesDown,\n faSortShapesDownAlt: faSortShapesDownAlt,\n faSortShapesUp: faSortShapesUp,\n faSortShapesUpAlt: faSortShapesUpAlt,\n faSortSizeDown: faSortSizeDown,\n faSortSizeDownAlt: faSortSizeDownAlt,\n faSortSizeUp: faSortSizeUp,\n faSortSizeUpAlt: faSortSizeUpAlt,\n faSortUp: faSortUp,\n faSoup: faSoup,\n faSpa: faSpa,\n faSpaceShuttle: faSpaceShuttle,\n faSpaceStationMoon: faSpaceStationMoon,\n faSpaceStationMoonAlt: faSpaceStationMoonAlt,\n faSpade: faSpade,\n faSparkles: faSparkles,\n faSpeaker: faSpeaker,\n faSpeakers: faSpeakers,\n faSpellCheck: faSpellCheck,\n faSpider: faSpider,\n faSpiderBlackWidow: faSpiderBlackWidow,\n faSpiderWeb: faSpiderWeb,\n faSpinner: faSpinner,\n faSpinnerThird: faSpinnerThird,\n faSplotch: faSplotch,\n faSprayCan: faSprayCan,\n faSprinkler: faSprinkler,\n faSquare: faSquare,\n faSquareFull: faSquareFull,\n faSquareRoot: faSquareRoot,\n faSquareRootAlt: faSquareRootAlt,\n faSquirrel: faSquirrel,\n faStaff: faStaff,\n faStamp: faStamp,\n faStar: faStar,\n faStarAndCrescent: faStarAndCrescent,\n faStarChristmas: faStarChristmas,\n faStarExclamation: faStarExclamation,\n faStarHalf: faStarHalf,\n faStarHalfAlt: faStarHalfAlt,\n faStarOfDavid: faStarOfDavid,\n faStarOfLife: faStarOfLife,\n faStarShooting: faStarShooting,\n faStarfighter: faStarfighter,\n faStarfighterAlt: faStarfighterAlt,\n faStars: faStars,\n faStarship: faStarship,\n faStarshipFreighter: faStarshipFreighter,\n faSteak: faSteak,\n faSteeringWheel: faSteeringWheel,\n faStepBackward: faStepBackward,\n faStepForward: faStepForward,\n faStethoscope: faStethoscope,\n faStickyNote: faStickyNote,\n faStocking: faStocking,\n faStomach: faStomach,\n faStop: faStop,\n faStopCircle: faStopCircle,\n faStopwatch: faStopwatch,\n faStopwatch20: faStopwatch20,\n faStore: faStore,\n faStoreAlt: faStoreAlt,\n faStoreAltSlash: faStoreAltSlash,\n faStoreSlash: faStoreSlash,\n faStream: faStream,\n faStreetView: faStreetView,\n faStretcher: faStretcher,\n faStrikethrough: faStrikethrough,\n faStroopwafel: faStroopwafel,\n faSubscript: faSubscript,\n faSubway: faSubway,\n faSuitcase: faSuitcase,\n faSuitcaseRolling: faSuitcaseRolling,\n faSun: faSun,\n faSunCloud: faSunCloud,\n faSunDust: faSunDust,\n faSunHaze: faSunHaze,\n faSunglasses: faSunglasses,\n faSunrise: faSunrise,\n faSunset: faSunset,\n faSuperscript: faSuperscript,\n faSurprise: faSurprise,\n faSwatchbook: faSwatchbook,\n faSwimmer: faSwimmer,\n faSwimmingPool: faSwimmingPool,\n faSword: faSword,\n faSwordLaser: faSwordLaser,\n faSwordLaserAlt: faSwordLaserAlt,\n faSwords: faSwords,\n faSwordsLaser: faSwordsLaser,\n faSynagogue: faSynagogue,\n faSync: faSync,\n faSyncAlt: faSyncAlt,\n faSyringe: faSyringe,\n faTable: faTable,\n faTableTennis: faTableTennis,\n faTablet: faTablet,\n faTabletAlt: faTabletAlt,\n faTabletAndroid: faTabletAndroid,\n faTabletAndroidAlt: faTabletAndroidAlt,\n faTabletRugged: faTabletRugged,\n faTablets: faTablets,\n faTachometer: faTachometer,\n faTachometerAlt: faTachometerAlt,\n faTachometerAltAverage: faTachometerAltAverage,\n faTachometerAltFast: faTachometerAltFast,\n faTachometerAltFastest: faTachometerAltFastest,\n faTachometerAltSlow: faTachometerAltSlow,\n faTachometerAltSlowest: faTachometerAltSlowest,\n faTachometerAverage: faTachometerAverage,\n faTachometerFast: faTachometerFast,\n faTachometerFastest: faTachometerFastest,\n faTachometerSlow: faTachometerSlow,\n faTachometerSlowest: faTachometerSlowest,\n faTaco: faTaco,\n faTag: faTag,\n faTags: faTags,\n faTally: faTally,\n faTanakh: faTanakh,\n faTape: faTape,\n faTasks: faTasks,\n faTasksAlt: faTasksAlt,\n faTaxi: faTaxi,\n faTeeth: faTeeth,\n faTeethOpen: faTeethOpen,\n faTelescope: faTelescope,\n faTemperatureDown: faTemperatureDown,\n faTemperatureFrigid: faTemperatureFrigid,\n faTemperatureHigh: faTemperatureHigh,\n faTemperatureHot: faTemperatureHot,\n faTemperatureLow: faTemperatureLow,\n faTemperatureUp: faTemperatureUp,\n faTenge: faTenge,\n faTennisBall: faTennisBall,\n faTerminal: faTerminal,\n faText: faText,\n faTextHeight: faTextHeight,\n faTextSize: faTextSize,\n faTextWidth: faTextWidth,\n faTh: faTh,\n faThLarge: faThLarge,\n faThList: faThList,\n faTheaterMasks: faTheaterMasks,\n faThermometer: faThermometer,\n faThermometerEmpty: faThermometerEmpty,\n faThermometerFull: faThermometerFull,\n faThermometerHalf: faThermometerHalf,\n faThermometerQuarter: faThermometerQuarter,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faTheta: faTheta,\n faThumbsDown: faThumbsDown,\n faThumbsUp: faThumbsUp,\n faThumbtack: faThumbtack,\n faThunderstorm: faThunderstorm,\n faThunderstormMoon: faThunderstormMoon,\n faThunderstormSun: faThunderstormSun,\n faTicket: faTicket,\n faTicketAlt: faTicketAlt,\n faTilde: faTilde,\n faTimes: faTimes,\n faTimesCircle: faTimesCircle,\n faTimesHexagon: faTimesHexagon,\n faTimesOctagon: faTimesOctagon,\n faTimesSquare: faTimesSquare,\n faTint: faTint,\n faTintSlash: faTintSlash,\n faTire: faTire,\n faTireFlat: faTireFlat,\n faTirePressureWarning: faTirePressureWarning,\n faTireRugged: faTireRugged,\n faTired: faTired,\n faToggleOff: faToggleOff,\n faToggleOn: faToggleOn,\n faToilet: faToilet,\n faToiletPaper: faToiletPaper,\n faToiletPaperAlt: faToiletPaperAlt,\n faToiletPaperSlash: faToiletPaperSlash,\n faTombstone: faTombstone,\n faTombstoneAlt: faTombstoneAlt,\n faToolbox: faToolbox,\n faTools: faTools,\n faTooth: faTooth,\n faToothbrush: faToothbrush,\n faTorah: faTorah,\n faToriiGate: faToriiGate,\n faTornado: faTornado,\n faTractor: faTractor,\n faTrademark: faTrademark,\n faTrafficCone: faTrafficCone,\n faTrafficLight: faTrafficLight,\n faTrafficLightGo: faTrafficLightGo,\n faTrafficLightSlow: faTrafficLightSlow,\n faTrafficLightStop: faTrafficLightStop,\n faTrailer: faTrailer,\n faTrain: faTrain,\n faTram: faTram,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faTransporter: faTransporter,\n faTransporter1: faTransporter1,\n faTransporter2: faTransporter2,\n faTransporter3: faTransporter3,\n faTransporterEmpty: faTransporterEmpty,\n faTrash: faTrash,\n faTrashAlt: faTrashAlt,\n faTrashRestore: faTrashRestore,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faTrashUndo: faTrashUndo,\n faTrashUndoAlt: faTrashUndoAlt,\n faTreasureChest: faTreasureChest,\n faTree: faTree,\n faTreeAlt: faTreeAlt,\n faTreeChristmas: faTreeChristmas,\n faTreeDecorated: faTreeDecorated,\n faTreeLarge: faTreeLarge,\n faTreePalm: faTreePalm,\n faTrees: faTrees,\n faTriangle: faTriangle,\n faTriangleMusic: faTriangleMusic,\n faTrophy: faTrophy,\n faTrophyAlt: faTrophyAlt,\n faTruck: faTruck,\n faTruckContainer: faTruckContainer,\n faTruckCouch: faTruckCouch,\n faTruckLoading: faTruckLoading,\n faTruckMonster: faTruckMonster,\n faTruckMoving: faTruckMoving,\n faTruckPickup: faTruckPickup,\n faTruckPlow: faTruckPlow,\n faTruckRamp: faTruckRamp,\n faTrumpet: faTrumpet,\n faTshirt: faTshirt,\n faTty: faTty,\n faTurkey: faTurkey,\n faTurntable: faTurntable,\n faTurtle: faTurtle,\n faTv: faTv,\n faTvAlt: faTvAlt,\n faTvMusic: faTvMusic,\n faTvRetro: faTvRetro,\n faTypewriter: faTypewriter,\n faUfo: faUfo,\n faUfoBeam: faUfoBeam,\n faUmbrella: faUmbrella,\n faUmbrellaBeach: faUmbrellaBeach,\n faUnderline: faUnderline,\n faUndo: faUndo,\n faUndoAlt: faUndoAlt,\n faUnicorn: faUnicorn,\n faUnion: faUnion,\n faUniversalAccess: faUniversalAccess,\n faUniversity: faUniversity,\n faUnlink: faUnlink,\n faUnlock: faUnlock,\n faUnlockAlt: faUnlockAlt,\n faUpload: faUpload,\n faUsbDrive: faUsbDrive,\n faUsdCircle: faUsdCircle,\n faUsdSquare: faUsdSquare,\n faUser: faUser,\n faUserAlien: faUserAlien,\n faUserAlt: faUserAlt,\n faUserAltSlash: faUserAltSlash,\n faUserAstronaut: faUserAstronaut,\n faUserChart: faUserChart,\n faUserCheck: faUserCheck,\n faUserCircle: faUserCircle,\n faUserClock: faUserClock,\n faUserCog: faUserCog,\n faUserCowboy: faUserCowboy,\n faUserCrown: faUserCrown,\n faUserEdit: faUserEdit,\n faUserFriends: faUserFriends,\n faUserGraduate: faUserGraduate,\n faUserHardHat: faUserHardHat,\n faUserHeadset: faUserHeadset,\n faUserInjured: faUserInjured,\n faUserLock: faUserLock,\n faUserMd: faUserMd,\n faUserMdChat: faUserMdChat,\n faUserMinus: faUserMinus,\n faUserMusic: faUserMusic,\n faUserNinja: faUserNinja,\n faUserNurse: faUserNurse,\n faUserPlus: faUserPlus,\n faUserRobot: faUserRobot,\n faUserSecret: faUserSecret,\n faUserShield: faUserShield,\n faUserSlash: faUserSlash,\n faUserTag: faUserTag,\n faUserTie: faUserTie,\n faUserTimes: faUserTimes,\n faUserUnlock: faUserUnlock,\n faUserVisor: faUserVisor,\n faUsers: faUsers,\n faUsersClass: faUsersClass,\n faUsersCog: faUsersCog,\n faUsersCrown: faUsersCrown,\n faUsersMedical: faUsersMedical,\n faUsersSlash: faUsersSlash,\n faUtensilFork: faUtensilFork,\n faUtensilKnife: faUtensilKnife,\n faUtensilSpoon: faUtensilSpoon,\n faUtensils: faUtensils,\n faUtensilsAlt: faUtensilsAlt,\n faVacuum: faVacuum,\n faVacuumRobot: faVacuumRobot,\n faValueAbsolute: faValueAbsolute,\n faVectorSquare: faVectorSquare,\n faVenus: faVenus,\n faVenusDouble: faVenusDouble,\n faVenusMars: faVenusMars,\n faVest: faVest,\n faVestPatches: faVestPatches,\n faVhs: faVhs,\n faVial: faVial,\n faVials: faVials,\n faVideo: faVideo,\n faVideoPlus: faVideoPlus,\n faVideoSlash: faVideoSlash,\n faVihara: faVihara,\n faViolin: faViolin,\n faVirus: faVirus,\n faVirusSlash: faVirusSlash,\n faViruses: faViruses,\n faVoicemail: faVoicemail,\n faVolcano: faVolcano,\n faVolleyballBall: faVolleyballBall,\n faVolume: faVolume,\n faVolumeDown: faVolumeDown,\n faVolumeMute: faVolumeMute,\n faVolumeOff: faVolumeOff,\n faVolumeSlash: faVolumeSlash,\n faVolumeUp: faVolumeUp,\n faVoteNay: faVoteNay,\n faVoteYea: faVoteYea,\n faVrCardboard: faVrCardboard,\n faWagonCovered: faWagonCovered,\n faWalker: faWalker,\n faWalkieTalkie: faWalkieTalkie,\n faWalking: faWalking,\n faWallet: faWallet,\n faWand: faWand,\n faWandMagic: faWandMagic,\n faWarehouse: faWarehouse,\n faWarehouseAlt: faWarehouseAlt,\n faWasher: faWasher,\n faWatch: faWatch,\n faWatchCalculator: faWatchCalculator,\n faWatchFitness: faWatchFitness,\n faWater: faWater,\n faWaterLower: faWaterLower,\n faWaterRise: faWaterRise,\n faWaveSine: faWaveSine,\n faWaveSquare: faWaveSquare,\n faWaveTriangle: faWaveTriangle,\n faWaveform: faWaveform,\n faWaveformPath: faWaveformPath,\n faWebcam: faWebcam,\n faWebcamSlash: faWebcamSlash,\n faWeight: faWeight,\n faWeightHanging: faWeightHanging,\n faWhale: faWhale,\n faWheat: faWheat,\n faWheelchair: faWheelchair,\n faWhistle: faWhistle,\n faWifi: faWifi,\n faWifi1: faWifi1,\n faWifi2: faWifi2,\n faWifiSlash: faWifiSlash,\n faWind: faWind,\n faWindTurbine: faWindTurbine,\n faWindWarning: faWindWarning,\n faWindow: faWindow,\n faWindowAlt: faWindowAlt,\n faWindowClose: faWindowClose,\n faWindowFrame: faWindowFrame,\n faWindowFrameOpen: faWindowFrameOpen,\n faWindowMaximize: faWindowMaximize,\n faWindowMinimize: faWindowMinimize,\n faWindowRestore: faWindowRestore,\n faWindsock: faWindsock,\n faWineBottle: faWineBottle,\n faWineGlass: faWineGlass,\n faWineGlassAlt: faWineGlassAlt,\n faWonSign: faWonSign,\n faWreath: faWreath,\n faWrench: faWrench,\n faXRay: faXRay,\n faYenSign: faYenSign,\n faYinYang: faYinYang\n};\n\nexport { _iconsCache as fas, prefix, faAbacus, faAcorn, faAd, faAddressBook, faAddressCard, faAdjust, faAirConditioner, faAirFreshener, faAlarmClock, faAlarmExclamation, faAlarmPlus, faAlarmSnooze, faAlbum, faAlbumCollection, faAlicorn, faAlien, faAlienMonster, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAlignSlash, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAmpGuitar, faAnalytics, faAnchor, faAngel, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faAppleCrate, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowAltDown, faArrowAltFromBottom, faArrowAltFromLeft, faArrowAltFromRight, faArrowAltFromTop, faArrowAltLeft, faArrowAltRight, faArrowAltSquareDown, faArrowAltSquareLeft, faArrowAltSquareRight, faArrowAltSquareUp, faArrowAltToBottom, faArrowAltToLeft, faArrowAltToRight, faArrowAltToTop, faArrowAltUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowFromBottom, faArrowFromLeft, faArrowFromRight, faArrowFromTop, faArrowLeft, faArrowRight, faArrowSquareDown, faArrowSquareLeft, faArrowSquareRight, faArrowSquareUp, faArrowToBottom, faArrowToLeft, faArrowToRight, faArrowToTop, faArrowUp, faArrows, faArrowsAlt, faArrowsAltH, faArrowsAltV, faArrowsH, faArrowsV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAtomAlt, faAudioDescription, faAward, faAxe, faAxeBattle, faBaby, faBabyCarriage, faBackpack, faBackspace, faBackward, faBacon, faBacteria, faBacterium, faBadge, faBadgeCheck, faBadgeDollar, faBadgePercent, faBadgeSheriff, faBadgerHoney, faBagsShopping, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBallPile, faBallot, faBallotCheck, faBan, faBandAid, faBanjo, faBarcode, faBarcodeAlt, faBarcodeRead, faBarcodeScan, faBars, faBaseball, faBaseballBall, faBasketballBall, faBasketballHoop, faBat, faBath, faBatteryBolt, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatterySlash, faBatteryThreeQuarters, faBed, faBedAlt, faBedBunk, faBedEmpty, faBeer, faBell, faBellExclamation, faBellOn, faBellPlus, faBellSchool, faBellSchoolSlash, faBellSlash, faBells, faBetamax, faBezierCurve, faBible, faBicycle, faBiking, faBikingMountain, faBinoculars, faBiohazard, faBirthdayCake, faBlanket, faBlender, faBlenderPhone, faBlind, faBlinds, faBlindsOpen, faBlindsRaised, faBlog, faBold, faBolt, faBomb, faBone, faBoneBreak, faBong, faBook, faBookAlt, faBookDead, faBookHeart, faBookMedical, faBookOpen, faBookReader, faBookSpells, faBookUser, faBookmark, faBooks, faBooksMedical, faBoombox, faBoot, faBoothCurtain, faBorderAll, faBorderBottom, faBorderCenterH, faBorderCenterV, faBorderInner, faBorderLeft, faBorderNone, faBorderOuter, faBorderRight, faBorderStyle, faBorderStyleAlt, faBorderTop, faBowArrow, faBowlingBall, faBowlingPins, faBox, faBoxAlt, faBoxBallot, faBoxCheck, faBoxFragile, faBoxFull, faBoxHeart, faBoxOpen, faBoxTissue, faBoxUp, faBoxUsd, faBoxes, faBoxesAlt, faBoxingGlove, faBrackets, faBracketsCurly, faBraille, faBrain, faBreadLoaf, faBreadSlice, faBriefcase, faBriefcaseMedical, faBringForward, faBringFront, faBroadcastTower, faBroom, faBrowser, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBullseyeArrow, faBullseyePointer, faBurgerSoda, faBurn, faBurrito, faBus, faBusAlt, faBusSchool, faBusinessTime, faCabinetFiling, faCactus, faCalculator, faCalculatorAlt, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarEdit, faCalendarExclamation, faCalendarMinus, faCalendarPlus, faCalendarStar, faCalendarTimes, faCalendarWeek, faCamcorder, faCamera, faCameraAlt, faCameraHome, faCameraMovie, faCameraPolaroid, faCameraRetro, faCampfire, faCampground, faCandleHolder, faCandyCane, faCandyCorn, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarBuilding, faCarBump, faCarBus, faCarCrash, faCarGarage, faCarMechanic, faCarSide, faCarTilt, faCarWash, faCaravan, faCaravanAlt, faCaretCircleDown, faCaretCircleLeft, faCaretCircleRight, faCaretCircleUp, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCars, faCartArrowDown, faCartPlus, faCashRegister, faCassetteTape, faCat, faCatSpace, faCauldron, faCctv, faCertificate, faChair, faChairOffice, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartLineDown, faChartNetwork, faChartPie, faChartPieAlt, faChartScatter, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faCheeseSwiss, faCheeseburger, faChess, faChessBishop, faChessBishopAlt, faChessBoard, faChessClock, faChessClockAlt, faChessKing, faChessKingAlt, faChessKnight, faChessKnightAlt, faChessPawn, faChessPawnAlt, faChessQueen, faChessQueenAlt, faChessRook, faChessRookAlt, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDoubleDown, faChevronDoubleLeft, faChevronDoubleRight, faChevronDoubleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronSquareDown, faChevronSquareLeft, faChevronSquareRight, faChevronSquareUp, faChevronUp, faChild, faChimney, faChurch, faCircle, faCircleNotch, faCity, faClarinet, faClawMarks, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClipboardListCheck, faClipboardPrescription, faClipboardUser, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownload, faCloudDownloadAlt, faCloudDrizzle, faCloudHail, faCloudHailMixed, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudMusic, faCloudRain, faCloudRainbow, faCloudShowers, faCloudShowersHeavy, faCloudSleet, faCloudSnow, faCloudSun, faCloudSunRain, faCloudUpload, faCloudUploadAlt, faClouds, faCloudsMoon, faCloudsSun, faClub, faCocktail, faCode, faCodeBranch, faCodeCommit, faCodeMerge, faCoffee, faCoffeePot, faCoffeeTogo, faCoffin, faCoffinCross, faCog, faCogs, faCoin, faCoins, faColumns, faComet, faComment, faCommentAlt, faCommentAltCheck, faCommentAltDollar, faCommentAltDots, faCommentAltEdit, faCommentAltExclamation, faCommentAltLines, faCommentAltMedical, faCommentAltMinus, faCommentAltMusic, faCommentAltPlus, faCommentAltSlash, faCommentAltSmile, faCommentAltTimes, faCommentCheck, faCommentDollar, faCommentDots, faCommentEdit, faCommentExclamation, faCommentLines, faCommentMedical, faCommentMinus, faCommentMusic, faCommentPlus, faCommentSlash, faCommentSmile, faCommentTimes, faComments, faCommentsAlt, faCommentsAltDollar, faCommentsDollar, faCompactDisc, faCompass, faCompassSlash, faCompress, faCompressAlt, faCompressArrowsAlt, faCompressWide, faComputerClassic, faComputerSpeaker, faConciergeBell, faConstruction, faContainerStorage, faConveyorBelt, faConveyorBeltAlt, faCookie, faCookieBite, faCopy, faCopyright, faCorn, faCouch, faCow, faCowbell, faCowbellMore, faCreditCard, faCreditCardBlank, faCreditCardFront, faCricket, faCroissant, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCrutches, faCube, faCubes, faCurling, faCut, faDagger, faDatabase, faDeaf, faDebug, faDeer, faDeerRudolph, faDemocrat, faDesktop, faDesktopAlt, faDewpoint, faDharmachakra, faDiagnoses, faDiamond, faDice, faDiceD10, faDiceD12, faDiceD20, faDiceD4, faDiceD6, faDiceD8, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigging, faDigitalTachograph, faDiploma, faDirections, faDiscDrive, faDisease, faDivide, faDizzy, faDna, faDoNotEnter, faDog, faDogLeashed, faDollarSign, faDolly, faDollyEmpty, faDollyFlatbed, faDollyFlatbedAlt, faDollyFlatbedEmpty, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawCircle, faDrawPolygon, faDrawSquare, faDreidel, faDrone, faDroneAlt, faDrum, faDrumSteelpan, faDrumstick, faDrumstickBite, faDryer, faDryerAlt, faDuck, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEar, faEarMuffs, faEclipse, faEclipseAlt, faEdit, faEgg, faEggFried, faEject, faElephant, faEllipsisH, faEllipsisHAlt, faEllipsisV, faEllipsisVAlt, faEmptySet, faEngineWarning, faEnvelope, faEnvelopeOpen, faEnvelopeOpenDollar, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchange, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationSquare, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrows, faExpandArrowsAlt, faExpandWide, faExternalLink, faExternalLinkAlt, faExternalLinkSquare, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeEvil, faEyeSlash, faFan, faFanTable, faFarm, faFastBackward, faFastForward, faFaucet, faFaucetDrip, faFax, faFeather, faFeatherAlt, faFemale, faFieldHockey, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCertificate, faFileChartLine, faFileChartPie, faFileCheck, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileEdit, faFileExcel, faFileExclamation, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFileMinus, faFileMusic, faFilePdf, faFilePlus, faFilePowerpoint, faFilePrescription, faFileSearch, faFileSignature, faFileSpreadsheet, faFileTimes, faFileUpload, faFileUser, faFileVideo, faFileWord, faFilesMedical, faFill, faFillDrip, faFilm, faFilmAlt, faFilmCanister, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFireSmoke, faFireplace, faFirstAid, faFish, faFishCooked, faFistRaised, faFlag, faFlagAlt, faFlagCheckered, faFlagUsa, faFlame, faFlashlight, faFlask, faFlaskPoison, faFlaskPotion, faFlower, faFlowerDaffodil, faFlowerTulip, faFlushed, faFlute, faFluxCapacitor, faFog, faFolder, faFolderDownload, faFolderMinus, faFolderOpen, faFolderPlus, faFolderTimes, faFolderTree, faFolderUpload, faFolders, faFont, faFontAwesomeLogoFull, faFontCase, faFootballBall, faFootballHelmet, faForklift, faForward, faFragile, faFrenchFries, faFrog, faFrostyHead, faFrown, faFrownOpen, faFunction, faFunnelDollar, faFutbol, faGalaxy, faGameBoard, faGameBoardAlt, faGameConsoleHandheld, faGamepad, faGamepadAlt, faGarage, faGarageCar, faGarageOpen, faGasPump, faGasPumpSlash, faGavel, faGem, faGenderless, faGhost, faGift, faGiftCard, faGifts, faGingerbreadMan, faGlass, faGlassChampagne, faGlassCheers, faGlassCitrus, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlassWhiskeyRocks, faGlasses, faGlassesAlt, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGlobeSnow, faGlobeStand, faGolfBall, faGolfClub, faGopuram, faGraduationCap, faGramophone, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faGuitarElectric, faGuitars, faHSquare, faH1, faH2, faH3, faH4, faHamburger, faHammer, faHammerWar, faHamsa, faHandHeart, faHandHolding, faHandHoldingBox, faHandHoldingHeart, faHandHoldingMagic, faHandHoldingMedical, faHandHoldingSeedling, faHandHoldingUsd, faHandHoldingWater, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandReceiving, faHandRock, faHandScissors, faHandSparkles, faHandSpock, faHands, faHandsHeart, faHandsHelping, faHandsUsd, faHandsWash, faHandshake, faHandshakeAlt, faHandshakeAltSlash, faHandshakeSlash, faHanukiah, faHardHat, faHashtag, faHatChef, faHatCowboy, faHatCowboySide, faHatSanta, faHatWinter, faHatWitch, faHatWizard, faHdd, faHeadSide, faHeadSideBrain, faHeadSideCough, faHeadSideCoughSlash, faHeadSideHeadphones, faHeadSideMask, faHeadSideMedical, faHeadSideVirus, faHeadVr, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartCircle, faHeartRate, faHeartSquare, faHeartbeat, faHeat, faHelicopter, faHelmetBattle, faHexagon, faHighlighter, faHiking, faHippo, faHistory, faHockeyMask, faHockeyPuck, faHockeySticks, faHollyBerry, faHome, faHomeAlt, faHomeHeart, faHomeLg, faHomeLgAlt, faHoodCloak, faHorizontalRule, faHorse, faHorseHead, faHorseSaddle, faHospital, faHospitalAlt, faHospitalSymbol, faHospitalUser, faHospitals, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouse, faHouseDamage, faHouseDay, faHouseFlood, faHouseLeave, faHouseNight, faHouseReturn, faHouseSignal, faHouseUser, faHryvnia, faHumidity, faHurricane, faICursor, faIceCream, faIceSkate, faIcicles, faIcons, faIconsAlt, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImagePolaroid, faImages, faInbox, faInboxIn, faInboxOut, faIndent, faIndustry, faIndustryAlt, faInfinity, faInfo, faInfoCircle, faInfoSquare, faInhaler, faIntegral, faIntersection, faInventory, faIslandTropical, faItalic, faJackOLantern, faJedi, faJoint, faJournalWhills, faJoystick, faJug, faKaaba, faKazoo, faKerning, faKey, faKeySkeleton, faKeyboard, faKeynote, faKhanda, faKidneys, faKiss, faKissBeam, faKissWinkHeart, faKite, faKiwiBird, faKnifeKitchen, faLambda, faLamp, faLampDesk, faLampFloor, faLandmark, faLandmarkAlt, faLanguage, faLaptop, faLaptopCode, faLaptopHouse, faLaptopMedical, faLasso, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLayerMinus, faLayerPlus, faLeaf, faLeafHeart, faLeafMaple, faLeafOak, faLemon, faLessThan, faLessThanEqual, faLevelDown, faLevelDownAlt, faLevelUp, faLevelUpAlt, faLifeRing, faLightCeiling, faLightSwitch, faLightSwitchOff, faLightSwitchOn, faLightbulb, faLightbulbDollar, faLightbulbExclamation, faLightbulbOn, faLightbulbSlash, faLightsHoliday, faLineColumns, faLineHeight, faLink, faLips, faLiraSign, faList, faListAlt, faListMusic, faListOl, faListUl, faLocation, faLocationArrow, faLocationCircle, faLocationSlash, faLock, faLockAlt, faLockOpen, faLockOpenAlt, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLongArrowDown, faLongArrowLeft, faLongArrowRight, faLongArrowUp, faLoveseat, faLowVision, faLuchador, faLuggageCart, faLungs, faLungsVirus, faMace, faMagic, faMagnet, faMailBulk, faMailbox, faMale, faMandolin, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapMarkerAltSlash, faMapMarkerCheck, faMapMarkerEdit, faMapMarkerExclamation, faMapMarkerMinus, faMapMarkerPlus, faMapMarkerQuestion, faMapMarkerSlash, faMapMarkerSmile, faMapMarkerTimes, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMeat, faMedal, faMedkit, faMegaphone, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicrophoneStand, faMicroscope, faMicrowave, faMindShare, faMinus, faMinusCircle, faMinusHexagon, faMinusOctagon, faMinusSquare, faMistletoe, faMitten, faMobile, faMobileAlt, faMobileAndroid, faMobileAndroidAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMoneyCheckEdit, faMoneyCheckEditAlt, faMonitorHeartRate, faMonkey, faMonument, faMoon, faMoonCloud, faMoonStars, faMortarPestle, faMosque, faMotorcycle, faMountain, faMountains, faMouse, faMouseAlt, faMousePointer, faMp3Player, faMug, faMugHot, faMugMarshmallows, faMugTea, faMusic, faMusicAlt, faMusicAltSlash, faMusicSlash, faNarwhal, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOctagon, faOilCan, faOilTemp, faOm, faOmega, faOrnament, faOtter, faOutdent, faOutlet, faOven, faOverline, faPageBreak, faPager, faPaintBrush, faPaintBrushAlt, faPaintRoller, faPalette, faPallet, faPalletAlt, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParagraphRtl, faParking, faParkingCircle, faParkingCircleSlash, faParkingSlash, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPawAlt, faPawClaws, faPeace, faPegasus, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencil, faPencilAlt, faPencilPaintbrush, faPencilRuler, faPennant, faPeopleArrows, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPersonCarry, faPersonDolly, faPersonDollyEmpty, faPersonSign, faPhone, faPhoneAlt, faPhoneLaptop, faPhoneOffice, faPhonePlus, faPhoneRotary, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPi, faPiano, faPianoKeyboard, faPie, faPig, faPiggyBank, faPills, faPizza, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneAlt, faPlaneArrival, faPlaneDeparture, faPlaneSlash, faPlanetMoon, faPlanetRinged, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusHexagon, faPlusOctagon, faPlusSquare, faPodcast, faPodium, faPodiumStar, faPoliceBox, faPoll, faPollH, faPollPeople, faPoo, faPooStorm, faPoop, faPopcorn, faPortalEnter, faPortalExit, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPresentation, faPrint, faPrintSearch, faPrintSlash, faProcedures, faProjectDiagram, faProjector, faPumpMedical, faPumpSoap, faPumpkin, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuestionSquare, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRabbit, faRabbitFast, faRacquet, faRadar, faRadiation, faRadiationAlt, faRadio, faRadioAlt, faRainbow, faRaindrops, faRam, faRampLoading, faRandom, faRaygun, faReceipt, faRecordVinyl, faRectangleLandscape, faRectanglePortrait, faRectangleWide, faRecycle, faRedo, faRedoAlt, faRefrigerator, faRegistered, faRemoveFormat, faRepeat, faRepeat1, faRepeat1Alt, faRepeatAlt, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRetweetAlt, faRibbon, faRing, faRingsWedding, faRoad, faRobot, faRocket, faRocketLaunch, faRoute, faRouteHighway, faRouteInterstate, faRouter, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerTriangle, faRulerVertical, faRunning, faRupeeSign, faRv, faSack, faSackDollar, faSadCry, faSadTear, faSalad, faSandwich, faSatellite, faSatelliteDish, faSausage, faSave, faSaxHot, faSaxophone, faScalpel, faScalpelPath, faScanner, faScannerImage, faScannerKeyboard, faScannerTouchscreen, faScarecrow, faScarf, faSchool, faScrewdriver, faScroll, faScrollOld, faScrubber, faScythe, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faSendBack, faSendBackward, faSensor, faSensorAlert, faSensorFire, faSensorOn, faSensorSmoke, faServer, faShapes, faShare, faShareAll, faShareAlt, faShareAltSquare, faShareSquare, faSheep, faShekelSign, faShield, faShieldAlt, faShieldCheck, faShieldCross, faShieldVirus, faShip, faShippingFast, faShippingTimed, faShishKebab, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShovel, faShovelSnow, faShower, faShredder, faShuttleVan, faShuttlecock, faSickle, faSigma, faSign, faSignIn, faSignInAlt, faSignLanguage, faSignOut, faSignOutAlt, faSignal, faSignal1, faSignal2, faSignal3, faSignal4, faSignalAlt, faSignalAlt1, faSignalAlt2, faSignalAlt3, faSignalAltSlash, faSignalSlash, faSignalStream, faSignature, faSimCard, faSink, faSiren, faSirenOn, faSitemap, faSkating, faSkeleton, faSkiJump, faSkiLift, faSkiing, faSkiingNordic, faSkull, faSkullCow, faSkullCrossbones, faSlash, faSledding, faSleigh, faSlidersH, faSlidersHSquare, faSlidersV, faSlidersVSquare, faSmile, faSmileBeam, faSmilePlus, faSmileWink, faSmog, faSmoke, faSmoking, faSmokingBan, faSms, faSnake, faSnooze, faSnowBlowing, faSnowboarding, faSnowflake, faSnowflakes, faSnowman, faSnowmobile, faSnowplow, faSoap, faSocks, faSolarPanel, faSolarSystem, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortCircle, faSortCircleDown, faSortCircleUp, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortShapesDown, faSortShapesDownAlt, faSortShapesUp, faSortShapesUpAlt, faSortSizeDown, faSortSizeDownAlt, faSortSizeUp, faSortSizeUpAlt, faSortUp, faSoup, faSpa, faSpaceShuttle, faSpaceStationMoon, faSpaceStationMoonAlt, faSpade, faSparkles, faSpeaker, faSpeakers, faSpellCheck, faSpider, faSpiderBlackWidow, faSpiderWeb, faSpinner, faSpinnerThird, faSplotch, faSprayCan, faSprinkler, faSquare, faSquareFull, faSquareRoot, faSquareRootAlt, faSquirrel, faStaff, faStamp, faStar, faStarAndCrescent, faStarChristmas, faStarExclamation, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStarShooting, faStarfighter, faStarfighterAlt, faStars, faStarship, faStarshipFreighter, faSteak, faSteeringWheel, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStocking, faStomach, faStop, faStopCircle, faStopwatch, faStopwatch20, faStore, faStoreAlt, faStoreAltSlash, faStoreSlash, faStream, faStreetView, faStretcher, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSunCloud, faSunDust, faSunHaze, faSunglasses, faSunrise, faSunset, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSword, faSwordLaser, faSwordLaserAlt, faSwords, faSwordsLaser, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTabletAndroid, faTabletAndroidAlt, faTabletRugged, faTablets, faTachometer, faTachometerAlt, faTachometerAltAverage, faTachometerAltFast, faTachometerAltFastest, faTachometerAltSlow, faTachometerAltSlowest, faTachometerAverage, faTachometerFast, faTachometerFastest, faTachometerSlow, faTachometerSlowest, faTaco, faTag, faTags, faTally, faTanakh, faTape, faTasks, faTasksAlt, faTaxi, faTeeth, faTeethOpen, faTelescope, faTemperatureDown, faTemperatureFrigid, faTemperatureHigh, faTemperatureHot, faTemperatureLow, faTemperatureUp, faTenge, faTennisBall, faTerminal, faText, faTextHeight, faTextSize, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faTheta, faThumbsDown, faThumbsUp, faThumbtack, faThunderstorm, faThunderstormMoon, faThunderstormSun, faTicket, faTicketAlt, faTilde, faTimes, faTimesCircle, faTimesHexagon, faTimesOctagon, faTimesSquare, faTint, faTintSlash, faTire, faTireFlat, faTirePressureWarning, faTireRugged, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToiletPaperAlt, faToiletPaperSlash, faTombstone, faTombstoneAlt, faToolbox, faTools, faTooth, faToothbrush, faTorah, faToriiGate, faTornado, faTractor, faTrademark, faTrafficCone, faTrafficLight, faTrafficLightGo, faTrafficLightSlow, faTrafficLightStop, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTransporter, faTransporter1, faTransporter2, faTransporter3, faTransporterEmpty, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTrashUndo, faTrashUndoAlt, faTreasureChest, faTree, faTreeAlt, faTreeChristmas, faTreeDecorated, faTreeLarge, faTreePalm, faTrees, faTriangle, faTriangleMusic, faTrophy, faTrophyAlt, faTruck, faTruckContainer, faTruckCouch, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTruckPlow, faTruckRamp, faTrumpet, faTshirt, faTty, faTurkey, faTurntable, faTurtle, faTv, faTvAlt, faTvMusic, faTvRetro, faTypewriter, faUfo, faUfoBeam, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUnicorn, faUnion, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUsbDrive, faUsdCircle, faUsdSquare, faUser, faUserAlien, faUserAlt, faUserAltSlash, faUserAstronaut, faUserChart, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserCowboy, faUserCrown, faUserEdit, faUserFriends, faUserGraduate, faUserHardHat, faUserHeadset, faUserInjured, faUserLock, faUserMd, faUserMdChat, faUserMinus, faUserMusic, faUserNinja, faUserNurse, faUserPlus, faUserRobot, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUserUnlock, faUserVisor, faUsers, faUsersClass, faUsersCog, faUsersCrown, faUsersMedical, faUsersSlash, faUtensilFork, faUtensilKnife, faUtensilSpoon, faUtensils, faUtensilsAlt, faVacuum, faVacuumRobot, faValueAbsolute, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVest, faVestPatches, faVhs, faVial, faVials, faVideo, faVideoPlus, faVideoSlash, faVihara, faViolin, faVirus, faVirusSlash, faViruses, faVoicemail, faVolcano, faVolleyballBall, faVolume, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeSlash, faVolumeUp, faVoteNay, faVoteYea, faVrCardboard, faWagonCovered, faWalker, faWalkieTalkie, faWalking, faWallet, faWand, faWandMagic, faWarehouse, faWarehouseAlt, faWasher, faWatch, faWatchCalculator, faWatchFitness, faWater, faWaterLower, faWaterRise, faWaveSine, faWaveSquare, faWaveTriangle, faWaveform, faWaveformPath, faWebcam, faWebcamSlash, faWeight, faWeightHanging, faWhale, faWheat, faWheelchair, faWhistle, faWifi, faWifi1, faWifi2, faWifiSlash, faWind, faWindTurbine, faWindWarning, faWindow, faWindowAlt, faWindowClose, faWindowFrame, faWindowFrameOpen, faWindowMaximize, faWindowMinimize, faWindowRestore, faWindsock, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWreath, faWrench, faXRay, faYenSign, faYinYang };\n","'use strict';\n\nvar compileSchema = require('./compile')\n , resolve = require('./compile/resolve')\n , Cache = require('./cache')\n , SchemaObject = require('./compile/schema_obj')\n , stableStringify = require('fast-json-stable-stringify')\n , formats = require('./compile/formats')\n , rules = require('./compile/rules')\n , $dataMetaSchema = require('./data')\n , util = require('./compile/util');\n\nmodule.exports = Ajv;\n\nAjv.prototype.validate = validate;\nAjv.prototype.compile = compile;\nAjv.prototype.addSchema = addSchema;\nAjv.prototype.addMetaSchema = addMetaSchema;\nAjv.prototype.validateSchema = validateSchema;\nAjv.prototype.getSchema = getSchema;\nAjv.prototype.removeSchema = removeSchema;\nAjv.prototype.addFormat = addFormat;\nAjv.prototype.errorsText = errorsText;\n\nAjv.prototype._addSchema = _addSchema;\nAjv.prototype._compile = _compile;\n\nAjv.prototype.compileAsync = require('./compile/async');\nvar customKeyword = require('./keyword');\nAjv.prototype.addKeyword = customKeyword.add;\nAjv.prototype.getKeyword = customKeyword.get;\nAjv.prototype.removeKeyword = customKeyword.remove;\nAjv.prototype.validateKeyword = customKeyword.validate;\n\nvar errorClasses = require('./compile/error_classes');\nAjv.ValidationError = errorClasses.Validation;\nAjv.MissingRefError = errorClasses.MissingRef;\nAjv.$dataMetaSchema = $dataMetaSchema;\n\nvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\n\nvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ];\nvar META_SUPPORT_DATA = ['/properties'];\n\n/**\n * Creates validator instance.\n * Usage: `Ajv(opts)`\n * @param {Object} opts optional options\n * @return {Object} ajv instance\n */\nfunction Ajv(opts) {\n if (!(this instanceof Ajv)) return new Ajv(opts);\n opts = this._opts = util.copy(opts) || {};\n setLogger(this);\n this._schemas = {};\n this._refs = {};\n this._fragments = {};\n this._formats = formats(opts.format);\n\n this._cache = opts.cache || new Cache;\n this._loadingSchemas = {};\n this._compilations = [];\n this.RULES = rules();\n this._getId = chooseGetId(opts);\n\n opts.loopRequired = opts.loopRequired || Infinity;\n if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n if (opts.serialize === undefined) opts.serialize = stableStringify;\n this._metaOpts = getMetaSchemaOptions(this);\n\n if (opts.formats) addInitialFormats(this);\n if (opts.keywords) addInitialKeywords(this);\n addDefaultMetaSchema(this);\n if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});\n addInitialSchemas(this);\n}\n\n\n\n/**\n * Validate data using schema\n * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n * @this Ajv\n * @param {String|Object} schemaKeyRef key, ref or schema object\n * @param {Any} data to be validated\n * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n */\nfunction validate(schemaKeyRef, data) {\n var v;\n if (typeof schemaKeyRef == 'string') {\n v = this.getSchema(schemaKeyRef);\n if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n } else {\n var schemaObj = this._addSchema(schemaKeyRef);\n v = schemaObj.validate || this._compile(schemaObj);\n }\n\n var valid = v(data);\n if (v.$async !== true) this.errors = v.errors;\n return valid;\n}\n\n\n/**\n * Create validating function for passed schema.\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n * @return {Function} validating function\n */\nfunction compile(schema, _meta) {\n var schemaObj = this._addSchema(schema, undefined, _meta);\n return schemaObj.validate || this._compile(schemaObj);\n}\n\n\n/**\n * Adds schema to the instance.\n * @this Ajv\n * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n * @return {Ajv} this for method chaining\n */\nfunction addSchema(schema, key, _skipValidation, _meta) {\n if (Array.isArray(schema)){\n for (var i=0; i<schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);\n return this;\n }\n var id = this._getId(schema);\n if (id !== undefined && typeof id != 'string')\n throw new Error('schema id must be string');\n key = resolve.normalizeId(key || id);\n checkUnique(this, key);\n this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);\n return this;\n}\n\n\n/**\n * Add schema that will be used to validate other schemas\n * options in META_IGNORE_OPTIONS are alway set to false\n * @this Ajv\n * @param {Object} schema schema object\n * @param {String} key optional schema key\n * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema\n * @return {Ajv} this for method chaining\n */\nfunction addMetaSchema(schema, key, skipValidation) {\n this.addSchema(schema, key, skipValidation, true);\n return this;\n}\n\n\n/**\n * Validate schema\n * @this Ajv\n * @param {Object} schema schema to validate\n * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid\n * @return {Boolean} true if schema is valid\n */\nfunction validateSchema(schema, throwOrLogError) {\n var $schema = schema.$schema;\n if ($schema !== undefined && typeof $schema != 'string')\n throw new Error('$schema must be a string');\n $schema = $schema || this._opts.defaultMeta || defaultMeta(this);\n if (!$schema) {\n this.logger.warn('meta-schema not available');\n this.errors = null;\n return true;\n }\n var valid = this.validate($schema, schema);\n if (!valid && throwOrLogError) {\n var message = 'schema is invalid: ' + this.errorsText();\n if (this._opts.validateSchema == 'log') this.logger.error(message);\n else throw new Error(message);\n }\n return valid;\n}\n\n\nfunction defaultMeta(self) {\n var meta = self._opts.meta;\n self._opts.defaultMeta = typeof meta == 'object'\n ? self._getId(meta) || meta\n : self.getSchema(META_SCHEMA_ID)\n ? META_SCHEMA_ID\n : undefined;\n return self._opts.defaultMeta;\n}\n\n\n/**\n * Get compiled schema from the instance by `key` or `ref`.\n * @this Ajv\n * @param {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).\n * @return {Function} schema validating function (with property `schema`).\n */\nfunction getSchema(keyRef) {\n var schemaObj = _getSchemaObj(this, keyRef);\n switch (typeof schemaObj) {\n case 'object': return schemaObj.validate || this._compile(schemaObj);\n case 'string': return this.getSchema(schemaObj);\n case 'undefined': return _getSchemaFragment(this, keyRef);\n }\n}\n\n\nfunction _getSchemaFragment(self, ref) {\n var res = resolve.schema.call(self, { schema: {} }, ref);\n if (res) {\n var schema = res.schema\n , root = res.root\n , baseId = res.baseId;\n var v = compileSchema.call(self, schema, root, undefined, baseId);\n self._fragments[ref] = new SchemaObject({\n ref: ref,\n fragment: true,\n schema: schema,\n root: root,\n baseId: baseId,\n validate: v\n });\n return v;\n }\n}\n\n\nfunction _getSchemaObj(self, keyRef) {\n keyRef = resolve.normalizeId(keyRef);\n return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];\n}\n\n\n/**\n * Remove cached schema(s).\n * If no parameter is passed all schemas but meta-schemas are removed.\n * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n * @this Ajv\n * @param {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object\n * @return {Ajv} this for method chaining\n */\nfunction removeSchema(schemaKeyRef) {\n if (schemaKeyRef instanceof RegExp) {\n _removeAllSchemas(this, this._schemas, schemaKeyRef);\n _removeAllSchemas(this, this._refs, schemaKeyRef);\n return this;\n }\n switch (typeof schemaKeyRef) {\n case 'undefined':\n _removeAllSchemas(this, this._schemas);\n _removeAllSchemas(this, this._refs);\n this._cache.clear();\n return this;\n case 'string':\n var schemaObj = _getSchemaObj(this, schemaKeyRef);\n if (schemaObj) this._cache.del(schemaObj.cacheKey);\n delete this._schemas[schemaKeyRef];\n delete this._refs[schemaKeyRef];\n return this;\n case 'object':\n var serialize = this._opts.serialize;\n var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;\n this._cache.del(cacheKey);\n var id = this._getId(schemaKeyRef);\n if (id) {\n id = resolve.normalizeId(id);\n delete this._schemas[id];\n delete this._refs[id];\n }\n }\n return this;\n}\n\n\nfunction _removeAllSchemas(self, schemas, regex) {\n for (var keyRef in schemas) {\n var schemaObj = schemas[keyRef];\n if (!schemaObj.meta && (!regex || regex.test(keyRef))) {\n self._cache.del(schemaObj.cacheKey);\n delete schemas[keyRef];\n }\n }\n}\n\n\n/* @this Ajv */\nfunction _addSchema(schema, skipValidation, meta, shouldAddSchema) {\n if (typeof schema != 'object' && typeof schema != 'boolean')\n throw new Error('schema should be object or boolean');\n var serialize = this._opts.serialize;\n var cacheKey = serialize ? serialize(schema) : schema;\n var cached = this._cache.get(cacheKey);\n if (cached) return cached;\n\n shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;\n\n var id = resolve.normalizeId(this._getId(schema));\n if (id && shouldAddSchema) checkUnique(this, id);\n\n var willValidate = this._opts.validateSchema !== false && !skipValidation;\n var recursiveMeta;\n if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema)))\n this.validateSchema(schema, true);\n\n var localRefs = resolve.ids.call(this, schema);\n\n var schemaObj = new SchemaObject({\n id: id,\n schema: schema,\n localRefs: localRefs,\n cacheKey: cacheKey,\n meta: meta\n });\n\n if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;\n this._cache.put(cacheKey, schemaObj);\n\n if (willValidate && recursiveMeta) this.validateSchema(schema, true);\n\n return schemaObj;\n}\n\n\n/* @this Ajv */\nfunction _compile(schemaObj, root) {\n if (schemaObj.compiling) {\n schemaObj.validate = callValidate;\n callValidate.schema = schemaObj.schema;\n callValidate.errors = null;\n callValidate.root = root ? root : callValidate;\n if (schemaObj.schema.$async === true)\n callValidate.$async = true;\n return callValidate;\n }\n schemaObj.compiling = true;\n\n var currentOpts;\n if (schemaObj.meta) {\n currentOpts = this._opts;\n this._opts = this._metaOpts;\n }\n\n var v;\n try { v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs); }\n catch(e) {\n delete schemaObj.validate;\n throw e;\n }\n finally {\n schemaObj.compiling = false;\n if (schemaObj.meta) this._opts = currentOpts;\n }\n\n schemaObj.validate = v;\n schemaObj.refs = v.refs;\n schemaObj.refVal = v.refVal;\n schemaObj.root = v.root;\n return v;\n\n\n /* @this {*} - custom context, see passContext option */\n function callValidate() {\n /* jshint validthis: true */\n var _validate = schemaObj.validate;\n var result = _validate.apply(this, arguments);\n callValidate.errors = _validate.errors;\n return result;\n }\n}\n\n\nfunction chooseGetId(opts) {\n switch (opts.schemaId) {\n case 'auto': return _get$IdOrId;\n case 'id': return _getId;\n default: return _get$Id;\n }\n}\n\n/* @this Ajv */\nfunction _getId(schema) {\n if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);\n return schema.id;\n}\n\n/* @this Ajv */\nfunction _get$Id(schema) {\n if (schema.id) this.logger.warn('schema id ignored', schema.id);\n return schema.$id;\n}\n\n\nfunction _get$IdOrId(schema) {\n if (schema.$id && schema.id && schema.$id != schema.id)\n throw new Error('schema $id is different from id');\n return schema.$id || schema.id;\n}\n\n\n/**\n * Convert array of error message objects to string\n * @this Ajv\n * @param {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n errors = errors || this.errors;\n if (!errors) return 'No errors';\n options = options || {};\n var separator = options.separator === undefined ? ', ' : options.separator;\n var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n var text = '';\n for (var i=0; i<errors.length; i++) {\n var e = errors[i];\n if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;\n }\n return text.slice(0, -separator.length);\n}\n\n\n/**\n * Add custom format\n * @this Ajv\n * @param {String} name format name\n * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)\n * @return {Ajv} this for method chaining\n */\nfunction addFormat(name, format) {\n if (typeof format == 'string') format = new RegExp(format);\n this._formats[name] = format;\n return this;\n}\n\n\nfunction addDefaultMetaSchema(self) {\n var $dataSchema;\n if (self._opts.$data) {\n $dataSchema = require('./refs/data.json');\n self.addMetaSchema($dataSchema, $dataSchema.$id, true);\n }\n if (self._opts.meta === false) return;\n var metaSchema = require('./refs/json-schema-draft-07.json');\n if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);\n self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);\n self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;\n}\n\n\nfunction addInitialSchemas(self) {\n var optsSchemas = self._opts.schemas;\n if (!optsSchemas) return;\n if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);\n else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);\n}\n\n\nfunction addInitialFormats(self) {\n for (var name in self._opts.formats) {\n var format = self._opts.formats[name];\n self.addFormat(name, format);\n }\n}\n\n\nfunction addInitialKeywords(self) {\n for (var name in self._opts.keywords) {\n var keyword = self._opts.keywords[name];\n self.addKeyword(name, keyword);\n }\n}\n\n\nfunction checkUnique(self, id) {\n if (self._schemas[id] || self._refs[id])\n throw new Error('schema with key or id \"' + id + '\" already exists');\n}\n\n\nfunction getMetaSchemaOptions(self) {\n var metaOpts = util.copy(self._opts);\n for (var i=0; i<META_IGNORE_OPTIONS.length; i++)\n delete metaOpts[META_IGNORE_OPTIONS[i]];\n return metaOpts;\n}\n\n\nfunction setLogger(self) {\n var logger = self._opts.logger;\n if (logger === false) {\n self.logger = {log: noop, warn: noop, error: noop};\n } else {\n if (logger === undefined) logger = console;\n if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error))\n throw new Error('logger must implement log, warn and error methods');\n self.logger = logger;\n }\n}\n\n\nfunction noop() {}\n","'use strict';\n\n\nvar Cache = module.exports = function Cache() {\n this._cache = {};\n};\n\n\nCache.prototype.put = function Cache_put(key, value) {\n this._cache[key] = value;\n};\n\n\nCache.prototype.get = function Cache_get(key) {\n return this._cache[key];\n};\n\n\nCache.prototype.del = function Cache_del(key) {\n delete this._cache[key];\n};\n\n\nCache.prototype.clear = function Cache_clear() {\n this._cache = {};\n};\n","'use strict';\n\nvar MissingRefError = require('./error_classes').MissingRef;\n\nmodule.exports = compileAsync;\n\n\n/**\n * Creates validating function for passed schema with asynchronous loading of missing schemas.\n * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped\n * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function.\n * @return {Promise} promise that resolves with a validating function.\n */\nfunction compileAsync(schema, meta, callback) {\n /* eslint no-shadow: 0 */\n /* global Promise */\n /* jshint validthis: true */\n var self = this;\n if (typeof this._opts.loadSchema != 'function')\n throw new Error('options.loadSchema should be a function');\n\n if (typeof meta == 'function') {\n callback = meta;\n meta = undefined;\n }\n\n var p = loadMetaSchemaOf(schema).then(function () {\n var schemaObj = self._addSchema(schema, undefined, meta);\n return schemaObj.validate || _compileAsync(schemaObj);\n });\n\n if (callback) {\n p.then(\n function(v) { callback(null, v); },\n callback\n );\n }\n\n return p;\n\n\n function loadMetaSchemaOf(sch) {\n var $schema = sch.$schema;\n return $schema && !self.getSchema($schema)\n ? compileAsync.call(self, { $ref: $schema }, true)\n : Promise.resolve();\n }\n\n\n function _compileAsync(schemaObj) {\n try { return self._compile(schemaObj); }\n catch(e) {\n if (e instanceof MissingRefError) return loadMissingSchema(e);\n throw e;\n }\n\n\n function loadMissingSchema(e) {\n var ref = e.missingSchema;\n if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved');\n\n var schemaPromise = self._loadingSchemas[ref];\n if (!schemaPromise) {\n schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref);\n schemaPromise.then(removePromise, removePromise);\n }\n\n return schemaPromise.then(function (sch) {\n if (!added(ref)) {\n return loadMetaSchemaOf(sch).then(function () {\n if (!added(ref)) self.addSchema(sch, ref, undefined, meta);\n });\n }\n }).then(function() {\n return _compileAsync(schemaObj);\n });\n\n function removePromise() {\n delete self._loadingSchemas[ref];\n }\n\n function added(ref) {\n return self._refs[ref] || self._schemas[ref];\n }\n }\n }\n}\n","'use strict';\n\nvar resolve = require('./resolve');\n\nmodule.exports = {\n Validation: errorSubclass(ValidationError),\n MissingRef: errorSubclass(MissingRefError)\n};\n\n\nfunction ValidationError(errors) {\n this.message = 'validation failed';\n this.errors = errors;\n this.ajv = this.validation = true;\n}\n\n\nMissingRefError.message = function (baseId, ref) {\n return 'can\\'t resolve reference ' + ref + ' from id ' + baseId;\n};\n\n\nfunction MissingRefError(baseId, ref, message) {\n this.message = message || MissingRefError.message(baseId, ref);\n this.missingRef = resolve.url(baseId, ref);\n this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef));\n}\n\n\nfunction errorSubclass(Subclass) {\n Subclass.prototype = Object.create(Error.prototype);\n Subclass.prototype.constructor = Subclass;\n return Subclass;\n}\n","'use strict';\n\nvar util = require('./util');\n\nvar DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\nvar DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];\nvar TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d(?::?\\d\\d)?)?$/i;\nvar HOSTNAME = /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i;\nvar URI = /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\nvar URIREF = /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n// uri-template: https://tools.ietf.org/html/rfc6570\nvar URITEMPLATE = /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n// For the source: https://gist.github.com/dperini/729294\n// For test cases: https://mathiasbynens.be/demo/url-regex\n// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-?)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-?)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\nvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-?)*(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-?)*(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\nvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\nvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\nvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\nmodule.exports = formats;\n\nfunction formats(mode) {\n mode = mode == 'full' ? 'full' : 'fast';\n return util.copy(formats[mode]);\n}\n\n\nformats.fast = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n 'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n 'uri-template': URITEMPLATE,\n url: URL,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\n email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n hostname: HOSTNAME,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: UUID,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nformats.full = {\n date: date,\n time: time,\n 'date-time': date_time,\n uri: uri,\n 'uri-reference': URIREF,\n 'uri-template': URITEMPLATE,\n url: URL,\n email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname: HOSTNAME,\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n uuid: UUID,\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nfunction isLeapYear(year) {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n\nfunction date(str) {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n var matches = str.match(DATE);\n if (!matches) return false;\n\n var year = +matches[1];\n var month = +matches[2];\n var day = +matches[3];\n\n return month >= 1 && month <= 12 && day >= 1 &&\n day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n}\n\n\nfunction time(str, full) {\n var matches = str.match(TIME);\n if (!matches) return false;\n\n var hour = matches[1];\n var minute = matches[2];\n var second = matches[3];\n var timeZone = matches[5];\n return ((hour <= 23 && minute <= 59 && second <= 59) ||\n (hour == 23 && minute == 59 && second == 60)) &&\n (!full || timeZone);\n}\n\n\nvar DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction date_time(str) {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n var dateTime = str.split(DATE_TIME_SEPARATOR);\n return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n}\n\n\nvar NOT_URI_FRAGMENT = /\\/|:/;\nfunction uri(str) {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n}\n\n\nvar Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\n if (Z_ANCHOR.test(str)) return false;\n try {\n new RegExp(str);\n return true;\n } catch(e) {\n return false;\n }\n}\n","'use strict';\n\nvar resolve = require('./resolve')\n , util = require('./util')\n , errorClasses = require('./error_classes')\n , stableStringify = require('fast-json-stable-stringify');\n\nvar validateGenerator = require('../dotjs/validate');\n\n/**\n * Functions below are used inside compiled validations function\n */\n\nvar ucs2length = util.ucs2length;\nvar equal = require('fast-deep-equal');\n\n// this error is thrown by async schemas to return validation errors via exception\nvar ValidationError = errorClasses.Validation;\n\nmodule.exports = compile;\n\n\n/**\n * Compiles schema to validation function\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Object} root object with information about the root schema for this schema\n * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution\n * @param {String} baseId base ID for IDs in the schema\n * @return {Function} validation function\n */\nfunction compile(schema, root, localRefs, baseId) {\n /* jshint validthis: true, evil: true */\n /* eslint no-shadow: 0 */\n var self = this\n , opts = this._opts\n , refVal = [ undefined ]\n , refs = {}\n , patterns = []\n , patternsHash = {}\n , defaults = []\n , defaultsHash = {}\n , customRules = [];\n\n root = root || { schema: schema, refVal: refVal, refs: refs };\n\n var c = checkCompiling.call(this, schema, root, baseId);\n var compilation = this._compilations[c.index];\n if (c.compiling) return (compilation.callValidate = callValidate);\n\n var formats = this._formats;\n var RULES = this.RULES;\n\n try {\n var v = localCompile(schema, root, localRefs, baseId);\n compilation.validate = v;\n var cv = compilation.callValidate;\n if (cv) {\n cv.schema = v.schema;\n cv.errors = null;\n cv.refs = v.refs;\n cv.refVal = v.refVal;\n cv.root = v.root;\n cv.$async = v.$async;\n if (opts.sourceCode) cv.source = v.source;\n }\n return v;\n } finally {\n endCompiling.call(this, schema, root, baseId);\n }\n\n /* @this {*} - custom context, see passContext option */\n function callValidate() {\n /* jshint validthis: true */\n var validate = compilation.validate;\n var result = validate.apply(this, arguments);\n callValidate.errors = validate.errors;\n return result;\n }\n\n function localCompile(_schema, _root, localRefs, baseId) {\n var isRoot = !_root || (_root && _root.schema == _schema);\n if (_root.schema != root.schema)\n return compile.call(self, _schema, _root, localRefs, baseId);\n\n var $async = _schema.$async === true;\n\n var sourceCode = validateGenerator({\n isTop: true,\n schema: _schema,\n isRoot: isRoot,\n baseId: baseId,\n root: _root,\n schemaPath: '',\n errSchemaPath: '#',\n errorPath: '\"\"',\n MissingRefError: errorClasses.MissingRef,\n RULES: RULES,\n validate: validateGenerator,\n util: util,\n resolve: resolve,\n resolveRef: resolveRef,\n usePattern: usePattern,\n useDefault: useDefault,\n useCustomRule: useCustomRule,\n opts: opts,\n formats: formats,\n logger: self.logger,\n self: self\n });\n\n sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)\n + vars(defaults, defaultCode) + vars(customRules, customRuleCode)\n + sourceCode;\n\n if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema);\n // console.log('\\n\\n\\n *** \\n', JSON.stringify(sourceCode));\n var validate;\n try {\n var makeValidate = new Function(\n 'self',\n 'RULES',\n 'formats',\n 'root',\n 'refVal',\n 'defaults',\n 'customRules',\n 'equal',\n 'ucs2length',\n 'ValidationError',\n sourceCode\n );\n\n validate = makeValidate(\n self,\n RULES,\n formats,\n root,\n refVal,\n defaults,\n customRules,\n equal,\n ucs2length,\n ValidationError\n );\n\n refVal[0] = validate;\n } catch(e) {\n self.logger.error('Error compiling schema, function code:', sourceCode);\n throw e;\n }\n\n validate.schema = _schema;\n validate.errors = null;\n validate.refs = refs;\n validate.refVal = refVal;\n validate.root = isRoot ? validate : _root;\n if ($async) validate.$async = true;\n if (opts.sourceCode === true) {\n validate.source = {\n code: sourceCode,\n patterns: patterns,\n defaults: defaults\n };\n }\n\n return validate;\n }\n\n function resolveRef(baseId, ref, isRoot) {\n ref = resolve.url(baseId, ref);\n var refIndex = refs[ref];\n var _refVal, refCode;\n if (refIndex !== undefined) {\n _refVal = refVal[refIndex];\n refCode = 'refVal[' + refIndex + ']';\n return resolvedRef(_refVal, refCode);\n }\n if (!isRoot && root.refs) {\n var rootRefId = root.refs[ref];\n if (rootRefId !== undefined) {\n _refVal = root.refVal[rootRefId];\n refCode = addLocalRef(ref, _refVal);\n return resolvedRef(_refVal, refCode);\n }\n }\n\n refCode = addLocalRef(ref);\n var v = resolve.call(self, localCompile, root, ref);\n if (v === undefined) {\n var localSchema = localRefs && localRefs[ref];\n if (localSchema) {\n v = resolve.inlineRef(localSchema, opts.inlineRefs)\n ? localSchema\n : compile.call(self, localSchema, root, localRefs, baseId);\n }\n }\n\n if (v === undefined) {\n removeLocalRef(ref);\n } else {\n replaceLocalRef(ref, v);\n return resolvedRef(v, refCode);\n }\n }\n\n function addLocalRef(ref, v) {\n var refId = refVal.length;\n refVal[refId] = v;\n refs[ref] = refId;\n return 'refVal' + refId;\n }\n\n function removeLocalRef(ref) {\n delete refs[ref];\n }\n\n function replaceLocalRef(ref, v) {\n var refId = refs[ref];\n refVal[refId] = v;\n }\n\n function resolvedRef(refVal, code) {\n return typeof refVal == 'object' || typeof refVal == 'boolean'\n ? { code: code, schema: refVal, inline: true }\n : { code: code, $async: refVal && !!refVal.$async };\n }\n\n function usePattern(regexStr) {\n var index = patternsHash[regexStr];\n if (index === undefined) {\n index = patternsHash[regexStr] = patterns.length;\n patterns[index] = regexStr;\n }\n return 'pattern' + index;\n }\n\n function useDefault(value) {\n switch (typeof value) {\n case 'boolean':\n case 'number':\n return '' + value;\n case 'string':\n return util.toQuotedString(value);\n case 'object':\n if (value === null) return 'null';\n var valueStr = stableStringify(value);\n var index = defaultsHash[valueStr];\n if (index === undefined) {\n index = defaultsHash[valueStr] = defaults.length;\n defaults[index] = value;\n }\n return 'default' + index;\n }\n }\n\n function useCustomRule(rule, schema, parentSchema, it) {\n if (self._opts.validateSchema !== false) {\n var deps = rule.definition.dependencies;\n if (deps && !deps.every(function(keyword) {\n return Object.prototype.hasOwnProperty.call(parentSchema, keyword);\n }))\n throw new Error('parent schema must have all required keywords: ' + deps.join(','));\n\n var validateSchema = rule.definition.validateSchema;\n if (validateSchema) {\n var valid = validateSchema(schema);\n if (!valid) {\n var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);\n if (self._opts.validateSchema == 'log') self.logger.error(message);\n else throw new Error(message);\n }\n }\n }\n\n var compile = rule.definition.compile\n , inline = rule.definition.inline\n , macro = rule.definition.macro;\n\n var validate;\n if (compile) {\n validate = compile.call(self, schema, parentSchema, it);\n } else if (macro) {\n validate = macro.call(self, schema, parentSchema, it);\n if (opts.validateSchema !== false) self.validateSchema(validate, true);\n } else if (inline) {\n validate = inline.call(self, it, rule.keyword, schema, parentSchema);\n } else {\n validate = rule.definition.validate;\n if (!validate) return;\n }\n\n if (validate === undefined)\n throw new Error('custom keyword \"' + rule.keyword + '\"failed to compile');\n\n var index = customRules.length;\n customRules[index] = validate;\n\n return {\n code: 'customRule' + index,\n validate: validate\n };\n }\n}\n\n\n/**\n * Checks if the schema is currently compiled\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Object} object with properties \"index\" (compilation index) and \"compiling\" (boolean)\n */\nfunction checkCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var index = compIndex.call(this, schema, root, baseId);\n if (index >= 0) return { index: index, compiling: true };\n index = this._compilations.length;\n this._compilations[index] = {\n schema: schema,\n root: root,\n baseId: baseId\n };\n return { index: index, compiling: false };\n}\n\n\n/**\n * Removes the schema from the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n */\nfunction endCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var i = compIndex.call(this, schema, root, baseId);\n if (i >= 0) this._compilations.splice(i, 1);\n}\n\n\n/**\n * Index of schema compilation in the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Integer} compilation index\n */\nfunction compIndex(schema, root, baseId) {\n /* jshint validthis: true */\n for (var i=0; i<this._compilations.length; i++) {\n var c = this._compilations[i];\n if (c.schema == schema && c.root == root && c.baseId == baseId) return i;\n }\n return -1;\n}\n\n\nfunction patternCode(i, patterns) {\n return 'var pattern' + i + ' = new RegExp(' + util.toQuotedString(patterns[i]) + ');';\n}\n\n\nfunction defaultCode(i) {\n return 'var default' + i + ' = defaults[' + i + '];';\n}\n\n\nfunction refValCode(i, refVal) {\n return refVal[i] === undefined ? '' : 'var refVal' + i + ' = refVal[' + i + '];';\n}\n\n\nfunction customRuleCode(i) {\n return 'var customRule' + i + ' = customRules[' + i + '];';\n}\n\n\nfunction vars(arr, statement) {\n if (!arr.length) return '';\n var code = '';\n for (var i=0; i<arr.length; i++)\n code += statement(i, arr);\n return code;\n}\n","'use strict';\n\nvar URI = require('uri-js')\n , equal = require('fast-deep-equal')\n , util = require('./util')\n , SchemaObject = require('./schema_obj')\n , traverse = require('json-schema-traverse');\n\nmodule.exports = resolve;\n\nresolve.normalizeId = normalizeId;\nresolve.fullPath = getFullPath;\nresolve.url = resolveUrl;\nresolve.ids = resolveIds;\nresolve.inlineRef = inlineRef;\nresolve.schema = resolveSchema;\n\n/**\n * [resolve and compile the references ($ref)]\n * @this Ajv\n * @param {Function} compile reference to schema compilation funciton (localCompile)\n * @param {Object} root object with information about the root schema for the current schema\n * @param {String} ref reference to resolve\n * @return {Object|Function} schema object (if the schema can be inlined) or validation function\n */\nfunction resolve(compile, root, ref) {\n /* jshint validthis: true */\n var refVal = this._refs[ref];\n if (typeof refVal == 'string') {\n if (this._refs[refVal]) refVal = this._refs[refVal];\n else return resolve.call(this, compile, root, refVal);\n }\n\n refVal = refVal || this._schemas[ref];\n if (refVal instanceof SchemaObject) {\n return inlineRef(refVal.schema, this._opts.inlineRefs)\n ? refVal.schema\n : refVal.validate || this._compile(refVal);\n }\n\n var res = resolveSchema.call(this, root, ref);\n var schema, v, baseId;\n if (res) {\n schema = res.schema;\n root = res.root;\n baseId = res.baseId;\n }\n\n if (schema instanceof SchemaObject) {\n v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);\n } else if (schema !== undefined) {\n v = inlineRef(schema, this._opts.inlineRefs)\n ? schema\n : compile.call(this, schema, root, undefined, baseId);\n }\n\n return v;\n}\n\n\n/**\n * Resolve schema, its root and baseId\n * @this Ajv\n * @param {Object} root root object with properties schema, refVal, refs\n * @param {String} ref reference to resolve\n * @return {Object} object with properties schema, root, baseId\n */\nfunction resolveSchema(root, ref) {\n /* jshint validthis: true */\n var p = URI.parse(ref)\n , refPath = _getFullPath(p)\n , baseId = getFullPath(this._getId(root.schema));\n if (Object.keys(root.schema).length === 0 || refPath !== baseId) {\n var id = normalizeId(refPath);\n var refVal = this._refs[id];\n if (typeof refVal == 'string') {\n return resolveRecursive.call(this, root, refVal, p);\n } else if (refVal instanceof SchemaObject) {\n if (!refVal.validate) this._compile(refVal);\n root = refVal;\n } else {\n refVal = this._schemas[id];\n if (refVal instanceof SchemaObject) {\n if (!refVal.validate) this._compile(refVal);\n if (id == normalizeId(ref))\n return { schema: refVal, root: root, baseId: baseId };\n root = refVal;\n } else {\n return;\n }\n }\n if (!root.schema) return;\n baseId = getFullPath(this._getId(root.schema));\n }\n return getJsonPointer.call(this, p, baseId, root.schema, root);\n}\n\n\n/* @this Ajv */\nfunction resolveRecursive(root, ref, parsedRef) {\n /* jshint validthis: true */\n var res = resolveSchema.call(this, root, ref);\n if (res) {\n var schema = res.schema;\n var baseId = res.baseId;\n root = res.root;\n var id = this._getId(schema);\n if (id) baseId = resolveUrl(baseId, id);\n return getJsonPointer.call(this, parsedRef, baseId, schema, root);\n }\n}\n\n\nvar PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);\n/* @this Ajv */\nfunction getJsonPointer(parsedRef, baseId, schema, root) {\n /* jshint validthis: true */\n parsedRef.fragment = parsedRef.fragment || '';\n if (parsedRef.fragment.slice(0,1) != '/') return;\n var parts = parsedRef.fragment.split('/');\n\n for (var i = 1; i < parts.length; i++) {\n var part = parts[i];\n if (part) {\n part = util.unescapeFragment(part);\n schema = schema[part];\n if (schema === undefined) break;\n var id;\n if (!PREVENT_SCOPE_CHANGE[part]) {\n id = this._getId(schema);\n if (id) baseId = resolveUrl(baseId, id);\n if (schema.$ref) {\n var $ref = resolveUrl(baseId, schema.$ref);\n var res = resolveSchema.call(this, root, $ref);\n if (res) {\n schema = res.schema;\n root = res.root;\n baseId = res.baseId;\n }\n }\n }\n }\n }\n if (schema !== undefined && schema !== root.schema)\n return { schema: schema, root: root, baseId: baseId };\n}\n\n\nvar SIMPLE_INLINED = util.toHash([\n 'type', 'format', 'pattern',\n 'maxLength', 'minLength',\n 'maxProperties', 'minProperties',\n 'maxItems', 'minItems',\n 'maximum', 'minimum',\n 'uniqueItems', 'multipleOf',\n 'required', 'enum'\n]);\nfunction inlineRef(schema, limit) {\n if (limit === false) return false;\n if (limit === undefined || limit === true) return checkNoRef(schema);\n else if (limit) return countKeys(schema) <= limit;\n}\n\n\nfunction checkNoRef(schema) {\n var item;\n if (Array.isArray(schema)) {\n for (var i=0; i<schema.length; i++) {\n item = schema[i];\n if (typeof item == 'object' && !checkNoRef(item)) return false;\n }\n } else {\n for (var key in schema) {\n if (key == '$ref') return false;\n item = schema[key];\n if (typeof item == 'object' && !checkNoRef(item)) return false;\n }\n }\n return true;\n}\n\n\nfunction countKeys(schema) {\n var count = 0, item;\n if (Array.isArray(schema)) {\n for (var i=0; i<schema.length; i++) {\n item = schema[i];\n if (typeof item == 'object') count += countKeys(item);\n if (count == Infinity) return Infinity;\n }\n } else {\n for (var key in schema) {\n if (key == '$ref') return Infinity;\n if (SIMPLE_INLINED[key]) {\n count++;\n } else {\n item = schema[key];\n if (typeof item == 'object') count += countKeys(item) + 1;\n if (count == Infinity) return Infinity;\n }\n }\n }\n return count;\n}\n\n\nfunction getFullPath(id, normalize) {\n if (normalize !== false) id = normalizeId(id);\n var p = URI.parse(id);\n return _getFullPath(p);\n}\n\n\nfunction _getFullPath(p) {\n return URI.serialize(p).split('#')[0] + '#';\n}\n\n\nvar TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n return id ? id.replace(TRAILING_SLASH_HASH, '') : '';\n}\n\n\nfunction resolveUrl(baseId, id) {\n id = normalizeId(id);\n return URI.resolve(baseId, id);\n}\n\n\n/* @this Ajv */\nfunction resolveIds(schema) {\n var schemaId = normalizeId(this._getId(schema));\n var baseIds = {'': schemaId};\n var fullPaths = {'': getFullPath(schemaId, false)};\n var localRefs = {};\n var self = this;\n\n traverse(schema, {allKeys: true}, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (jsonPtr === '') return;\n var id = self._getId(sch);\n var baseId = baseIds[parentJsonPtr];\n var fullPath = fullPaths[parentJsonPtr] + '/' + parentKeyword;\n if (keyIndex !== undefined)\n fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));\n\n if (typeof id == 'string') {\n id = baseId = normalizeId(baseId ? URI.resolve(baseId, id) : id);\n\n var refVal = self._refs[id];\n if (typeof refVal == 'string') refVal = self._refs[refVal];\n if (refVal && refVal.schema) {\n if (!equal(sch, refVal.schema))\n throw new Error('id \"' + id + '\" resolves to more than one schema');\n } else if (id != normalizeId(fullPath)) {\n if (id[0] == '#') {\n if (localRefs[id] && !equal(sch, localRefs[id]))\n throw new Error('id \"' + id + '\" resolves to more than one schema');\n localRefs[id] = sch;\n } else {\n self._refs[id] = fullPath;\n }\n }\n }\n baseIds[jsonPtr] = baseId;\n fullPaths[jsonPtr] = fullPath;\n });\n\n return localRefs;\n}\n","'use strict';\n\nvar ruleModules = require('../dotjs')\n , toHash = require('./util').toHash;\n\nmodule.exports = function rules() {\n var RULES = [\n { type: 'number',\n rules: [ { 'maximum': ['exclusiveMaximum'] },\n { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },\n { type: 'string',\n rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\n { type: 'array',\n rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },\n { type: 'object',\n rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',\n { 'properties': ['additionalProperties', 'patternProperties'] } ] },\n { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }\n ];\n\n var ALL = [ 'type', '$comment' ];\n var KEYWORDS = [\n '$schema', '$id', 'id', '$data', '$async', 'title',\n 'description', 'default', 'definitions',\n 'examples', 'readOnly', 'writeOnly',\n 'contentMediaType', 'contentEncoding',\n 'additionalItems', 'then', 'else'\n ];\n var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\n RULES.all = toHash(ALL);\n RULES.types = toHash(TYPES);\n\n RULES.forEach(function (group) {\n group.rules = group.rules.map(function (keyword) {\n var implKeywords;\n if (typeof keyword == 'object') {\n var key = Object.keys(keyword)[0];\n implKeywords = keyword[key];\n keyword = key;\n implKeywords.forEach(function (k) {\n ALL.push(k);\n RULES.all[k] = true;\n });\n }\n ALL.push(keyword);\n var rule = RULES.all[keyword] = {\n keyword: keyword,\n code: ruleModules[keyword],\n implements: implKeywords\n };\n return rule;\n });\n\n RULES.all.$comment = {\n keyword: '$comment',\n code: ruleModules.$comment\n };\n\n if (group.type) RULES.types[group.type] = group;\n });\n\n RULES.keywords = toHash(ALL.concat(KEYWORDS));\n RULES.custom = {};\n\n return RULES;\n};\n","'use strict';\n\nvar util = require('./util');\n\nmodule.exports = SchemaObject;\n\nfunction SchemaObject(obj) {\n util.copy(obj, this);\n}\n","'use strict';\n\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nmodule.exports = function ucs2length(str) {\n var length = 0\n , len = str.length\n , pos = 0\n , value;\n while (pos < len) {\n length++;\n value = str.charCodeAt(pos++);\n if (value >= 0xD800 && value <= 0xDBFF && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\n }\n }\n return length;\n};\n","'use strict';\n\n\nmodule.exports = {\n copy: copy,\n checkDataType: checkDataType,\n checkDataTypes: checkDataTypes,\n coerceToTypes: coerceToTypes,\n toHash: toHash,\n getProperty: getProperty,\n escapeQuotes: escapeQuotes,\n equal: require('fast-deep-equal'),\n ucs2length: require('./ucs2length'),\n varOccurences: varOccurences,\n varReplace: varReplace,\n schemaHasRules: schemaHasRules,\n schemaHasRulesExcept: schemaHasRulesExcept,\n schemaUnknownRules: schemaUnknownRules,\n toQuotedString: toQuotedString,\n getPathExpr: getPathExpr,\n getPath: getPath,\n getData: getData,\n unescapeFragment: unescapeFragment,\n unescapeJsonPointer: unescapeJsonPointer,\n escapeFragment: escapeFragment,\n escapeJsonPointer: escapeJsonPointer\n};\n\n\nfunction copy(o, to) {\n to = to || {};\n for (var key in o) to[key] = o[key];\n return to;\n}\n\n\nfunction checkDataType(dataType, data, strictNumbers, negate) {\n var EQUAL = negate ? ' !== ' : ' === '\n , AND = negate ? ' || ' : ' && '\n , OK = negate ? '!' : ''\n , NOT = negate ? '' : '!';\n switch (dataType) {\n case 'null': return data + EQUAL + 'null';\n case 'array': return OK + 'Array.isArray(' + data + ')';\n case 'object': return '(' + OK + data + AND +\n 'typeof ' + data + EQUAL + '\"object\"' + AND +\n NOT + 'Array.isArray(' + data + '))';\n case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n NOT + '(' + data + ' % 1)' +\n AND + data + EQUAL + data +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n case 'number': return '(typeof ' + data + EQUAL + '\"' + dataType + '\"' +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n }\n}\n\n\nfunction checkDataTypes(dataTypes, data, strictNumbers) {\n switch (dataTypes.length) {\n case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);\n default:\n var code = '';\n var types = toHash(dataTypes);\n if (types.array && types.object) {\n code = types.null ? '(': '(!' + data + ' || ';\n code += 'typeof ' + data + ' !== \"object\")';\n delete types.null;\n delete types.array;\n delete types.object;\n }\n if (types.number) delete types.integer;\n for (var t in types)\n code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);\n\n return code;\n }\n}\n\n\nvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\nfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n if (Array.isArray(dataTypes)) {\n var types = [];\n for (var i=0; i<dataTypes.length; i++) {\n var t = dataTypes[i];\n if (COERCE_TO_TYPES[t]) types[types.length] = t;\n else if (optionCoerceTypes === 'array' && t === 'array') types[types.length] = t;\n }\n if (types.length) return types;\n } else if (COERCE_TO_TYPES[dataTypes]) {\n return [dataTypes];\n } else if (optionCoerceTypes === 'array' && dataTypes === 'array') {\n return ['array'];\n }\n}\n\n\nfunction toHash(arr) {\n var hash = {};\n for (var i=0; i<arr.length; i++) hash[arr[i]] = true;\n return hash;\n}\n\n\nvar IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nvar SINGLE_QUOTE = /'|\\\\/g;\nfunction getProperty(key) {\n return typeof key == 'number'\n ? '[' + key + ']'\n : IDENTIFIER.test(key)\n ? '.' + key\n : \"['\" + escapeQuotes(key) + \"']\";\n}\n\n\nfunction escapeQuotes(str) {\n return str.replace(SINGLE_QUOTE, '\\\\$&')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\t/g, '\\\\t');\n}\n\n\nfunction varOccurences(str, dataVar) {\n dataVar += '[^0-9]';\n var matches = str.match(new RegExp(dataVar, 'g'));\n return matches ? matches.length : 0;\n}\n\n\nfunction varReplace(str, dataVar, expr) {\n dataVar += '([^0-9])';\n expr = expr.replace(/\\$/g, '$$$$');\n return str.replace(new RegExp(dataVar, 'g'), expr + '$1');\n}\n\n\nfunction schemaHasRules(schema, rules) {\n if (typeof schema == 'boolean') return !schema;\n for (var key in schema) if (rules[key]) return true;\n}\n\n\nfunction schemaHasRulesExcept(schema, rules, exceptKeyword) {\n if (typeof schema == 'boolean') return !schema && exceptKeyword != 'not';\n for (var key in schema) if (key != exceptKeyword && rules[key]) return true;\n}\n\n\nfunction schemaUnknownRules(schema, rules) {\n if (typeof schema == 'boolean') return;\n for (var key in schema) if (!rules[key]) return key;\n}\n\n\nfunction toQuotedString(str) {\n return '\\'' + escapeQuotes(str) + '\\'';\n}\n\n\nfunction getPathExpr(currentPath, expr, jsonPointers, isNumber) {\n var path = jsonPointers // false by default\n ? '\\'/\\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \\'~0\\').replace(/\\\\//g, \\'~1\\')')\n : (isNumber ? '\\'[\\' + ' + expr + ' + \\']\\'' : '\\'[\\\\\\'\\' + ' + expr + ' + \\'\\\\\\']\\'');\n return joinPaths(currentPath, path);\n}\n\n\nfunction getPath(currentPath, prop, jsonPointers) {\n var path = jsonPointers // false by default\n ? toQuotedString('/' + escapeJsonPointer(prop))\n : toQuotedString(getProperty(prop));\n return joinPaths(currentPath, path);\n}\n\n\nvar JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nvar RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, lvl, paths) {\n var up, jsonPointer, data, matches;\n if ($data === '') return 'rootData';\n if ($data[0] == '/') {\n if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);\n jsonPointer = $data;\n data = 'rootData';\n } else {\n matches = $data.match(RELATIVE_JSON_POINTER);\n if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);\n up = +matches[1];\n jsonPointer = matches[2];\n if (jsonPointer == '#') {\n if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n return paths[lvl - up];\n }\n\n if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n data = 'data' + ((lvl - up) || '');\n if (!jsonPointer) return data;\n }\n\n var expr = data;\n var segments = jsonPointer.split('/');\n for (var i=0; i<segments.length; i++) {\n var segment = segments[i];\n if (segment) {\n data += getProperty(unescapeJsonPointer(segment));\n expr += ' && ' + data;\n }\n }\n return expr;\n}\n\n\nfunction joinPaths (a, b) {\n if (a == '\"\"') return b;\n return (a + ' + ' + b).replace(/([^\\\\])' \\+ '/g, '$1');\n}\n\n\nfunction unescapeFragment(str) {\n return unescapeJsonPointer(decodeURIComponent(str));\n}\n\n\nfunction escapeFragment(str) {\n return encodeURIComponent(escapeJsonPointer(str));\n}\n\n\nfunction escapeJsonPointer(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\n\nfunction unescapeJsonPointer(str) {\n return str.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n","'use strict';\n\nvar KEYWORDS = [\n 'multipleOf',\n 'maximum',\n 'exclusiveMaximum',\n 'minimum',\n 'exclusiveMinimum',\n 'maxLength',\n 'minLength',\n 'pattern',\n 'additionalItems',\n 'maxItems',\n 'minItems',\n 'uniqueItems',\n 'maxProperties',\n 'minProperties',\n 'required',\n 'additionalProperties',\n 'enum',\n 'format',\n 'const'\n];\n\nmodule.exports = function (metaSchema, keywordsJsonPointers) {\n for (var i=0; i<keywordsJsonPointers.length; i++) {\n metaSchema = JSON.parse(JSON.stringify(metaSchema));\n var segments = keywordsJsonPointers[i].split('/');\n var keywords = metaSchema;\n var j;\n for (j=1; j<segments.length; j++)\n keywords = keywords[segments[j]];\n\n for (j=0; j<KEYWORDS.length; j++) {\n var key = KEYWORDS[j];\n var schema = keywords[key];\n if (schema) {\n keywords[key] = {\n anyOf: [\n schema,\n { $ref: 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }\n ]\n };\n }\n }\n }\n\n return metaSchema;\n};\n","'use strict';\n\nvar metaSchema = require('./refs/json-schema-draft-07.json');\n\nmodule.exports = {\n $id: 'https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js',\n definitions: {\n simpleTypes: metaSchema.definitions.simpleTypes\n },\n type: 'object',\n dependencies: {\n schema: ['validate'],\n $data: ['validate'],\n statements: ['inline'],\n valid: {not: {required: ['macro']}}\n },\n properties: {\n type: metaSchema.properties.type,\n schema: {type: 'boolean'},\n statements: {type: 'boolean'},\n dependencies: {\n type: 'array',\n items: {type: 'string'}\n },\n metaSchema: {type: 'object'},\n modifying: {type: 'boolean'},\n valid: {type: 'boolean'},\n $data: {type: 'boolean'},\n async: {type: 'boolean'},\n errors: {\n anyOf: [\n {type: 'boolean'},\n {const: 'full'}\n ]\n }\n }\n};\n","'use strict';\nmodule.exports = function generate__limit(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $isMax = $keyword == 'maximum',\n $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\n $schemaExcl = it.schema[$exclusiveKeyword],\n $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,\n $op = $isMax ? '<' : '>',\n $notOp = $isMax ? '>' : '<',\n $errorKeyword = undefined;\n if (!($isData || typeof $schema == 'number' || $schema === undefined)) {\n throw new Error($keyword + ' must be number');\n }\n if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) {\n throw new Error($exclusiveKeyword + ' must be number or boolean');\n }\n if ($isDataExcl) {\n var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n $exclusive = 'exclusive' + $lvl,\n $exclType = 'exclType' + $lvl,\n $exclIsNumber = 'exclIsNumber' + $lvl,\n $opExpr = 'op' + $lvl,\n $opStr = '\\' + ' + $opExpr + ' + \\'';\n out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n $schemaValueExcl = 'schemaExcl' + $lvl;\n out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n var $errorKeyword = $exclusiveKeyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n if ($schema === undefined) {\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaValueExcl;\n $isData = $isDataExcl;\n }\n } else {\n var $exclIsNumber = typeof $schemaExcl == 'number',\n $opStr = $op;\n if ($exclIsNumber && $isData) {\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n } else {\n if ($exclIsNumber && $schema === undefined) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaExcl;\n $notOp += '=';\n } else {\n if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $notOp += '=';\n } else {\n $exclusive = false;\n $opStr += '=';\n }\n }\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n }\n }\n $errorKeyword = $errorKeyword || $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ' + ($opStr) + ' ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxItems' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxItems') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitLength(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxLength' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n if (it.opts.unicode === false) {\n out += ' ' + ($data) + '.length ';\n } else {\n out += ' ucs2length(' + ($data) + ') ';\n }\n out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be ';\n if ($keyword == 'maxLength') {\n out += 'longer';\n } else {\n out += 'shorter';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' characters\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitProperties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxProperties' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxProperties') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' properties\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_allOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $allSchemasEmpty = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n $allSchemasEmpty = false;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($breakOnError) {\n if ($allSchemasEmpty) {\n out += ' if (true) { ';\n } else {\n out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_anyOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $noEmptySchema = $schema.every(function($sch) {\n return (it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all));\n });\n if ($noEmptySchema) {\n var $currentBaseId = $it.baseId;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n $closingBraces += '}';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match some schema in anyOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_comment(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $comment = it.util.toQuotedString($schema);\n if (it.opts.$comment === true) {\n out += ' console.log(' + ($comment) + ');';\n } else if (typeof it.opts.$comment == 'function') {\n out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_const(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!$isData) {\n out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to constant\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_contains(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId,\n $nonEmptySchema = (it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all));\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if ($nonEmptySchema) {\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (' + ($nextValid) + ') break; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n } else {\n out += ' if (' + ($data) + '.length == 0) {';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should contain a valid item\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n if ($nonEmptySchema) {\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n }\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_custom(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $rule = this,\n $definition = 'definition' + $lvl,\n $rDef = $rule.definition,\n $closingBraces = '';\n var $compile, $inline, $macro, $ruleValidate, $validateCode;\n if ($isData && $rDef.$data) {\n $validateCode = 'keywordValidate' + $lvl;\n var $validateSchema = $rDef.validateSchema;\n out += ' var ' + ($definition) + ' = RULES.custom[\\'' + ($keyword) + '\\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';\n } else {\n $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);\n if (!$ruleValidate) return;\n $schemaValue = 'validate.schema' + $schemaPath;\n $validateCode = $ruleValidate.code;\n $compile = $rDef.compile;\n $inline = $rDef.inline;\n $macro = $rDef.macro;\n }\n var $ruleErrs = $validateCode + '.errors',\n $i = 'i' + $lvl,\n $ruleErr = 'ruleErr' + $lvl,\n $asyncKeyword = $rDef.async;\n if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');\n if (!($inline || $macro)) {\n out += '' + ($ruleErrs) + ' = null;';\n }\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if ($isData && $rDef.$data) {\n $closingBraces += '}';\n out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';\n if ($validateSchema) {\n $closingBraces += '}';\n out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';\n }\n }\n if ($inline) {\n if ($rDef.statements) {\n out += ' ' + ($ruleValidate.validate) + ' ';\n } else {\n out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';\n }\n } else if ($macro) {\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n $it.schema = $ruleValidate.validate;\n $it.schemaPath = '';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var $code = it.validate($it).replace(/validate\\.schema/g, $validateCode);\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($code);\n } else {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n out += ' ' + ($validateCode) + '.call( ';\n if (it.opts.passContext) {\n out += 'this';\n } else {\n out += 'self';\n }\n if ($compile || $rDef.schema === false) {\n out += ' , ' + ($data) + ' ';\n } else {\n out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';\n }\n out += ' , (dataPath || \\'\\')';\n if (it.errorPath != '\"\"') {\n out += ' + ' + (it.errorPath);\n }\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) ';\n var def_callRuleValidate = out;\n out = $$outStack.pop();\n if ($rDef.errors === false) {\n out += ' ' + ($valid) + ' = ';\n if ($asyncKeyword) {\n out += 'await ';\n }\n out += '' + (def_callRuleValidate) + '; ';\n } else {\n if ($asyncKeyword) {\n $ruleErrs = 'customErrors' + $lvl;\n out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';\n } else {\n out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';\n }\n }\n }\n if ($rDef.modifying) {\n out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';\n }\n out += '' + ($closingBraces);\n if ($rDef.valid) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n } else {\n out += ' if ( ';\n if ($rDef.valid === undefined) {\n out += ' !';\n if ($macro) {\n out += '' + ($nextValid);\n } else {\n out += '' + ($valid);\n }\n } else {\n out += ' ' + (!$rDef.valid) + ' ';\n }\n out += ') { ';\n $errorKeyword = $rule.keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n var def_customError = out;\n out = $$outStack.pop();\n if ($inline) {\n if ($rDef.errors) {\n if ($rDef.errors != 'full') {\n out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n if (it.opts.verbose) {\n out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n }\n out += ' } ';\n }\n } else {\n if ($rDef.errors === false) {\n out += ' ' + (def_customError) + ' ';\n } else {\n out += ' if (' + ($errs) + ' == errors) { ' + (def_customError) + ' } else { for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n if (it.opts.verbose) {\n out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n }\n out += ' } } ';\n }\n }\n } else if ($macro) {\n out += ' var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n } else {\n if ($rDef.errors === false) {\n out += ' ' + (def_customError) + ' ';\n } else {\n out += ' if (Array.isArray(' + ($ruleErrs) + ')) { if (vErrors === null) vErrors = ' + ($ruleErrs) + '; else vErrors = vErrors.concat(' + ($ruleErrs) + '); errors = vErrors.length; for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; ';\n if (it.opts.verbose) {\n out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n }\n out += ' } } else { ' + (def_customError) + ' } ';\n }\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_dependencies(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $schemaDeps = {},\n $propertyDeps = {},\n $ownProperties = it.opts.ownProperties;\n for ($property in $schema) {\n if ($property == '__proto__') continue;\n var $sch = $schema[$property];\n var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\n $deps[$property] = $sch;\n }\n out += 'var ' + ($errs) + ' = errors;';\n var $currentErrorPath = it.errorPath;\n out += 'var missing' + ($lvl) + ';';\n for (var $property in $propertyDeps) {\n $deps = $propertyDeps[$property];\n if ($deps.length) {\n out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n if ($breakOnError) {\n out += ' && ( ';\n var arr1 = $deps;\n if (arr1) {\n var $propertyKey, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $propertyKey = arr1[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ')) { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should have ';\n if ($deps.length == 1) {\n out += 'property ' + (it.util.escapeQuotes($deps[0]));\n } else {\n out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n }\n out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n } else {\n out += ' ) { ';\n var arr2 = $deps;\n if (arr2) {\n var $propertyKey, i2 = -1,\n l2 = arr2.length - 1;\n while (i2 < l2) {\n $propertyKey = arr2[i2 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should have ';\n if ($deps.length == 1) {\n out += 'property ' + (it.util.escapeQuotes($deps[0]));\n } else {\n out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n }\n out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n out += ' } ';\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n var $currentBaseId = $it.baseId;\n for (var $property in $schemaDeps) {\n var $sch = $schemaDeps[$property];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n out += ') { ';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + it.util.getProperty($property);\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_enum(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $i = 'i' + $lvl,\n $vSchema = 'schema' + $lvl;\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ';';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to one of the allowed values\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_format(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n if (it.opts.format === false) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $unknownFormats = it.opts.unknownFormats,\n $allowUnknown = Array.isArray($unknownFormats);\n if ($isData) {\n var $format = 'format' + $lvl,\n $isObject = 'isObject' + $lvl,\n $formatType = 'formatType' + $lvl;\n out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n if (it.async) {\n out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n }\n out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' (';\n if ($unknownFormats != 'ignore') {\n out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n if ($allowUnknown) {\n out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n }\n out += ') || ';\n }\n out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n if (it.async) {\n out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n } else {\n out += ' ' + ($format) + '(' + ($data) + ') ';\n }\n out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n } else {\n var $format = it.formats[$schema];\n if (!$format) {\n if ($unknownFormats == 'ignore') {\n it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else {\n throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n var $formatType = $isObject && $format.type || 'string';\n if ($isObject) {\n var $async = $format.async === true;\n $format = $format.validate;\n }\n if ($formatType != $ruleType) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n if ($async) {\n if (!it.async) throw new Error('async format in sync schema');\n var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n } else {\n out += ' if (! ';\n var $formatRef = 'formats' + it.util.getProperty($schema);\n if ($isObject) $formatRef += '.validate';\n if (typeof $format == 'function') {\n out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n } else {\n out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n }\n out += ') { ';\n }\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match format \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_if(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $thenSch = it.schema['then'],\n $elseSch = it.schema['else'],\n $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? typeof $thenSch == 'object' && Object.keys($thenSch).length > 0 : it.util.schemaHasRules($thenSch, it.RULES.all)),\n $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? typeof $elseSch == 'object' && Object.keys($elseSch).length > 0 : it.util.schemaHasRules($elseSch, it.RULES.all)),\n $currentBaseId = $it.baseId;\n if ($thenPresent || $elsePresent) {\n var $ifClause;\n $it.createErrors = false;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n $it.createErrors = true;\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n if ($thenPresent) {\n out += ' if (' + ($nextValid) + ') { ';\n $it.schema = it.schema['then'];\n $it.schemaPath = it.schemaPath + '.then';\n $it.errSchemaPath = it.errSchemaPath + '/then';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n } else {\n $ifClause = '\\'then\\'';\n }\n out += ' } ';\n if ($elsePresent) {\n out += ' else { ';\n }\n } else {\n out += ' if (!' + ($nextValid) + ') { ';\n }\n if ($elsePresent) {\n $it.schema = it.schema['else'];\n $it.schemaPath = it.schemaPath + '.else';\n $it.errSchemaPath = it.errSchemaPath + '/else';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n } else {\n $ifClause = '\\'else\\'';\n }\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\n\n//all requires must be explicit because browserify won't work with dynamic requires\nmodule.exports = {\n '$ref': require('./ref'),\n allOf: require('./allOf'),\n anyOf: require('./anyOf'),\n '$comment': require('./comment'),\n const: require('./const'),\n contains: require('./contains'),\n dependencies: require('./dependencies'),\n 'enum': require('./enum'),\n format: require('./format'),\n 'if': require('./if'),\n items: require('./items'),\n maximum: require('./_limit'),\n minimum: require('./_limit'),\n maxItems: require('./_limitItems'),\n minItems: require('./_limitItems'),\n maxLength: require('./_limitLength'),\n minLength: require('./_limitLength'),\n maxProperties: require('./_limitProperties'),\n minProperties: require('./_limitProperties'),\n multipleOf: require('./multipleOf'),\n not: require('./not'),\n oneOf: require('./oneOf'),\n pattern: require('./pattern'),\n properties: require('./properties'),\n propertyNames: require('./propertyNames'),\n required: require('./required'),\n uniqueItems: require('./uniqueItems'),\n validate: require('./validate')\n};\n","'use strict';\nmodule.exports = function generate_items(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId;\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if (Array.isArray($schema)) {\n var $additionalItems = it.schema.additionalItems;\n if ($additionalItems === false) {\n out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n var $passData = $data + '[' + $i + ']';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n $it.dataPathArr[$dataNxt] = $i;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0 : it.util.schemaHasRules($additionalItems, it.RULES.all))) {\n $it.schema = $additionalItems;\n $it.schemaPath = it.schemaPath + '.additionalItems';\n $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n } else if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' }';\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_multipleOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n out += 'var division' + ($lvl) + ';if (';\n if ($isData) {\n out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n }\n out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n if (it.opts.multipleOfPrecision) {\n out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n } else {\n out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n }\n out += ' ) ';\n if ($isData) {\n out += ' ) ';\n }\n out += ' ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be multiple of ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_not(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.createErrors = false;\n var $allErrorsOption;\n if ($it.opts.allErrors) {\n $allErrorsOption = $it.opts.allErrors;\n $it.opts.allErrors = false;\n }\n out += ' ' + (it.validate($it)) + ' ';\n $it.createErrors = true;\n if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (' + ($nextValid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n out += ' var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_oneOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $prevValid = 'prevValid' + $lvl,\n $passingSchemas = 'passingSchemas' + $lvl;\n out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n } else {\n out += ' var ' + ($nextValid) + ' = true; ';\n }\n if ($i) {\n out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n $closingBraces += '}';\n }\n out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_pattern(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match pattern \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_properties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl;\n var $schemaKeys = Object.keys($schema || {}).filter(notProto),\n $pProperties = it.schema.patternProperties || {},\n $pPropertyKeys = Object.keys($pProperties).filter(notProto),\n $aProperties = it.schema.additionalProperties,\n $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n $noAdditional = $aProperties === false,\n $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n $removeAdditional = it.opts.removeAdditional,\n $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n var $required = it.schema.required;\n if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {\n var $requiredHash = it.util.toHash($required);\n }\n\n function notProto(p) {\n return p !== '__proto__';\n }\n out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined;';\n }\n if ($checkAdditional) {\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n if ($someProperties) {\n out += ' var isAdditional' + ($lvl) + ' = !(false ';\n if ($schemaKeys.length) {\n if ($schemaKeys.length > 8) {\n out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';\n } else {\n var arr1 = $schemaKeys;\n if (arr1) {\n var $propertyKey, i1 = -1,\n l1 = arr1.length - 1;\n while (i1 < l1) {\n $propertyKey = arr1[i1 += 1];\n out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr2 = $pPropertyKeys;\n if (arr2) {\n var $pProperty, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $pProperty = arr2[$i += 1];\n out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n }\n }\n }\n out += ' ); if (isAdditional' + ($lvl) + ') { ';\n }\n if ($removeAdditional == 'all') {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n var $currentErrorPath = it.errorPath;\n var $additionalProperty = '\\' + ' + $key + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n }\n if ($noAdditional) {\n if ($removeAdditional) {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n out += ' ' + ($nextValid) + ' = false; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is an invalid additional property';\n } else {\n out += 'should NOT have additional properties';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n out += ' break; ';\n }\n }\n } else if ($additionalIsSchema) {\n if ($removeAdditional == 'failing') {\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n } else {\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n }\n if ($someProperties) {\n out += ' } ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n if ($schemaKeys.length) {\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n var $prop = it.util.getProperty($propertyKey),\n $passData = $data + $prop,\n $hasDefault = $useDefaults && $sch.default !== undefined;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + $prop;\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n $code = it.util.varReplace($code, $nextData, $passData);\n var $useData = $passData;\n } else {\n var $useData = $nextData;\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n }\n if ($hasDefault) {\n out += ' ' + ($code) + ' ';\n } else {\n if ($requiredHash && $requiredHash[$propertyKey]) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = false; ';\n var $currentErrorPath = it.errorPath,\n $currErrSchemaPath = $errSchemaPath,\n $missingProperty = it.util.escapeQuotes($propertyKey);\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n $errSchemaPath = it.errSchemaPath + '/required';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n it.errorPath = $currentErrorPath;\n out += ' } else { ';\n } else {\n if ($breakOnError) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = true; } else { ';\n } else {\n out += ' if (' + ($useData) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ' ) { ';\n }\n }\n out += ' ' + ($code) + ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr4 = $pPropertyKeys;\n if (arr4) {\n var $pProperty, i4 = -1,\n l4 = arr4.length - 1;\n while (i4 < l4) {\n $pProperty = arr4[i4 += 1];\n var $sch = $pProperties[$pProperty];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else ' + ($nextValid) + ' = true; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_propertyNames(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n out += 'var ' + ($errs) + ' = errors;';\n if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $i = 'i' + $lvl,\n $invalidName = '\\' + ' + $key + ' + \\'',\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined; ';\n }\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' var startErrs' + ($lvl) + ' = errors; ';\n var $passData = $key;\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '<errors; ' + ($i) + '++) { vErrors[' + ($i) + '].propertyName = ' + ($key) + '; } var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('propertyNames') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { propertyName: \\'' + ($invalidName) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'property name \\\\\\'' + ($invalidName) + '\\\\\\' is invalid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n if ($breakOnError) {\n out += ' break; ';\n }\n out += ' } }';\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_ref(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $async, $refCode;\n if ($schema == '#' || $schema == '#/') {\n if (it.isRoot) {\n $async = it.async;\n $refCode = 'validate';\n } else {\n $async = it.root.schema.$async === true;\n $refCode = 'root.refVal[0]';\n }\n } else {\n var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\n if ($refVal === undefined) {\n var $message = it.MissingRefError.message(it.baseId, $schema);\n if (it.opts.missingRefs == 'fail') {\n it.logger.error($message);\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n } else if (it.opts.missingRefs == 'ignore') {\n it.logger.warn($message);\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n } else {\n throw new it.MissingRefError(it.baseId, $schema, $message);\n }\n } else if ($refVal.inline) {\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n $it.schema = $refVal.schema;\n $it.schemaPath = '';\n $it.errSchemaPath = $schema;\n var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\n out += ' ' + ($code) + ' ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n }\n } else {\n $async = $refVal.$async === true || (it.async && $refVal.$async !== false);\n $refCode = $refVal.code;\n }\n }\n if ($refCode) {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n if (it.opts.passContext) {\n out += ' ' + ($refCode) + '.call(this, ';\n } else {\n out += ' ' + ($refCode) + '( ';\n }\n out += ' ' + ($data) + ', (dataPath || \\'\\')';\n if (it.errorPath != '\"\"') {\n out += ' + ' + (it.errorPath);\n }\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) ';\n var __callValidate = out;\n out = $$outStack.pop();\n if ($async) {\n if (!it.async) throw new Error('async schema referenced by sync schema');\n if ($breakOnError) {\n out += ' var ' + ($valid) + '; ';\n }\n out += ' try { await ' + (__callValidate) + '; ';\n if ($breakOnError) {\n out += ' ' + ($valid) + ' = true; ';\n }\n out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';\n if ($breakOnError) {\n out += ' ' + ($valid) + ' = false; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($valid) + ') { ';\n }\n } else {\n out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_required(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $vSchema = 'schema' + $lvl;\n if (!$isData) {\n if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {\n var $required = [];\n var arr1 = $schema;\n if (arr1) {\n var $property, i1 = -1,\n l1 = arr1.length - 1;\n while (i1 < l1) {\n $property = arr1[i1 += 1];\n var $propertySch = it.schema.properties[$property];\n if (!($propertySch && (it.opts.strictKeywords ? typeof $propertySch == 'object' && Object.keys($propertySch).length > 0 : it.util.schemaHasRules($propertySch, it.RULES.all)))) {\n $required[$required.length] = $property;\n }\n }\n }\n } else {\n var $required = $schema;\n }\n }\n if ($isData || $required.length) {\n var $currentErrorPath = it.errorPath,\n $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n $ownProperties = it.opts.ownProperties;\n if ($breakOnError) {\n out += ' var missing' + ($lvl) + '; ';\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n out += ' var ' + ($valid) + ' = true; ';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += '; if (!' + ($valid) + ') break; } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n } else {\n out += ' if ( ';\n var arr2 = $required;\n if (arr2) {\n var $propertyKey, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $propertyKey = arr2[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ') { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n }\n } else {\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n if ($isData) {\n out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n if ($isData) {\n out += ' } ';\n }\n } else {\n var arr3 = $required;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n }\n it.errorPath = $currentErrorPath;\n } else if ($breakOnError) {\n out += ' if (true) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_uniqueItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (($schema || $isData) && it.opts.uniqueItems !== false) {\n if ($isData) {\n out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n }\n out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n var $itemType = it.schema.items && it.schema.items.type,\n $typeIsArray = Array.isArray($itemType);\n if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n } else {\n out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; ';\n if ($typeIsArray) {\n out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n }\n out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n }\n out += ' } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_validate(it, $keyword, $ruleType) {\n var out = '';\n var $async = it.schema.$async === true,\n $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),\n $id = it.self._getId(it.schema);\n if (it.opts.strictKeywords) {\n var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords);\n if ($unknownKwd) {\n var $keywordsMsg = 'unknown keyword: ' + $unknownKwd;\n if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg);\n else throw new Error($keywordsMsg);\n }\n }\n if (it.isTop) {\n out += ' var validate = ';\n if ($async) {\n it.async = true;\n out += 'async ';\n }\n out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \\'use strict\\'; ';\n if ($id && (it.opts.sourceCode || it.opts.processCode)) {\n out += ' ' + ('/\\*# sourceURL=' + $id + ' */') + ' ';\n }\n }\n if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {\n var $keyword = 'false schema';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n if (it.schema === false) {\n if (it.isTop) {\n $breakOnError = true;\n } else {\n out += ' var ' + ($valid) + ' = false; ';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'false schema') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'boolean schema is false\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n } else {\n if (it.isTop) {\n if ($async) {\n out += ' return data; ';\n } else {\n out += ' validate.errors = null; return true; ';\n }\n } else {\n out += ' var ' + ($valid) + ' = true; ';\n }\n }\n if (it.isTop) {\n out += ' }; return validate; ';\n }\n return out;\n }\n if (it.isTop) {\n var $top = it.isTop,\n $lvl = it.level = 0,\n $dataLvl = it.dataLevel = 0,\n $data = 'data';\n it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));\n it.baseId = it.baseId || it.rootId;\n delete it.isTop;\n it.dataPathArr = [undefined];\n if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored in the schema root';\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n out += ' var vErrors = null; ';\n out += ' var errors = 0; ';\n out += ' if (rootData === undefined) rootData = data; ';\n } else {\n var $lvl = it.level,\n $dataLvl = it.dataLevel,\n $data = 'data' + ($dataLvl || '');\n if ($id) it.baseId = it.resolve.url(it.baseId, $id);\n if ($async && !it.async) throw new Error('async schema in sync schema');\n out += ' var errs_' + ($lvl) + ' = errors;';\n }\n var $valid = 'valid' + $lvl,\n $breakOnError = !it.opts.allErrors,\n $closingBraces1 = '',\n $closingBraces2 = '';\n var $errorKeyword;\n var $typeSchema = it.schema.type,\n $typeIsArray = Array.isArray($typeSchema);\n if ($typeSchema && it.opts.nullable && it.schema.nullable === true) {\n if ($typeIsArray) {\n if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null');\n } else if ($typeSchema != 'null') {\n $typeSchema = [$typeSchema, 'null'];\n $typeIsArray = true;\n }\n }\n if ($typeIsArray && $typeSchema.length == 1) {\n $typeSchema = $typeSchema[0];\n $typeIsArray = false;\n }\n if (it.schema.$ref && $refKeywords) {\n if (it.opts.extendRefs == 'fail') {\n throw new Error('$ref: validation keywords used in schema at path \"' + it.errSchemaPath + '\" (see option extendRefs)');\n } else if (it.opts.extendRefs !== true) {\n $refKeywords = false;\n it.logger.warn('$ref: keywords ignored in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n if (it.schema.$comment && it.opts.$comment) {\n out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));\n }\n if ($typeSchema) {\n if (it.opts.coerceTypes) {\n var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);\n }\n var $rulesGroup = it.RULES.types[$typeSchema];\n if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type';\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type',\n $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';\n out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { ';\n if ($coerceToTypes) {\n var $dataType = 'dataType' + $lvl,\n $coerced = 'coerced' + $lvl;\n out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; ';\n if (it.opts.coerceTypes == 'array') {\n out += ' if (' + ($dataType) + ' == \\'object\\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } ';\n }\n out += ' if (' + ($coerced) + ' !== undefined) ; ';\n var arr1 = $coerceToTypes;\n if (arr1) {\n var $type, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $type = arr1[$i += 1];\n if ($type == 'string') {\n out += ' else if (' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\') ' + ($coerced) + ' = \\'\\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \\'\\'; ';\n } else if ($type == 'number' || $type == 'integer') {\n out += ' else if (' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \\'string\\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';\n if ($type == 'integer') {\n out += ' && !(' + ($data) + ' % 1)';\n }\n out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';\n } else if ($type == 'boolean') {\n out += ' else if (' + ($data) + ' === \\'false\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \\'true\\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';\n } else if ($type == 'null') {\n out += ' else if (' + ($data) + ' === \\'\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';\n } else if (it.opts.coerceTypes == 'array' && $type == 'array') {\n out += ' else if (' + ($dataType) + ' == \\'string\\' || ' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';\n }\n }\n }\n out += ' else { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } if (' + ($coerced) + ' !== undefined) { ';\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' ' + ($data) + ' = ' + ($coerced) + '; ';\n if (!$dataLvl) {\n out += 'if (' + ($parentData) + ' !== undefined)';\n }\n out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';\n } else {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n }\n out += ' } ';\n }\n }\n if (it.schema.$ref && !$refKeywords) {\n out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';\n if ($breakOnError) {\n out += ' } if (errors === ';\n if ($top) {\n out += '0';\n } else {\n out += 'errs_' + ($lvl);\n }\n out += ') { ';\n $closingBraces2 += '}';\n }\n } else {\n var arr2 = it.RULES;\n if (arr2) {\n var $rulesGroup, i2 = -1,\n l2 = arr2.length - 1;\n while (i2 < l2) {\n $rulesGroup = arr2[i2 += 1];\n if ($shouldUseGroup($rulesGroup)) {\n if ($rulesGroup.type) {\n out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { ';\n }\n if (it.opts.useDefaults) {\n if ($rulesGroup.type == 'object' && it.schema.properties) {\n var $schema = it.schema.properties,\n $schemaKeys = Object.keys($schema);\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ($sch.default !== undefined) {\n var $passData = $data + it.util.getProperty($propertyKey);\n if (it.compositeRule) {\n if (it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored for: ' + $passData;\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n } else {\n out += ' if (' + ($passData) + ' === undefined ';\n if (it.opts.useDefaults == 'empty') {\n out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n }\n out += ' ) ' + ($passData) + ' = ';\n if (it.opts.useDefaults == 'shared') {\n out += ' ' + (it.useDefault($sch.default)) + ' ';\n } else {\n out += ' ' + (JSON.stringify($sch.default)) + ' ';\n }\n out += '; ';\n }\n }\n }\n }\n } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {\n var arr4 = it.schema.items;\n if (arr4) {\n var $sch, $i = -1,\n l4 = arr4.length - 1;\n while ($i < l4) {\n $sch = arr4[$i += 1];\n if ($sch.default !== undefined) {\n var $passData = $data + '[' + $i + ']';\n if (it.compositeRule) {\n if (it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored for: ' + $passData;\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n } else {\n out += ' if (' + ($passData) + ' === undefined ';\n if (it.opts.useDefaults == 'empty') {\n out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n }\n out += ' ) ' + ($passData) + ' = ';\n if (it.opts.useDefaults == 'shared') {\n out += ' ' + (it.useDefault($sch.default)) + ' ';\n } else {\n out += ' ' + (JSON.stringify($sch.default)) + ' ';\n }\n out += '; ';\n }\n }\n }\n }\n }\n }\n var arr5 = $rulesGroup.rules;\n if (arr5) {\n var $rule, i5 = -1,\n l5 = arr5.length - 1;\n while (i5 < l5) {\n $rule = arr5[i5 += 1];\n if ($shouldUseRule($rule)) {\n var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);\n if ($code) {\n out += ' ' + ($code) + ' ';\n if ($breakOnError) {\n $closingBraces1 += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces1) + ' ';\n $closingBraces1 = '';\n }\n if ($rulesGroup.type) {\n out += ' } ';\n if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {\n out += ' else { ';\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (errors === ';\n if ($top) {\n out += '0';\n } else {\n out += 'errs_' + ($lvl);\n }\n out += ') { ';\n $closingBraces2 += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces2) + ' ';\n }\n if ($top) {\n if ($async) {\n out += ' if (errors === 0) return data; ';\n out += ' else throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; ';\n out += ' return errors === 0; ';\n }\n out += ' }; return validate;';\n } else {\n out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';\n }\n\n function $shouldUseGroup($rulesGroup) {\n var rules = $rulesGroup.rules;\n for (var i = 0; i < rules.length; i++)\n if ($shouldUseRule(rules[i])) return true;\n }\n\n function $shouldUseRule($rule) {\n return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));\n }\n\n function $ruleImplementsSomeKeyword($rule) {\n var impl = $rule.implements;\n for (var i = 0; i < impl.length; i++)\n if (it.schema[impl[i]] !== undefined) return true;\n }\n return out;\n}\n","'use strict';\n\nvar IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;\nvar customRuleCode = require('./dotjs/custom');\nvar definitionSchema = require('./definition_schema');\n\nmodule.exports = {\n add: addKeyword,\n get: getKeyword,\n remove: removeKeyword,\n validate: validateKeyword\n};\n\n\n/**\n * Define custom keyword\n * @this Ajv\n * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).\n * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.\n * @return {Ajv} this for method chaining\n */\nfunction addKeyword(keyword, definition) {\n /* jshint validthis: true */\n /* eslint no-shadow: 0 */\n var RULES = this.RULES;\n if (RULES.keywords[keyword])\n throw new Error('Keyword ' + keyword + ' is already defined');\n\n if (!IDENTIFIER.test(keyword))\n throw new Error('Keyword ' + keyword + ' is not a valid identifier');\n\n if (definition) {\n this.validateKeyword(definition, true);\n\n var dataType = definition.type;\n if (Array.isArray(dataType)) {\n for (var i=0; i<dataType.length; i++)\n _addRule(keyword, dataType[i], definition);\n } else {\n _addRule(keyword, dataType, definition);\n }\n\n var metaSchema = definition.metaSchema;\n if (metaSchema) {\n if (definition.$data && this._opts.$data) {\n metaSchema = {\n anyOf: [\n metaSchema,\n { '$ref': 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }\n ]\n };\n }\n definition.validateSchema = this.compile(metaSchema, true);\n }\n }\n\n RULES.keywords[keyword] = RULES.all[keyword] = true;\n\n\n function _addRule(keyword, dataType, definition) {\n var ruleGroup;\n for (var i=0; i<RULES.length; i++) {\n var rg = RULES[i];\n if (rg.type == dataType) {\n ruleGroup = rg;\n break;\n }\n }\n\n if (!ruleGroup) {\n ruleGroup = { type: dataType, rules: [] };\n RULES.push(ruleGroup);\n }\n\n var rule = {\n keyword: keyword,\n definition: definition,\n custom: true,\n code: customRuleCode,\n implements: definition.implements\n };\n ruleGroup.rules.push(rule);\n RULES.custom[keyword] = rule;\n }\n\n return this;\n}\n\n\n/**\n * Get keyword\n * @this Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.\n */\nfunction getKeyword(keyword) {\n /* jshint validthis: true */\n var rule = this.RULES.custom[keyword];\n return rule ? rule.definition : this.RULES.keywords[keyword] || false;\n}\n\n\n/**\n * Remove keyword\n * @this Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Ajv} this for method chaining\n */\nfunction removeKeyword(keyword) {\n /* jshint validthis: true */\n var RULES = this.RULES;\n delete RULES.keywords[keyword];\n delete RULES.all[keyword];\n delete RULES.custom[keyword];\n for (var i=0; i<RULES.length; i++) {\n var rules = RULES[i].rules;\n for (var j=0; j<rules.length; j++) {\n if (rules[j].keyword == keyword) {\n rules.splice(j, 1);\n break;\n }\n }\n }\n return this;\n}\n\n\n/**\n * Validate keyword definition\n * @this Ajv\n * @param {Object} definition keyword definition object.\n * @param {Boolean} throwError true to throw exception if definition is invalid\n * @return {boolean} validation result\n */\nfunction validateKeyword(definition, throwError) {\n validateKeyword.errors = null;\n var v = this._validateKeyword = this._validateKeyword\n || this.compile(definitionSchema, true);\n\n if (v(definition)) return true;\n validateKeyword.errors = v.errors;\n if (throwError)\n throw new Error('custom keyword definition is invalid: ' + this.errorsText(v.errors));\n else\n return false;\n}\n","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","module.exports = {\n \"version\": \"0.26.0\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return toString.call(val) === '[object URLSearchParams]';\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var MILLISECONDS_IN_MINUTE = 60000;\n\nfunction getDateMillisecondsPart(date) {\n return date.getTime() % MILLISECONDS_IN_MINUTE;\n}\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\n\n\nexport default function getTimezoneOffsetInMilliseconds(dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = Math.ceil(date.getTimezoneOffset());\n date.setSeconds(0, 0);\n var hasNegativeUTCOffset = baseTimezoneOffset > 0;\n var millisecondsPartOfTimezoneOffset = hasNegativeUTCOffset ? (MILLISECONDS_IN_MINUTE + getDateMillisecondsPart(date)) % MILLISECONDS_IN_MINUTE : getDateMillisecondsPart(date);\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset;\n}","import getUTCISOWeekYear from '../getUTCISOWeekYear/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport startOfUTCISOWeekYear from '../startOfUTCISOWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCISOWeek from '../startOfUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toInteger from '../toInteger/index.js';\nimport getUTCWeekYear from '../getUTCWeekYear/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport startOfUTCWeekYear from '../startOfUTCWeekYear/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport startOfUTCWeek from '../startOfUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return !isNaN(date);\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from '../../addLeadingZeros/index.js';\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js';\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import lightFormatters from '../lightFormatters/index.js';\nimport getUTCDayOfYear from '../../../_lib/getUTCDayOfYear/index.js';\nimport getUTCISOWeek from '../../../_lib/getUTCISOWeek/index.js';\nimport getUTCISOWeekYear from '../../../_lib/getUTCISOWeekYear/index.js';\nimport getUTCWeek from '../../../_lib/getUTCWeek/index.js';\nimport getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport addLeadingZeros from '../../addLeadingZeros/index.js';\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n /*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\n};\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","import isValid from '../isValid/index.js';\nimport defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport formatters from '../_lib/format/formatters/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js'; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() < dateToCompare.getTime();\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nexport default function formatDistance(token, count, options) {\n options = options || {};\n var result;\n\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n}","export default function buildFormatLongFn(args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from '../../../_lib/buildFormatLongFn/index.js';\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nexport default function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n}","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index];\n };\n}","import buildLocalizeFn from '../../../_lib/buildLocalizeFn/index.js';\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter'] // Note: in English, the names of days of the week and months are capitalized.\n // If you are making a new locale based on this one, check if the same is true for the language you're working on.\n // Generally, formatted dates should look like they are in the middle of a sentence,\n // e.g. in Spanish language the weekdays and months should be in the lowercase.\n\n};\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber(dirtyNumber, _dirtyOptions) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var value;\n\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n}","import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js';\nimport buildMatchFn from '../../../_lib/buildMatchFn/index.js';\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","import formatDistance from './_lib/formatDistance/index.js';\nimport formatLong from './_lib/formatLong/index.js';\nimport formatRelative from './_lib/formatRelative/index.js';\nimport localize from './_lib/localize/index.js';\nimport match from './_lib/match/index.js';\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\n\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","export default function buildMatchPatternFn(args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var matchResult = string.match(args.matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n\n if (!parseResult) {\n return null;\n }\n\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n return {\n value: value,\n rest: string.slice(matchedString.length)\n };\n };\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (dirtyObject.hasOwnProperty(property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport getUTCISOWeek from '../getUTCISOWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from '../toInteger/index.js';\nimport toDate from '../../toDate/index.js';\nimport getUTCWeek from '../getUTCWeek/index.js';\nimport requiredArgs from '../requiredArgs/index.js'; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import getUTCWeekYear from '../../../_lib/getUTCWeekYear/index.js';\nimport setUTCDay from '../../../_lib/setUTCDay/index.js';\nimport setUTCISODay from '../../../_lib/setUTCISODay/index.js';\nimport setUTCISOWeek from '../../../_lib/setUTCISOWeek/index.js';\nimport setUTCWeek from '../../../_lib/setUTCWeek/index.js';\nimport startOfUTCISOWeek from '../../../_lib/startOfUTCISOWeek/index.js';\nimport startOfUTCWeek from '../../../_lib/startOfUTCWeek/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'K', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import defaultLocale from '../locale/en-US/index.js';\nimport subMilliseconds from '../subMilliseconds/index.js';\nimport toDate from '../toDate/index.js';\nimport assign from '../_lib/assign/index.js';\nimport longFormatters from '../_lib/format/longFormatters/index.js';\nimport getTimezoneOffsetInMilliseconds from '../_lib/getTimezoneOffsetInMilliseconds/index.js';\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from '../_lib/protectedTokens/index.js';\nimport toInteger from '../_lib/toInteger/index.js';\nimport parsers from './_lib/parsers/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * toDate('2016-01-01')\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale // If timezone isn't specified, it will be set to the system timezone\n\n };\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n subPriority: -1,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n subPriority: parser.subPriority || 0,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import toInteger from '../_lib/toInteger/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * parseISO('2016-01-01')\n * ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n * and returns `Invalid Date` if the date is invalid.\n *\n * ```javascript\n * parseISO('2018-13-32')\n * //=> Invalid Date\n * ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n * if it fails to parse a string argument. Instead, it returns `Invalid Date`.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (isNaN(date) || !date) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time) || time === null) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate(), dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n result.setFullYear(dirtyDate.getUTCFullYear());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: null\n };\n var year = captures[1] && parseInt(captures[1]);\n var century = captures[2] && parseInt(captures[2]);\n return {\n year: century == null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return null;\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return null;\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return null; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","import toInteger from '../_lib/toInteger/index.js';\nimport toDate from '../toDate/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from '../_lib/toInteger/index.js';\nimport addMilliseconds from '../addMilliseconds/index.js';\nimport requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import requiredArgs from '../_lib/requiredArgs/index.js';\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./jquery.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"$\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"$\"] = ___EXPOSE_LOADER_IMPORT___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"jQuery\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"jQuery\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./backbone.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../../node_modules/expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\n___EXPOSE_LOADER_GLOBAL_THIS___[\"Backbone\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./modernizr.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../../../node_modules/expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"Modernizr\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"Modernizr\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./underscore.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../../node_modules/expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"_\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"_\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","\"use strict\";\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n if (typeof globalThis === \"object\") {\n return globalThis;\n }\n\n var g;\n\n try {\n // This works if eval is allowed (see CSP)\n // eslint-disable-next-line no-new-func\n g = this || new Function(\"return this\")();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") {\n return window;\n } // This works if the self reference is available\n\n\n if (typeof self === \"object\") {\n return self;\n } // This works if the global reference is available\n\n\n if (typeof global !== \"undefined\") {\n return global;\n }\n }\n\n return g;\n}();","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n","var topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nvar doccy;\n\nif (typeof document !== 'undefined') {\n doccy = document;\n} else {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n}\n\nmodule.exports = doccy;\n","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.<anonymous>\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar defaults = {\n tName: 't',\n i18nName: 'i18n',\n handleName: 'localize',\n selectorAttr: 'data-i18n',\n targetAttr: 'i18n-target',\n optionsAttr: 'i18n-options',\n useOptionsAttr: false,\n parseDefaultValueFromContent: true\n};\n\nfunction init(i18next, $) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\n options = _extends({}, defaults, options);\n\n function parse(ele, key, opts) {\n if (key.length === 0) return;\n\n var attr = 'text';\n\n if (key.indexOf('[') === 0) {\n var parts = key.split(']');\n key = parts[1];\n attr = parts[0].substr(1, parts[0].length - 1);\n }\n\n if (key.indexOf(';') === key.length - 1) {\n key = key.substr(0, key.length - 2);\n }\n\n function extendDefault(o, val) {\n if (!options.parseDefaultValueFromContent) return o;\n return _extends({}, o, { defaultValue: val });\n }\n\n if (attr === 'html') {\n ele.html(i18next.t(key, extendDefault(opts, ele.html())));\n } else if (attr === 'text') {\n ele.text(i18next.t(key, extendDefault(opts, ele.text())));\n } else if (attr === 'prepend') {\n ele.prepend(i18next.t(key, extendDefault(opts, ele.html())));\n } else if (attr === 'append') {\n ele.append(i18next.t(key, extendDefault(opts, ele.html())));\n } else if (attr.indexOf('data-') === 0) {\n var dataAttr = attr.substr('data-'.length);\n var translated = i18next.t(key, extendDefault(opts, ele.data(dataAttr)));\n\n // we change into the data cache\n ele.data(dataAttr, translated);\n // we change into the dom\n ele.attr(attr, translated);\n } else {\n ele.attr(attr, i18next.t(key, extendDefault(opts, ele.attr(attr))));\n }\n }\n\n function localize(ele, opts) {\n var key = ele.attr(options.selectorAttr);\n if (!key && typeof key !== 'undefined' && key !== false) key = ele.text() || ele.val();\n if (!key) return;\n\n var target = ele,\n targetSelector = ele.data(options.targetAttr);\n\n if (targetSelector) target = ele.find(targetSelector) || ele;\n\n if (!opts && options.useOptionsAttr === true) opts = ele.data(options.optionsAttr);\n\n opts = opts || {};\n\n if (key.indexOf(';') >= 0) {\n var keys = key.split(';');\n\n $.each(keys, function (m, k) {\n // .trim(): Trim the comma-separated parameters on the data-i18n attribute.\n if (k !== '') parse(target, k.trim(), opts);\n });\n } else {\n parse(target, key, opts);\n }\n\n if (options.useOptionsAttr === true) {\n var clone = {};\n clone = _extends({ clone: clone }, opts);\n\n delete clone.lng;\n ele.data(options.optionsAttr, clone);\n }\n }\n\n function handle(opts) {\n return this.each(function () {\n // localize element itself\n localize($(this), opts);\n\n // localize children\n var elements = $(this).find('[' + options.selectorAttr + ']');\n elements.each(function () {\n localize($(this), opts);\n });\n });\n };\n\n // $.t $.i18n shortcut\n $[options.tName] = i18next.t.bind(i18next);\n $[options.i18nName] = i18next;\n\n // selector function $(mySelector).localize(opts);\n $.fn[options.handleName] = handle;\n}\n\nexports.default = {\n init: init\n};","module.exports = require('./dist/commonjs/index.js').default;\n","/*!\n * jQuery JavaScript Library v3.5.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-05-04T22:49Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.5.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( _i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.5\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2020-03-14\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px\";\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = parseInt( trStyle.height ) > 3;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = (\n\t\t\t\t\tdataPriv.get( cur, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script\n\t\t\tif ( !isSuccess && jQuery.inArray( \"script\", s.dataTypes ) > -1 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tif ( typeof props.top === \"number\" ) {\n\t\t\t\tprops.top += \"px\";\n\t\t\t}\n\t\t\tif ( typeof props.left === \"number\" ) {\n\t\t\t\tprops.left += \"px\";\n\t\t\t}\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t} );\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","'use strict';\n\n(function () {\n var ls = typeof window !== 'undefined' ? window.localStorage : null\n , ms = require('ms')\n , lzstring = require('lz-string');\n\n // Provide an in-memory fallback for\n // older browsers.\n if (!ls) {\n ls = {\n _data: {},\n setItem: function(id, val) {\n return this._data[id] = String(val);\n },\n getItem: function(id) {\n return this._data.hasOwnProperty(id) ? this._data[id] : undefined;\n },\n removeItem: function(id) {\n return delete this._data[id];\n },\n key: function (index) {\n for (var key in this_data) {\n if (!(index--)) {\n return key;\n }\n }\n },\n clear: function() {\n return this._data = {};\n }\n };\n }\n\n // Fastest utility functions for this case.\n // Faster than underscore and lodash.\n // Besides, do I even need them here?\n var utils = {\n each: function (arr, iteratee) {\n var l = arr.length;\n while (l--) iteratee(arr[l], l);\n },\n map : function (arr, iteratee) {\n var newArr = new Array(arr.length)\n , l = arr.length;\n while (l--) newArr[l] = iteratee(arr[l], l);\n return newArr;\n },\n filter: function (arr, iteratee) {\n var newArr = []\n , l = arr.length;\n while (l--) {\n if (iteratee(arr[l], l))\n newArr.push(arr[l]);\n }\n return newArr;\n }\n }\n\n var _keys, _config, _compressAll, _timeouts = {};\n\n var Locally = function (options) {\n // custom options\n options = options || {};\n _compressAll = options.compress;\n\n // load current localStorage state\n _config = ls.getItem('locally-config');\n\n // start anew if no config\n if (!_config) {\n _config = {};\n\n // reads localstorage and updates config\n _rebuildConfig();\n }\n else {\n var deconfig = lzstring.decompressFromUTF16(_config);\n\n try {\n _config = JSON.parse(deconfig || _config);\n } catch (e) {\n if (!!deconfig) {\n try {\n _config = JSON.parse(_config);\n } catch (e) {\n throw new Error('Locally: config is corrupted');\n }\n } else throw new Error('Locally: config is corrupted');\n }\n\n // reads localstorage and updates config\n _rebuildConfig();\n }\n\n _saveConfig();\n\n Object.defineProperty(this, 'length', {\n get: function () {\n return _keys.length;\n }\n });\n };\n\n Locally.prototype.set = function (key, value, options) {\n if (arguments.length < 2)\n throw new Error('Locally: no key or value given');\n\n options = options || {};\n\n if (typeof options !== 'object') {\n options = { ttl: options };\n }\n\n if (typeof options.ttl === 'string') {\n options.ttl = ms(options.ttl);\n }\n\n // Set TTL\n _config[key] = _config[key] || {};\n\n // Add to keys array\n if (_keys.indexOf(key) == -1) {\n _keys.push(key);\n }\n\n // Set TTL\n if (options.ttl && !isNaN(options.ttl)) {\n _clearTimeout(key);\n _setTimeout(key, options.ttl);\n } else if (_config[key].ttl) {\n _clearTimeout(key);\n }\n\n // LocalStorage saves and returns values as strings.\n // Type of values will be saved so that values will be\n // parsed to their original type.\n var res = _getType(value);\n\n value = res.value;\n _config[key].t = res.type;\n\n // compression\n if (options.compress || _compressAll) {\n _config[key].c = 1;\n value = lzstring.compressToUTF16(value.toString());\n }\n\n key = String(key);\n value = String(value);\n\n ls.setItem(key, value);\n _saveConfig();\n }\n\n Locally.prototype.get = function (key) {\n return Array.isArray(key) ? utils.map(key, function (item) { return _get(item); }.bind(this)) : _get(key);\n }\n\n Locally.prototype.keys = function (pattern) {\n // Return all keys\n if (!pattern || pattern == '*') return _keys.slice(0);\n\n // RegExp pattern to be queried\n if (!(pattern instanceof RegExp)) {\n pattern = new RegExp('.*' + pattern + '.*');\n }\n\n return utils.filter(_keys, function (key) {\n return pattern.test(key);\n });\n }\n\n Locally.prototype.remove = function (key) {\n if (typeof key === 'undefined')\n throw new Error('Locally: \\'remove\\' requires a key');\n\n if (Array.isArray(key)) {\n utils.each(key, _remove);\n } else {\n _remove(key);\n }\n }\n\n // callback gets 'value' and 'key' as parameters\n Locally.prototype.scan = function (key, fn) {\n return utils.each(this.keys(key), function (key) {\n fn(_get(key), key);\n });\n }\n\n Locally.prototype.ttl = function (key, returnString) {\n return _config[key] ?\n _config[key].ttl ?\n !returnString ?\n _config[key].ttl - Date.now()\n : ms(_config[key].ttl - Date.now())\n : -1\n : -2;\n }\n\n Locally.prototype.persist = function (key) {\n return _config[key] ? delete _config[key].ttl && _saveConfig() && _clearTimeout(key) : false;\n }\n\n Locally.prototype.expire = function (key, ttl) {\n return _config[key] ? !!(_config[key].ttl = Date.now() + ttl) && _saveConfig() : false;\n }\n\n Locally.prototype.clear = function () {\n ls.clear();\n\n _config = {};\n _keys = [];\n return _saveConfig();\n }\n\n Locally.prototype.key = function (index) {\n return _keys[index];\n }\n\n // Removes a value from localStorage\n function _remove(key) {\n var i = _keys.indexOf(key)\n if (i > -1) {\n ls.removeItem(key);\n _keys.splice(_keys.indexOf(key), 1);\n delete _config[key];\n }\n }\n\n // Saves config to localStorage\n function _saveConfig() {\n ls.setItem('locally-config', lzstring.compressToUTF16( JSON.stringify(_config)) );\n return true;\n }\n\n function _get(key) {\n // Return null if no key is given\n if (typeof key === 'undefined' || !_config[key]) return null;\n\n // Check for TTL\n // If TTL is exceeded delete data\n // and return null\n if (_config[key].ttl && _config[key].ttl < Date.now()) {\n delete _config[key];\n\n _saveConfig();\n _remove(key);\n\n return null;\n }\n\n var temp, value = _config[key].c ? lzstring.decompressFromUTF16( ls.getItem(key) ) : ls.getItem(key);\n\n // Return value in correct type\n switch (_config[key].t) {\n case 'o':\n try {\n value = JSON.parse(value);\n } catch (e) {}\n\n return value;\n break;\n\n case 'd':\n return new Date(parseInt(value, 10));\n break;\n\n case 'r':\n return new RegExp(value.substring(1, value.length - 1));\n break;\n\n case 'f':\n eval('temp = ' + value);\n return temp;\n break;\n\n case 'n':\n return Number(value);\n break;\n\n case 'b':\n return value == '1';\n break;\n\n case 's':\n default:\n if (value === 'null')\n return null;\n else if (value === 'undefined')\n return undefined;\n else return String(value);\n break;\n }\n }\n\n function _getType(value) {\n var type;\n\n switch (typeof value) {\n case 'object':\n // Keep Date objects as timestamps\n if (value instanceof Date) {\n value = value.getTime();\n type = 'd';\n }\n // Keep RegExp objects as strings\n else if (value instanceof RegExp) {\n value = value.toString();\n type = 'r';\n }\n // Otherwise keep them as JSON\n else {\n value = JSON.stringify(value);\n type = 'o';\n }\n break;\n\n case 'function':\n type = 'f';\n break;\n\n case 'number':\n type = 'n';\n break;\n\n case 'boolean':\n value = value ? 1 : 0;\n type = 'b';\n break;\n\n case 'string':\n default:\n type = 's';\n }\n\n return {\n value: value,\n type: type\n };\n }\n\n function _rebuildConfig() {\n var l = ls.length;\n _keys = new Array(l);\n\n // Cache localStorage keys for faster access\n while (l--) {\n _keys[l] = ls.key(l);\n _config[_keys[l]] = _config[_keys[l]] || {};\n\n // _compressAll is given and value is not\n // compressed then compress the value\n if (_compressAll && !_config[_keys[l]].c) {\n _config[_keys[l]].c = true;\n ls.setItem(_keys[l], lzstring.compressToUTF16( ls.getItem(_keys[l]) ));\n }\n // if the value is compressed and\n // compressAll is not given then decompress\n // current value.\n else if (!_compressAll && _config[_keys[l]].c) {\n delete _config[_keys[l]].c;\n ls.setItem(_keys[l], lzstring.decompressFromUTF16( ls.getItem(_keys[l]) ));\n }\n\n if (_config[_keys[l]].ttl) {\n _setTimeout(_keys[l], _config[_keys[l]].ttl - Date.now());\n }\n }\n\n // Exclude locally-config from _keys array\n if (_keys.indexOf('locally-config') > -1) {\n _keys.splice(_keys.indexOf('locally-config'), 1);\n }\n }\n\n function _setTimeout(key, ttl) {\n _config[key].ttl = Date.now() + ttl;\n _timeouts[key] = setTimeout(function () {\n _remove(key);\n }, ttl);\n }\n\n function _clearTimeout(key) {\n if (_keys.indexOf(key) > -1) {\n clearTimeout(_timeouts[key]);\n delete _timeouts[key];\n delete _config[key].ttl;\n return true;\n }\n else return false;\n }\n\n // CommonJS\n if (typeof exports === 'object') {\n module.exports.Store = Locally;\n }\n // AMD. Register as an anonymous module.\n if (typeof define === 'function' && define.amd) {\n define(function() {\n return {\n Store: Locally\n };\n });\n }\n // Browser global.\n if (typeof window === 'object') {\n window.Locally = {\n Store: Locally\n };\n }\n})();\n","// Copyright (c) 2013 Pieroxy <pieroxy@pieroxy.net>\n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.5\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i<alphabet.length ; i++) {\n baseReverseDic[alphabet][alphabet.charAt(i)] = i;\n }\n }\n return baseReverseDic[alphabet][character];\n}\n\nvar LZString = {\n compressToBase64 : function (input) {\n if (input == null) return \"\";\n var res = LZString._compress(input, 6, function(a){return keyStrBase64.charAt(a);});\n switch (res.length % 4) { // To produce valid Base64\n default: // When could this happen ?\n case 0 : return res;\n case 1 : return res+\"===\";\n case 2 : return res+\"==\";\n case 3 : return res+\"=\";\n }\n },\n\n decompressFromBase64 : function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrBase64, input.charAt(index)); });\n },\n\n compressToUTF16 : function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 15, function(a){return f(a+32);}) + \" \";\n },\n\n decompressFromUTF16: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 16384, function(index) { return compressed.charCodeAt(index) - 32; });\n },\n\n //compress into uint8array (UCS-2 big endian format)\n compressToUint8Array: function (uncompressed) {\n var compressed = LZString.compress(uncompressed);\n var buf=new Uint8Array(compressed.length*2); // 2 bytes per character\n\n for (var i=0, TotalLen=compressed.length; i<TotalLen; i++) {\n var current_value = compressed.charCodeAt(i);\n buf[i*2] = current_value >>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i<TotalLen; i++) {\n buf[i]=compressed[i*2]*256+compressed[i*2+1];\n }\n\n var result = [];\n buf.forEach(function (c) {\n result.push(f(c));\n });\n return LZString.decompress(result.join(''));\n\n }\n\n },\n\n\n //compress into a string that is already URI encoded\n compressToEncodedURIComponent: function (input) {\n if (input == null) return \"\";\n return LZString._compress(input, 6, function(a){return keyStrUriSafe.charAt(a);});\n },\n\n //decompress from an output of compressToEncodedURIComponent\n decompressFromEncodedURIComponent:function (input) {\n if (input == null) return \"\";\n if (input == \"\") return null;\n input = input.replace(/ /g, \"+\");\n return LZString._decompress(input.length, 32, function(index) { return getBaseValue(keyStrUriSafe, input.charAt(index)); });\n },\n\n compress: function (uncompressed) {\n return LZString._compress(uncompressed, 16, function(a){return f(a);});\n },\n _compress: function (uncompressed, bitsPerChar, getCharFromInt) {\n if (uncompressed == null) return \"\";\n var i, value,\n context_dictionary= {},\n context_dictionaryToCreate= {},\n context_c=\"\",\n context_wc=\"\",\n context_w=\"\",\n context_enlargeIn= 2, // Compensate for the first entry which should not count\n context_dictSize= 3,\n context_numBits= 2,\n context_data=[],\n context_data_val=0,\n context_data_position=0,\n ii;\n\n for (ii = 0; ii < uncompressed.length; ii += 1) {\n context_c = uncompressed.charAt(ii);\n if (!Object.prototype.hasOwnProperty.call(context_dictionary,context_c)) {\n context_dictionary[context_c] = context_dictSize++;\n context_dictionaryToCreate[context_c] = true;\n }\n\n context_wc = context_w + context_c;\n if (Object.prototype.hasOwnProperty.call(context_dictionary,context_wc)) {\n context_w = context_wc;\n } else {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position ==bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<8 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | value;\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = 0;\n }\n value = context_w.charCodeAt(0);\n for (i=0 ; i<16 ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i<context_numBits ; i++) {\n context_data_val = (context_data_val << 1) | (value&1);\n if (context_data_position == bitsPerChar-1) {\n context_data_position = 0;\n context_data.push(getCharFromInt(context_data_val));\n context_data_val = 0;\n } else {\n context_data_position++;\n }\n value = value >> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\n} else if( typeof angular !== 'undefined' && angular != null ) {\n angular.module('LZString', [])\n .factory('LZString', function () {\n return LZString;\n });\n}\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","var map = {\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 13153;","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @module app/config\n */\n\nimport type {NetxThemeStyles} from '@netx/core-components/Theme/types';\n\nexport default {\n\tCSS_CUSTOM_PROPERTY_PREFIX: '--theme-',\n\tCSS_CUSTOM_PROPERTIES: {\n\t\t'light-primary': '#327FEF',\n\t\t'light-on-primary': '#ffffff',\n\n\t\t'light-secondary': '#327FEF',\n\t\t'light-on-secondary': '#ffffff',\n\n\t\t'dark-primary': '#327FEF',\n\t\t'dark-on-primary': '#eee',\n\n\t\t'dark-secondary': '#327FEF',\n\t\t'dark-on-secondary': '#eee',\n\t} as NetxThemeStyles,\n\tDEFAULT_THEME_MODE: 'light',\n\n\t/**\n\t * The standard date format that all API calls should return\n\t * WARNING: Not all dates have been corrected on the server\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tDATE_FORMAT: 'YYYY-MM-DD HH:mm:ss.SSS',\n\n\t// /**\n\t// * The DAM (server) version this client instance requires,\n\t// * specified in the format of 'semver' -- https://github.com/npm/node-semver\n\t// * @const\n\t// * @type {string}\n\t// * @default\n\t// */\n\t// REQUIRED_SERVER_VERSION: '>=8.12.x', // at least version 8.12\n\t/**\n\t * CSS id of application wrapper\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tCONTAINER_ID: 'wrapper',\n\t/**\n\t * CSS id of login container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tLOGIN_CONTAINER_ID: 'login',\n\t/**\n\t * CSS id of alert container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tALERT_CONTAINER_ID: 'alerts',\n\t/**\n\t * CSS id of gallery container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tGALLERY_CONTAINER_ID: 'gallery',\n\t/**\n\t * CSS id of tack container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tTACK_CONTAINER_ID: 'tack',\n\t/**\n\t * CSS id of header container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tHEADER_CONTAINER_ID: 'header',\n\t/**\n\t * CSS id of modal container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tMODAL_CONTAINER_ID: 'modal',\n\n\t/**\n\t * Interval used for polling in milliseconds\n\t * @const\n\t * @type {number}\n\t * @default\n\t */\n\tPOLL_INTERVAL: 5000,\n\t/**\n\t * Length of time passive alert will display before fade out\n\t * @const\n\t * @type {number}\n\t * @default\n\t */\n\tPASSIVE_ALERT_DELAY: 1000,\n};\n","import Config from 'netxcore@netx/core-app/config';\n\nObject.assign(Config, {\n\tCSS_CUSTOM_PROPERTY_PREFIX: '--mdc-theme-',\n\tCSS_CUSTOM_PROPERTIES: {\n\t\t'light-primary': '#cccccc',\n\t\t'light-on-primary': '#ffffff',\n\n\t\t'light-secondary': '#cccccc',\n\t\t'light-on-secondary': '#ffffff',\n\n\t\t'dark-primary': '#cccccc',\n\t\t'dark-on-primary': '#ffffff',\n\n\t\t'dark-secondary': '#cccccc',\n\t\t'dark-on-secondary': '#ffffff',\n\t},\n\tPASSIVE_ALERT_DELAY: 3000,\n});\n\nexport default Config;\n","/**\n * Assets Collection\n *\n * Much of the DAM API operates on sets of assets. This Assets collection is home to many of those API methods,\n * and all other asset collection classes inherit from this one.\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/asset';\nimport _ from 'underscore';\nimport {getPrefixedLogger} from '@netx/core-next/instance/logger';\nimport PagerModel from '@netx/core-app/models/pager';\nimport AssetSetModel from '../models/assetSet';\nimport CategoryModel from '@netx/core-category/models/category';\nimport SearchRulesCollection from '@netx/core-search/collections/searchRules_assets';\n\nimport {types as assetSetTypes} from '../properties/assetSets';\nimport customConfig from '../config';\n\nimport {\n\tfacetSupports,\n\tsearchProperties,\n\tsystemFacets,\n} from '@netx/core-search/properties/search';\nimport {escapeURI} from '@netx/core/utils/escapeURI';\nimport {unescapeURI} from '@netx/core/utils/unescapeURI';\n\nconst logger = getPrefixedLogger('collections/assets');\n\nexport default class Assets extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * this.fetchSpecificMethod defines the API call for fetching specific asset objects of this type; it will be overridden in Netx.Collections.MiniAssets\n\t * @type {string}\n\t * @default\n\t */\n\tget fetchSpecificMethod() {\n\t\treturn 'getAssetObjects';\n\t}\n\n\t/**\n\t * The following RPC methods cause the DAM to operate on the assets described in the collection.\n\t * All manipulation takes place in the DAM; the browser does not directly manipulate image\n\t * data, files or the database.\n\t * @rpcs\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tread(opts) {\n\t\t\t\tthis.setStartPosition();\n\n\t\t\t\t// An empty search was sent\n\t\t\t\tif (!this.selection.length) {\n\t\t\t\t\tthis.pager.set({\n\t\t\t\t\t\titemTotal: 0,\n\t\t\t\t\t});\n\t\t\t\t\treturn new $.Deferred().resolve([]);\n\t\t\t\t}\n\n\t\t\t\tconst search = this.selection.createSearchObject();\n\n\t\t\t\t// Configure paging:\n\t\t\t\t// if chunk-fetch is requested, use chunk logic to determine the start & length.\n\t\t\t\tif (opts.chunk) {\n\t\t\t\t\tthis._startPosition = opts.refetch\n\t\t\t\t\t\t? this.selection.startPosition\n\t\t\t\t\t\t: this.selection.startPosition + this.length;\n\t\t\t\t\tthis._maxItems = opts.refetch\n\t\t\t\t\t\t? this.length + this.chunkSize\n\t\t\t\t\t\t: this.selection.maxItems;\n\t\t\t\t}\n\t\t\t\t// Otherwise use the standard values.\n\t\t\t\telse {\n\t\t\t\t\tthis._startPosition = this.selection.startPosition;\n\t\t\t\t\tthis._maxItems = this.selection.maxItems;\n\t\t\t\t}\n\n\t\t\t\tif (this.useFacetedSearch()) {\n\t\t\t\t\t// Faceted\n\t\t\t\t\tthis._filterMode = this.selection.searchFacets.filterMode;\n\t\t\t\t\treturn [\n\t\t\t\t\t\t_.contains(search.elementTypes, 200)\n\t\t\t\t\t\t\t? 'searchAssetsByAttributeHistory'\n\t\t\t\t\t\t\t: 'facetedSearch',\n\t\t\t\t\t\tsearch.sortField,\n\t\t\t\t\t\tsearch.sortOrder,\n\t\t\t\t\t\tsearch.matchCriteria,\n\t\t\t\t\t\tsearch.elementTypes,\n\t\t\t\t\t\tsearch.elementSubType1s,\n\t\t\t\t\t\tsearch.elementSubType2s,\n\t\t\t\t\t\tsearch.elementValue1s,\n\t\t\t\t\t\tsearch.elementValue2s,\n\t\t\t\t\t\tsearch.elementValue3s,\n\t\t\t\t\t\tthis._startPosition,\n\t\t\t\t\t\tthis._maxItems,\n\t\t\t\t\t\tthis.selection.searchFacets.selectedValues(),\n\t\t\t\t\t\tthis._filterMode,\n\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\t// Default\n\t\t\t\t\treturn [\n\t\t\t\t\t\t'searchAssetObjects',\n\t\t\t\t\t\tsearch.sortField,\n\t\t\t\t\t\tsearch.sortOrder,\n\t\t\t\t\t\tsearch.matchCriteria,\n\t\t\t\t\t\tsearch.elementTypes,\n\t\t\t\t\t\tsearch.elementSubType1s,\n\t\t\t\t\t\tsearch.elementSubType2s,\n\t\t\t\t\t\tsearch.elementValue1s,\n\t\t\t\t\t\tsearch.elementValue2s,\n\t\t\t\t\t\tsearch.elementValue3s,\n\t\t\t\t\t\tsearch.saveSearch,\n\t\t\t\t\t\tsearch.notifyType,\n\t\t\t\t\t\tsearch.ignoreStat,\n\t\t\t\t\t\tthis._startPosition,\n\t\t\t\t\t\tthis._maxItems,\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Given an array of ids, fetch the full asset beans\n\t\t\t * @method\n\t\t\t */\n\t\t\tfetchSpecificAssets(assetIds, opts) {\n\t\t\t\treturn [this.fetchSpecificMethod, assetIds];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Soon this will go away as we will get `size` on all our calls\n\t\t\t * @method\n\t\t\t */\n\t\t\tfetchAssetCount(opts) {\n\t\t\t\t// Cleared in parser\n\t\t\t\tthis.fetchingAssetCount = true;\n\n\t\t\t\tconst search = this.selection.createSearchObject();\n\t\t\t\treturn [\n\t\t\t\t\t'searchAssetListLength',\n\t\t\t\t\tsearch.sortField,\n\t\t\t\t\tsearch.sortOrder,\n\t\t\t\t\tsearch.matchCriteria,\n\t\t\t\t\tsearch.elementTypes,\n\t\t\t\t\tsearch.elementSubType1s,\n\t\t\t\t\tsearch.elementSubType2s,\n\t\t\t\t\tsearch.elementValue1s,\n\t\t\t\t\tsearch.elementValue2s,\n\t\t\t\t\tsearch.elementValue3s,\n\t\t\t\t\tsearch.saveSearch,\n\t\t\t\t\tsearch.notifyType,\n\t\t\t\t\tsearch.ignoreStat,\n\t\t\t\t];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Rather than get full asset beans from a search, just fetch the asset ids\n\t\t\t * @method\n\t\t\t */\n\t\t\tgetAssetIds(opts) {\n\t\t\t\tconst search = this.selection.createSearchObject();\n\t\t\t\treturn [\n\t\t\t\t\t'searchAssetData',\n\t\t\t\t\tsearch.sortField,\n\t\t\t\t\tsearch.sortOrder,\n\t\t\t\t\tsearch.matchCriteria,\n\t\t\t\t\tsearch.elementTypes,\n\t\t\t\t\tsearch.elementSubType1s,\n\t\t\t\t\tsearch.elementSubType2s,\n\t\t\t\t\tsearch.elementValue1s,\n\t\t\t\t\tsearch.elementValue2s,\n\t\t\t\t\tsearch.elementValue3s,\n\t\t\t\t\tsearch.saveSearch,\n\t\t\t\t\tsearch.notifyType,\n\t\t\t\t\tsearch.ignoreStat,\n\t\t\t\t\t// Start at the first one and get eeeeeeeverything\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Essentially the same as calling fetchSpecificAssets, only the parser will not set it on this\n\t\t\t * It is to fetch assets on the fly by id without affecting the collection\n\t\t\t * @method\n\t\t\t * @deprecated\n\t\t\t */\n\t\t\t// Appears unused.\n\t\t\tgetAssetObjects() {\n\t\t\t\tconsole.warn('assets.getAssetObjects() deprecated, gone in 8.13');\n\t\t\t\treturn ['getAssetObjects', 'getAssetObjectIds'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * getMostViewedAssets(): like fetch(), but this fetches a set of assets from the DAM that cannot yet be obtained by searchAssetListObjects()\n\t\t\t * @method\n\t\t\t */\n\t\t\tgetMostViewedAssets() {\n\t\t\t\treturn ['getMostViewedAssets', customConfig.MOST_VIEWED_SIZE];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * getRecentlyUploadedAssets(): like fetch(), but this fetches a set of assets from the DAM that cannot yet be obtained by searchAssetListObjects()\n\t\t\t * @method\n\t\t\t */\n\t\t\tgetRecentlyUploadedAssets() {\n\t\t\t\treturn [\n\t\t\t\t\t'getRecentlyUploadedAssets',\n\t\t\t\t\tcustomConfig.RECENTLY_UPLOADED_SIZE,\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * createPDF(): generate a PDF of assets on the DAM, and prepare it for download/share.\n\t\t\t * @method\n\t\t\t * @deprecated\n\t\t\t */\n\t\t\tcreatePDF(opts) {\n\t\t\t\tconsole.warn('assets.createPDF deprecated, gone in 8.12!'); // the share controller does this a whole different way now.\n\t\t\t\tconst search = this.selection.createSearchObject();\n\t\t\t\tconst pdf = this.pdf;\n\t\t\t\treturn [\n\t\t\t\t\t'createPDFFromSearch',\n\t\t\t\t\tsearch.sortField,\n\t\t\t\t\tsearch.sortOrder,\n\t\t\t\t\tsearch.matchCriteria,\n\t\t\t\t\tsearch.elementTypes,\n\t\t\t\t\tsearch.elementSubType1s,\n\t\t\t\t\tsearch.elementSubType2s,\n\t\t\t\t\tsearch.elementValue1s,\n\t\t\t\t\tsearch.elementValue2s,\n\t\t\t\t\tsearch.elementValue3s,\n\t\t\t\t\tpdf.templateName,\n\t\t\t\t\tpdf.titleStr,\n\t\t\t\t\tpdf.hiRes,\n\t\t\t\t\tpdf.pdfExportPreset,\n\t\t\t\t];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * createPDFWithOptions(): like createPDF() but with more options.\n\t\t\t * @method\n\t\t\t * @deprecated\n\t\t\t */\n\t\t\tcreatePDFWithOptions(opts) {\n\t\t\t\tconsole.warn('assets.createPDFWithOptions deprecated, gone in 8.12!');\n\t\t\t\tconst cpwo = this.cpwo;\n\t\t\t\treturn [\n\t\t\t\t\t'createPDFWithOptions',\n\t\t\t\t\t// the share controller does this a whole different way now.\n\t\t\t\t\tthis.ids(),\n\t\t\t\t\tcpwo.sortField,\n\t\t\t\t\tcpwo.portrait,\n\t\t\t\t\tcpwo.cols,\n\t\t\t\t\tcpwo.rows,\n\t\t\t\t\tcpwo.attrNames,\n\t\t\t\t\tcpwo.attrLines,\n\t\t\t\t\tcpwo.highRes,\n\t\t\t\t\tcpwo.templateName,\n\t\t\t\t\tcpwo.titleStr,\n\t\t\t\t\tcpwo.pdfExportPreset,\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Add/move cart assets to category\n\t\t\t * @method\n\t\t\t */\n\t\t\tcategorize(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'batchCategorizeAssets',\n\t\t\t\t\tthis.ids(),\n\t\t\t\t\tthis.categorizeArgs.targetCat,\n\t\t\t\t\tthis.categorizeArgs.action,\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Move cart assets to category\n\t\t\t * @method\n\t\t\t */\n\t\t\tmoveToCategory(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'batchCategorizeAssets',\n\t\t\t\t\tthis.ids(),\n\t\t\t\t\tthis.categorizeArgs.targetCat,\n\t\t\t\t\tthis.categorizeArgs.move,\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * addToCategory() and removeFromCategory(): perform these category operations on every asset in our collection.\n\t\t\t * (The collection must be fetched first.)\n\t\t\t */\n\t\t\t/**\n\t\t\t * addToCategory(): add to a specified category every asset in our collection\n\t\t\t * @method\n\t\t\t */\n\t\t\t_addToCategory(opts) {\n\t\t\t\tconst cid = this.get('categoryid');\n\t\t\t\treturn ['setAssetCategoryLinks', this.ids(), this.targetCategory, true];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * removeFromCategory(): remove from specified category every asset in our collection\n\t\t\t * @method\n\t\t\t */\n\t\t\tremoveFromCategory(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'batchCategorizeAssets',\n\t\t\t\t\tthis.ids(),\n\t\t\t\t\tthis.targetCategory,\n\t\t\t\t\t'remove',\n\t\t\t\t];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * moveToCategory(): move to a specified category every asset in our collection\n\t\t\t * @method\n\t\t\t */\n\t\t\t_moveToCategory(opts) {\n\t\t\t\tconst cid = this.get('categoryid');\n\t\t\t\treturn [\n\t\t\t\t\t'setAssetCategoryLinks',\n\t\t\t\t\tthis.ids(),\n\t\t\t\t\tthis.targetCategory,\n\t\t\t\t\tfalse,\n\t\t\t\t];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * reserve() reserves assetIDs from the DAM, and creates asset models for those IDs that can later be imported.\n\t\t\t * Used by the asset import logic of the upload module.\n\t\t\t * @method\n\t\t\t * @todo: I still find this screwy. An asset that has a reserved ID ought to have an import() method too.\n\t\t\t * Or else this reserve method should live where the rest of the import logic lives. Like,\n\t\t\t * a subclass of Netx.Models.Upload called Netx.Models.Import that handles all that stuff?\n\t\t\t */\n\t\t\treserve: ['reserveAssetIds', 'reserveCount'],\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} result Result\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(result, opts) {\n\t\t\t\t// Did we fetch faceted, or normal?\n\t\t\t\tconst facetedResult = this.useFacetedSearch();\n\t\t\t\tlet assets = result.results || result;\n\n\t\t\t\t// DAM-15036 - Omit any assets without valid assetIds\n\t\t\t\tassets = _.filter(assets, (a) => {\n\t\t\t\t\tif (!a.assetId) {\n\t\t\t\t\t\tlogger.warn('server returned a bogus asset');\n\t\t\t\t\t}\n\t\t\t\t\treturn a.assetId;\n\t\t\t\t});\n\n\t\t\t\t// Check length of results; did we reach the end yet?\n\t\t\t\tif (assets.length > this.chunkSize) {\n\t\t\t\t\tassets.pop();\n\t\t\t\t\tthis.lastChunk = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.lastChunk = true;\n\t\t\t\t}\n\n\t\t\t\t// Don't remove existing assets if we are doing a chunk fetch.\n\t\t\t\t// (This options object will be passed to set.)\n\t\t\t\topts.remove = !opts.chunk;\n\n\t\t\t\tif (facetedResult) {\n\t\t\t\t\tconst systemFacetLabels = systemFacets;\n\t\t\t\t\tconst facets = _.map(result.facets, (facet) =>\n\t\t\t\t\t\t_.extend(facet, {\n\t\t\t\t\t\t\ttitle: systemFacetLabels[facet.label] || facet.label,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\n\t\t\t\t\t// Only return facets that have options with a count\n\t\t\t\t\tthis.selection.searchFacets.set(facets);\n\t\t\t\t\tthis.selection.searchFacets.itemTotal = result.size;\n\n\t\t\t\t\tthis.pager.set({\n\t\t\t\t\t\titemTotal: result.size,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn assets;\n\t\t\t},\n\t\t\t/**\n\t\t\t * fetchSpecificAssets returns an array of asset beans\n\t\t\t * @method\n\t\t\t * @param {array} assets\n\t\t\t */\n\t\t\tfetchSpecificAssets(assets, assetIds, opts) {\n\t\t\t\t// Omit any assets without valid assetIds\n\t\t\t\tthis.set(\n\t\t\t\t\t_.filter(assets, (asset) => asset.assetId),\n\t\t\t\t\topts,\n\t\t\t\t);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * fetchAssetCount returns simply a count (will one day be usurped by the `size` paramater)\n\t\t\t * @method\n\t\t\t * @param {number}\n\t\t\t */\n\t\t\tfetchAssetCount(count, opts) {\n\t\t\t\tif (count == null) {\n\t\t\t\t\tthrow new Error('bad return value from getAssetCount');\n\t\t\t\t}\n\t\t\t\tthis.pager.set({\n\t\t\t\t\titemTotal: count,\n\t\t\t\t});\n\n\t\t\t\t// Clear up this flag\n\t\t\t\tdelete this.fetchingAssetCount;\n\t\t\t},\n\t\t\t/**\n\t\t\t * Sets assetIds property and returns the array of assetIds\n\t\t\t * @param {array} assetIds Array of assetIds contained in collection\n\t\t\t * @return {array} Array of assetIds contained in collection\n\t\t\t */\n\t\t\tgetAssetIds(assetIds) {\n\t\t\t\tthis.assetIds = assetIds;\n\t\t\t\treturn assetIds;\n\t\t\t},\n\t\t\t/**\n\t\t\t * getMostViewedAssets returns an array of asset beans\n\t\t\t * @method\n\t\t\t * @param {array} assets\n\t\t\t * @todo Any reason why we are using reset instead of set - I know reset is faster but bypasses all add/remove/merge events\n\t\t\t */\n\t\t\tgetMostViewedAssets(assets) {\n\t\t\t\tthis.reset(assets);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * getRecentlyUploadedAssets returns an array of asset beans\n\t\t\t * @method\n\t\t\t * @param {array} assets\n\t\t\t * @todo Any reason why we are using reset instead of set - I know reset is faster but bypasses all add/remove/merge events\n\t\t\t */\n\t\t\tgetRecentlyUploadedAssets(assets) {\n\t\t\t\tthis.reset(assets);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Provided a count of new assets, reserve returns an array of asset ids that have been reserved for our new assets\n\t\t\t * @param {array} ids\n\t\t\t */\n\t\t\treserve(ids, opts) {\n\t\t\t\tids.forEach((id, idx, all) => {\n\t\t\t\t\tthis.add(\n\t\t\t\t\t\tnew Model({\n\t\t\t\t\t\t\tassetId: id,\n\t\t\t\t\t\t\tinCurrentCart: false,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\t// This is related to a circular reference somewhere\n\t\t// Anytime you find that a require at the top results in an empty object - this is why\n\t\t// https://stackoverflow.com/questions/37127083/can-two-files-have-each-other-as-dependencies-in-javascript-when-using-webpack\n\t\t//Model = '../models/asset');\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * When getAssetIds() is called this property is updated with an array of all asset ids in the collection\n\t\t * @memberof Netx.Collections.Assets\n\t\t * @alias assetIds\n\t\t * @type {array}\n\t\t */\n\t\tthis.assetIds = opts.assetIds || [];\n\n\t\t/**\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.chunkSize = parseInt(opts.chunkSize) || customConfig.CHUNK_SIZE;\n\n\t\t/**\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.curPage = opts.curPage || 0;\n\n\t\t// An Assets collection can manage paged fetching of its assets. If the value 'chunkSize' is smaller than the value 'pageSize',\n\t\t// chunk loading is enabled.\n\t\t// TODO: use a Netx.Models.Pager here.\n\t\t/**\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.pageSize = parseInt(opts.pageSize) || customConfig.PAGE_SIZE;\n\n\t\t/**\n\t\t * @type {string}\n\t\t * @default\n\t\t */\n\t\tthis.routeContext = opts.routeContext || '';\n\n\t\t/**\n\t\t * For reserve\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.reserveCount = 0;\n\n\t\t/**\n\t\t * This will contain a SearchRules collection to describe the set of assets this collection will fetch.\n\t\t * @memberof Netx.Collections.Assets\n\t\t * @alias selection\n\t\t * @type {Netx.Collections.SearchRules}\n\t\t */\n\t\tthis.selection = opts.selection || new SearchRulesCollection();\n\t\tthis.addSubCollection(this.selection);\n\t\tdelete opts.selection;\n\n\t\t// We have this problem that a sort runs whenever a model changes - even if the change does not require a sort (for example: inCurrentCart)\n\t\tthis.sortableChange = true; //false;\n\n\t\tthis.pager = new PagerModel(\n\t\t\t{\n\t\t\t\tpageSize: this.pageSize,\n\t\t\t\tpagesToDisplay: 10,\n\t\t\t\t// I would really like to just do !( opts.pagerRoutes ) but lint yells about confusing use of `!`\n\t\t\t\troutesToPage: opts.pagerRoutes === false ? false : true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tcollection: this,\n\t\t\t},\n\t\t);\n\t\tthis.addSubModel(this.pager);\n\n\t\t/**\n\t\t * (because we can't pass strings directly in backbone.rpc method defs)\n\t\t * (because ... backbone.rpc!)\n\t\t * @property {object} categorizeArgs - Arguments for the batchCategorizeAssets rpc call\n\t\t * @property {string} categorizeArgs.add - Because RPC\n\t\t * @property {string} categorizeArgs.move - Because RPC\n\t\t * @property {string} categorizeArgs.remove - Because RPC\n\t\t * @property {number} categorizeArgs.targetCat - Category id\n\t\t * @property {string} categorizeArgs.action - Action to take (\"Add\", \"Move\", \"Remove\")\n\t\t */\n\t\tthis.categorizeArgs = {\n\t\t\tadd: 'add',\n\t\t\tmove: 'move',\n\t\t\tremove: 'remove',\n\t\t\ttargetCat: 0,\n\t\t\taction: '',\n\t\t};\n\n\t\t// TODO: Maybe SearchRules should manage this, aggregating these events into some sort of 'rulesChanged' event.\n\t\t// Or mabye Netx.Collection should do that generically.\n\n\t\t// Sometimes we fetch in 'faceted search' mode.\n\t\tconst useFS =\n\t\t\topts.useFacetedSearch != null\n\t\t\t\t? opts.useFacetedSearch === true\n\t\t\t\t: customConfig.USE_FACETED_SEARCH;\n\t\tconst fsOpts = opts.facetedSearchOptions || {};\n\t\tthis.useFacetedSearch(useFS, fsOpts);\n\n\t\t// Find & use any selection params set in options\n\t\tif (!_.isEmpty(opts)) {\n\t\t\t// are any of the options searchRule attributes?\n\t\t\t_.each(this.selection.at(0).keys(), (p) => {\n\t\t\t\tif (!opts[p]) return;\n\n\t\t\t\tif (_.isArray[p]) {\n\t\t\t\t\t// TODO: make this work for multidimensional options (more than one search rule specified) ?\n\t\t\t\t} else {\n\t\t\t\t\tthis.selection.at(0).set(p, opts[p]);\n\t\t\t\t}\n\t\t\t});\n\t\t\t// are any of the options searchRules properties?\n\t\t\t_.each(searchProperties, (p) => {\n\t\t\t\tif (opts[p] == null) return;\n\n\t\t\t\tthis.selection[p] = opts[p];\n\t\t\t});\n\t\t\t// are we attempting to set maxItems, which is not allowed in this context?\n\t\t\tif (opts.maxItems != null) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'Error: attempting to set maxItems in search rules collection, but it will be ignored. Set pageSize or chunkSize on asset collection instead.',\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\t// this.chunkSize is used for fetching a subset of a page, for endless scroll & such.\n\t\t// allow chunkSize to change.\n\t\t//\n\t\tthis.fetch = _.wrap(this.fetch, (origFetch, opts) => {\n\t\t\tif (this.chunkSize) {\n\t\t\t\tthis.selection.maxItems = this.chunkSize + 1;\n\t\t\t}\n\t\t\treturn origFetch.call(this, opts);\n\t\t});\n\n\t\t// For fetching assets on the fly without affecting this collection\n\t\tthis.getAssetObjectIds = [];\n\n\t\t// When our selection changes, our contents are no longer valid\n\t\tconst invalidate = () => {\n\t\t\tthis.stopListening(this, 'useFaceted');\n\n\t\t\tdelete this.fetchingAssetCount;\n\t\t\tif (this.length) {\n\t\t\t\t// clear out our contents, so subsequent fetch() runs faster.\n\t\t\t\tthis.reset();\n\t\t\t}\n\t\t};\n\n\t\t// Hey, listen!\n\t\tthis\n\t\t\t// We have an extra fetch method that needs to simulate standard fetch events:\n\t\t\t.listenTo(\n\t\t\t\tthis,\n\t\t\t\t'request:fetchSpecificAssets',\n\t\t\t\t(collection, xhr, opts) => {\n\t\t\t\t\tif (!opts.silent) {\n\t\t\t\t\t\tthis.trigger('request:read', this, xhr, opts);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t)\n\t\t\t.listenTo(\n\t\t\t\tthis,\n\t\t\t\t'complete:fetchSpecificAssets',\n\t\t\t\t(collection, result, opts) => {\n\t\t\t\t\tif (!opts.silent) {\n\t\t\t\t\t\tthis.trigger('sync', this, this.models, opts);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t)\n\t\t\t// When a faceted search happens, this.selection.searchFacets wants to mirror our fetch events:\n\t\t\t.listenTo(this, 'request:read', (collection, xhr, opts) => {\n\t\t\t\topts = opts || {};\n\t\t\t\tif (!opts.silent && this.useFacetedSearch()) {\n\t\t\t\t\tthis.selection.searchFacets.trigger(\n\t\t\t\t\t\t'request:read',\n\t\t\t\t\t\tthis.selection.searchFacets,\n\t\t\t\t\t\txhr,\n\t\t\t\t\t\topts,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t// When we sync listen for change in using faceted\n\t\t\t.listenTo(this, 'sync', (collection, result, opts) => {\n\t\t\t\tthis.stopListening(this, 'useFaceted');\n\t\t\t\tthis.listenTo(\n\t\t\t\t\tthis,\n\t\t\t\t\t'useFaceted',\n\t\t\t\t\t_.throttle((state) => {\n\t\t\t\t\t\tthis.fetch();\n\t\t\t\t\t}, 150),\n\t\t\t\t);\n\t\t\t\t// If so instructed, cache our selection after a successful sync.\n\t\t\t\t// (This allows Netx.assets.cursor to explore the same set of assets.)\n\t\t\t\tif (opts.cacheSelection) {\n\t\t\t\t\tdispatcher.trigger('asset:cursor:cacheFetch', this);\n\t\t\t\t}\n\t\t\t\tif (!opts.silent && this.useFacetedSearch()) {\n\t\t\t\t\tthis.selection.searchFacets.trigger(\n\t\t\t\t\t\t'sync',\n\t\t\t\t\t\tthis.selection.searchFacets,\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\topts,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Always trigger a 'counted' event when this.pager.itemTotal changes to a defined value,\n\t\t\t// or a 'countUnknown' event when we no longer have a correct value.\n\t\t\t.listenTo(this.pager, 'change:itemTotal', (m, count) => {\n\t\t\t\tcount != null\n\t\t\t\t\t? this.trigger('counted', count)\n\t\t\t\t\t: this.trigger('countUnknown');\n\t\t\t})\n\t\t\t// We will get multiple events here; fire on just the first event\n\t\t\t.listenTo(\n\t\t\t\tthis.selection,\n\t\t\t\t'change add remove reset',\n\t\t\t\t_.throttle(invalidate, 250, {trailing: false}),\n\t\t\t)\n\t\t\t// Keep up with destruction\n\t\t\t.listenTo(this, 'destroy', (model, collection, opts) => {\n\t\t\t\t//Object {remove: true, add: true, merge: true, index: 0}\n\t\t\t\tlet count = this.pager.get('itemTotal');\n\t\t\t\tif (!count || isNaN(count)) count = 0;\n\t\t\t\tif (count) count--;\n\t\t\t\tthis.pager.set('itemTotal', count);\n\t\t\t})\n\t\t\t// Remove deleted assets\n\t\t\t.listenTo(dispatcher, 'asset:deleted', (assetId) => {\n\t\t\t\tthis.get(assetId) && this.remove(assetId);\n\t\t\t})\n\t\t\t// Listen for removal from category (if this happens to be a category asset collection)\n\t\t\t.listenTo(dispatcher, 'asset:moved:to:category', (assetId, newCat) => {\n\t\t\t\tif (!this.categoryId) return;\n\t\t\t\tlet asset = this.get(assetId);\n\t\t\t\tif (asset && newCat !== this.categoryId) {\n\t\t\t\t\tthis.remove(assetId);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:editor:edited smartLabels:updated',\n\t\t\t\t(assetId) => {\n\t\t\t\t\tif (!this.get(assetId)) return;\n\t\t\t\t\tthis.reFetch({});\n\t\t\t\t},\n\t\t\t)\n\t\t\t// Listen for sort events\n\t\t\t.listenTo(dispatcher, 'user:sort', this.setSort);\n\t}\n\n\t/**\n\t * assetCount() returns an asset count, if the count is known. If the count isn't know,\n\t * it returns undefined and triggers an asset count call to the DAM. When the count is known,\n\t * 'counted' will be triggered on the collection with the correct count as an argument.\n\t *\n\t * Views that wish to display a count should call assetCount(), and listen for the 'counted' event.\n\t * @method\n\t * @return {number|undefined} Asset count\n\t */\n\tassetCount() {\n\t\tif (this.useFacetedSearch()) {\n\t\t\tif (!this.pager.get('itemTotal') && this.length) {\n\t\t\t\tthis.pager.set('itemTotal', this.selection.searchFacets.itemTotal || 0);\n\t\t\t}\n\t\t\treturn this.pager.get('itemTotal');\n\t\t}\n\n\t\t// Fixes false '0' occurences\n\t\tif (\n\t\t\tthis.pager.has('itemTotal') &&\n\t\t\tthis.pager.get('itemTotal') >= this.length\n\t\t) {\n\t\t\treturn this.pager.get('itemTotal');\n\t\t}\n\n\t\tif (this.fetchingAssetCount || this.length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tthis.pager.set('itemTotal', 0);\n\t\treturn 0;\n\t}\n\n\t/**\n\t * Destroy all assets in this collection -- here and on the server.\n\t * @method\n\t * @fires module:asset#asset:deleted\n\t * @fires module:asset#asset:deleted:error\n\t */\n\tdestroyAll() {\n\t\t// Store for promises\n\t\tconst promises = [];\n\n\t\t// Do not create functions in while loops\n\t\tconst error = (assetId) => {\n\t\t\tdispatcher.trigger('asset:deleted:error', assetId);\n\t\t\tdispatcher.trigger('asset:deleted:error:' + assetId);\n\t\t};\n\t\tconst success = (assetId) => {\n\t\t\tdispatcher.trigger('asset:deleted', assetId);\n\t\t\tdispatcher.trigger('asset:deleted:' + assetId);\n\t\t};\n\n\t\t// Loop over all assets in this collection\n\t\tlet asset;\n\t\twhile (this.length > 0) {\n\t\t\tasset = this.at(0);\n\t\t\tconst aID = asset.get('assetId');\n\t\t\tpromises.push(\n\t\t\t\tasset.destroy().then(_.partial(success, aID), _.partial(error, aID)),\n\t\t\t);\n\t\t}\n\t\t// Wait for all promises to return\n\t\treturn $.when.apply($, promises);\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean}\n\t */\n\tisSortable() {\n\t\t// Cannot sort on cart or custom search types currently\n\t\tvar customSearchType = this.selection.findWhere({elementType: 9});\n\t\treturn _.isUndefined(customSearchType);\n\t}\n\n\t/**\n\t * Re-fetch all assets in collection\n\t * @method\n\t * @param {object} opts Fetch options\n\t */\n\treFetch(opts) {\n\t\t// See the wrapped fetch method in constructor\n\t\tconst hasChunkSize = !!this.chunkSize;\n\n\t\t// Backup values\n\t\tconst oldChunkSize = this.chunkSize;\n\t\tconst oldMaxItems = this.selection.maxItems;\n\n\t\t// Change to the amount of assets we currently have\n\t\thasChunkSize\n\t\t\t? (this.chunkSize = this.length)\n\t\t\t: (this.selection.maxItems = this.length + 1); // start positions begins at 1\n\n\t\treturn this.fetch(opts).always(() => {\n\t\t\t// Restore values\n\t\t\tthis.chunkSize = oldChunkSize;\n\t\t\tthis.selection.maxItems = oldMaxItems;\n\t\t});\n\t}\n\n\t/**\n\t * Respond to sort events\n\t * @method\n\t * @param {string} sortField Field to sort by\n\t * @param {number} sortOrder Sort direction ( 0/1 )\n\t */\n\tsetSort(sortField, sortOrder) {\n\t\tthis.selection.sortField = sortField;\n\t\tthis.selection.sortOrder = sortOrder;\n\t\tthis.trigger('sortChanged', this);\n\t}\n\n\t/**\n\t * selection start position basec on paging\n\t * @method\n\t * defaults to 1\n\t */\n\tsetStartPosition() {\n\t\tthis.curPage = this.curPage || 1;\n\t\t// otherwise set start position based on page\n\t\tthis.selection.startPosition = this.pageSize * (this.curPage - 1) + 1;\n\t}\n\n\t/**\n\t * Create an AssetSet model describing this set of assets.\n\t * This generic version returns just the current set of assets in this collection at this moment -- ignorant of paging, selection, etc.\n\t * Subclasses (cartAssets, searchAssets, categoryAssets, etc) will override this to return more meaningful asset sets.\n\t * @method\n\t * @return {module:asset/models/assetSet} AssetSet\n\t */\n\ttoAssetSet() {\n\t\treturn new AssetSetModel({\n\t\t\ttype: assetSetTypes.asset,\n\t\t\tids: this.ids(),\n\t\t\tlabel: i18n.t('i18n.nAssets', {count: this.length}),\n\t\t\tmodels: this.models,\n\t\t});\n\t}\n\n\t////////////////////////////////////\n\t// CATEGORIZE\n\t////////////////////////////////////\n\n\t/**\n\t * @method\n\t * @param {number} catId Category id\n\t * @todo DAM-8470, then unwrap this.\n\t */\n\taddToCategory(catId) {\n\t\tconst d = new $.Deferred();\n\t\tconst cat = new CategoryModel({id: catId});\n\t\tcat.fetch().then((c) => {\n\t\t\tconst assetIds = this.ids();\n\t\t\tif (!assetIds.length) {\n\t\t\t\treturn d.reject();\n\t\t\t}\n\n\t\t\tthis.targetCategory = catId;\n\t\t\tthis._addToCategory().then(() => {\n\t\t\t\td.resolve();\n\t\t\t}, d.reject);\n\t\t}, d.reject);\n\t\treturn d.promise();\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} catId Category id\n\t * @todo DAM-8470, then unwrap this.\n\t */\n\tmoveToCategory(catId) {\n\t\tconst d = new $.Deferred();\n\t\tconst cat = new CategoryModel({id: catId});\n\t\tcat.fetch().then((c) => {\n\t\t\tvar assetIds = this.ids();\n\t\t\tif (!assetIds.length) {\n\t\t\t\treturn d.reject();\n\t\t\t}\n\n\t\t\tthis.targetCategory = catId;\n\t\t\tthis._moveToCategory().then(() => {\n\t\t\t\td.resolve();\n\t\t\t}, d.reject);\n\t\t}, d.reject);\n\t\treturn d.promise();\n\t}\n\n\t////////////////////////////////////\n\t// !CATEGORIZE\n\t////////////////////////////////////\n\n\t////////////////////////////////////\n\t// CHUNKS\n\t////////////////////////////////////\n\n\t/**\n\t * For chunked loading of pages, addChunk loads the next not-yet-loaded section of a page.\n\t * @method\n\t * @param {object} opts Chunk fetch options\n\t */\n\taddChunk(opts = {}) {\n\t\tif (\n\t\t\t// Do nothing if we're in the midst of a sync, or if we have no more chunks.\n\t\t\tthis.syncing ||\n\t\t\tthis.lastChunk ||\n\t\t\tthis.pageSize == this.length ||\n\t\t\tthis.length >= this.pageSize\n\t\t) {\n\t\t\treturn new $.Deferred().resolve();\n\t\t}\n\n\t\tconst lengthBefore = this.length;\n\t\t// disable the 'loading' class/div behaviour when loading a chunk\n\t\topts.chunk = this.loadingChunk = true;\n\n\t\treturn this.fetch(opts).then(() => {\n\t\t\t// if we didn't get anything new?\n\t\t\tif (this.length == lengthBefore && !this.lastChunk) {\n\t\t\t\t// Out-of-order fetches can occur, leading to a deadly chunk loop.\n\t\t\t\t// Clean that up by re-fetching the entire page so far.\n\t\t\t\topts.refetch = true;\n\t\t\t\treturn this.fetch(opts).then((response) => {\n\t\t\t\t\tdelete this.loadingChunk;\n\t\t\t\t\treturn this;\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdelete this.loadingChunk;\n\t\t\treturn this;\n\t\t});\n\t}\n\n\t////////////////////////////////////\n\t// !CHUNKS\n\t////////////////////////////////////\n\n\t////////////////////////////////////\n\t// FACETS\n\t////////////////////////////////////\n\n\t/**\n\t * This checks that there are no invalid facet search types in our search rules\\\n\t * @method\n\t * @return {boolean} Valid\n\t */\n\tcheckValidFacetSearchType() {\n\t\tlet valid = true;\n\t\tthis.selection.each((m) => {\n\t\t\tif (valid && _.indexOf(facetSupports, m.get('elementType')) < 0) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\t\t});\n\n\t\treturn valid;\n\t}\n\n\t/**\n\t * When an option is selected or deselected in our search facets, this function is called.\n\t * By default it triggers a fetch. Override it for different behavior.\n\t * @method\n\t * @param {Netx.Models.SearchFacet} model SearchFacet model that changed\n\t * @param {object} opts Options\n\t */\n\tfacetSelected(model, collection, opts) {\n\t\t// Reset start position to 1\n\t\tthis.selection.startPosition = 1;\n\t\tthis.pager.gotoPage(1, true);\n\t\tthis.fetch(_.extend({}, opts, {duplicateQueryPolicy: 'abort'}));\n\t}\n\n\t/**\n\t * calling this.useFacetedSearch() with a boolean sets faceted search mode on or off,\n\t * and returns the state.\n\t * Calling it with no arguments just returns the state.\n\t * @method\n\t * @param {boolean} state true (on) or false (off)\n\t * @param {object} opts options to set on the searchFacets child collection -- such as 'filterMode'\n\t */\n\tuseFacetedSearch(state, opts) {\n\t\t// Check that we are using a valid search type\n\t\tconst validSearchType = this.checkValidFacetSearchType();\n\t\t// Let it set the things it would normally set regardless\n\t\tif (state != null) {\n\t\t\tif (state) {\n\t\t\t\t_.extend(this.selection.searchFacets, opts || {});\n\t\t\t\t// Listen for facet options to change\n\t\t\t\tthis.stopListening(dispatcher, 'search:facet:option:changed').listenTo(\n\t\t\t\t\tdispatcher,\n\t\t\t\t\t'search:facet:option:changed',\n\t\t\t\t\t(model, collection) => {\n\t\t\t\t\t\t// Make sure we're the right collection:\n\t\t\t\t\t\t// added !this.hasRouteContext() because collection !== this.selection.searchFacets\n\t\t\t\t\t\t// results in false for both category and search asset collections\n\t\t\t\t\t\t// are they using the same facet collection? Not seeing ids to compare\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcollection !== this.selection.searchFacets ||\n\t\t\t\t\t\t\t!this.hasRouteContext()\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\treturn;\n\n\t\t\t\t\t\tthis.facetSelected.apply(this, arguments);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.stopListening(dispatcher, 'search:facet:option:changed');\n\t\t\t}\n\n\t\t\tthis._usingFacetedSearch = state;\n\t\t\t// This only matters if they have chosen a valid search type\n\t\t\tif (validSearchType) {\n\t\t\t\tif (!state) this.selection.searchFacets.turnOff();\n\t\t\t\tthis.trigger('useFaceted', state, this);\n\t\t\t} else if (state && !validSearchType) {\n\t\t\t\t// Dispatch something to let the user know that facets have been disabled for this search type\n\t\t\t}\n\t\t}\n\t\t// Not valid\n\t\t// We do it like this so we are not actually turning facets off if a user wished to turn them on\n\t\t// we are just turning them off for this search type but will honor the users wishes to have facets on for\n\t\t// all other valid searches\n\t\telse if (!validSearchType) {\n\t\t\t// Dispatch something to let the user know that facets have been disabled for this search type\n\t\t\tthis.selection.searchFacets.turnOff();\n\t\t\treturn false;\n\t\t}\n\t\t// We made it\n\t\treturn this._usingFacetedSearch;\n\t}\n\t////////////////////////////////////\n\t// !FACETS\n\t////////////////////////////////////\n\n\t////////////////////////////////////\n\t// PAGING\n\t////////////////////////////////////\n\t/**\n\t * Determine if this collection is the one referred to in the route hash\n\t * helpful for search facets, is this the right collection? have we changed contexts?\n\t * should facets be reset or are we paging? Is our context in the location.hash?\n\t * @method\n\t */\n\thasRouteContext() {\n\t\t// Check for unescaped and escaped\n\t\tconst hash = unescapeURI(window.location.hash);\n\t\treturn (\n\t\t\thash.indexOf(unescapeURI(this.routeContext)) > -1 ||\n\t\t\thash.indexOf(escapeURI(this.routeContext)) > -1\n\t\t);\n\t}\n\n\t////////////////////////////////////\n\t// !PAGING\n\t////////////////////////////////////\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Assets';\n\t}\n}\n","import Base from 'netxcore@netx/core-asset/collections/assets';\nimport {isMobile} from '@netx/core-next/utils/browser';\nimport {systemFacets} from '@netx/core-search/properties/search';\nimport {escapeURI} from '@netx/core/utils/escapeURI';\nimport {unescapeURI} from '@netx/core/utils/unescapeURI';\n\n/** @override */\nexport default class Assets extends Base {\n\tget isSyncing() {\n\t\treturn this._rpc && this.syncing;\n\t}\n\t// gross, for now overriding the whole read\n\t// parser to filter and sort facets\n\t/** @override */\n\tget parsers() {\n\t\treturn {\n\t\t\t...super.parsers,\n\t\t\tread(result, opts) {\n\t\t\t\t// Did we fetch faceted, or normal?\n\t\t\t\tconst facetedResult = this.useFacetedSearch();\n\t\t\t\tlet assets = result.results || result;\n\n\t\t\t\t// DAM-15036 - Omit any assets without valid assetIds\n\t\t\t\tassets = _.filter(assets, (a) => {\n\t\t\t\t\tif (!a.assetId) {\n\t\t\t\t\t\tconsole.log('server returned a bogus asset');\n\t\t\t\t\t}\n\t\t\t\t\treturn a.assetId;\n\t\t\t\t});\n\n\t\t\t\t// Check length of results; did we reach the end yet?\n\t\t\t\tif (assets.length > this.chunkSize) {\n\t\t\t\t\tassets.pop();\n\t\t\t\t\tthis.lastChunk = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.lastChunk = true;\n\t\t\t\t}\n\n\t\t\t\t// Don't remove existing assets if we are doing a chunk fetch.\n\t\t\t\t// (This options object will be passed to set.)\n\t\t\t\topts.remove = !opts.chunk;\n\n\t\t\t\tif (facetedResult) {\n\t\t\t\t\tconst portalAttrIds = Netx.attributes.ids();\n\t\t\t\t\tresult.facets = result.facets.filter((facetOb) =>\n\t\t\t\t\t\tportalAttrIds.includes(facetOb.id),\n\t\t\t\t\t);\n\t\t\t\t\tresult.facets.sort(function (a, b) {\n\t\t\t\t\t\treturn portalAttrIds.indexOf(a.id) - portalAttrIds.indexOf(b.id);\n\t\t\t\t\t});\n\n\t\t\t\t\tconst systemFacetLabels = systemFacets;\n\t\t\t\t\tconst facets = _.map(result.facets, (facet) =>\n\t\t\t\t\t\t_.extend(facet, {\n\t\t\t\t\t\t\ttitle: systemFacetLabels[facet.label] || facet.label,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\n\t\t\t\t\t// Only return facets that have options with a count\n\t\t\t\t\tthis.selection.searchFacets.set(facets);\n\t\t\t\t\tthis.selection.searchFacets.itemTotal = result.size;\n\n\t\t\t\t\tthis.pager.set({\n\t\t\t\t\t\titemTotal: result.size,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn assets;\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\tsuper(models, opts);\n\n\t\t// DAM-19030 - there's gotta be a better way, but for now...\n\t\tif (isMobile(false, 601)) {\n\t\t\tthis.pager.set({pagesToDisplay: 6});\n\t\t}\n\n\t\t// parse method?\n\t\tthis.on('sync', (result, options) => {\n\t\t\tdispatcher.trigger('search:facet:onOff', this);\n\t\t});\n\t}\n\n\t/**\n\t * Determine if this collection is the one referred to in the route hash\n\t * Overriding to check for routeContext.length, so asset.cursor doesn't fetch with every search\n\t * @override\n\t */\n\thasRouteContext() {\n\t\tconst {hash} = window.location;\n\t\tconst unescapedHash = unescapeURI(window.location.hash);\n\t\tconst routeContext = this.routeContext;\n\t\t// Check for unescaped and escaped\n\t\treturn (\n\t\t\trouteContext.length &&\n\t\t\t// DAM-19489 DAM-19485 - hash with \"cart-assets\" gives a\n\t\t\t// false positives for a routeContext of \"cart\"\n\t\t\t(routeContext !== 'cart' || routeContext === hash) &&\n\t\t\t(unescapedHash.indexOf(unescapeURI(routeContext)) > -1 ||\n\t\t\t\tunescapedHash.indexOf(escapeURI(routeContext)) > -1)\n\t\t);\n\t}\n}\n","// MODULE CONSTANTS\n/////////////////////////\n// Module \"constants\" can be overridden using config.js\n\nexport default {\n\t/**\n\t * items per server fetch in paged assetListViews.\n\t * @const\n\t * @type {number}\n\t * @default\n\t */\n\tCHUNK_SIZE: 40,\n\n\t/**\n\t * max number of items displayed per page in an assetListView; max length of a Netx.Collections.MiniAssets\n\t * @const\n\t * @type {number}\n\t * @default\n\t */\n\tPAGE_SIZE: 200,\n\n\t/**\n\t * Display asset collection thumbnails as equal height images in equal height rows\n\t * @const\n\t * @type {boolean}\n\t * @defaul\n\t */\n\tEQUAL_GRID: true,\n\n\t/**\n\t * AssetListType options\n\t * @const\n\t * @type {array}\n\t * @defaul\n\t */\n\tLIST_TYPE: ['card', 'curator', 'grid', 'list'],\n\n\t/**\n\t * If enabled all asset list views will be managed by Netx.Views.AssetListViewTypeManager epending on the current LIST_TYPE selected\n\t * @const\n\t * @type {boolean}\n\t * @defaul\n\t */\n\tLIST_TYPES_ENABLED: false,\n\n\t/**\n\t * default asset list type if user has no preference stored:\n\t * @const\n\t * @type {array}\n\t * @defaul\n\t */\n\tLIST_TYPE_DEFAULT: 'grid',\n\n\t/**\n\t * id of the DOM element this module installs in\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tASSETS_CONTAINER_ID: 'assets',\n\n\t/**\n\t * id of the DOM element the assetDetailView installs in\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tDETAILS_CONTAINER_ID: 'asset-details',\n\n\t/**\n\t * id of the DOM element the assetVersionsView installs in\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tVERSIONS_CONTAINER_ID: 'asset-versions',\n\n\t/**\n\t * id of the DOM element the assetZoomView installs in\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tZOOM_CONTAINER_ID: 'zoom',\n\n\t/**\n\t * id of the zoom canvas inside the assetZoomView\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tZOOM_CANVAS_ID: 'zoom-canvas',\n\n\t/**\n\t * how many pixels we pan & zoom by, per click.\n\t * @const\n\t * @type {number}\n\t * @default\n\t */\n\tZOOM_SCALE: 20,\n\n\t/**\n\t * How much we zoom on load\n\t * @const\n\t * @type {Number}\n\t * @default\n\t */\n\tZOOM_TOLERANCE: 0.8,\n\n\t/**\n\t * id of the DOM element the document viewer installs in\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tDOCVIEW_CONTAINER_ID: 'docview',\n\n\t/**\n\t * id of the DOM element the assetCheckinView installs in\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tCHECKIN_CONTAINER_ID: 'asset-checkin',\n\n\t/**\n\t * id of the file upload browse button in the assetCheckinView\n\t * @const {string}\n\t * @default\n\t */\n\tCHECKIN_BROWSE_BUTTON_ID: 'asset-checkin-browse',\n\n\t/**\n\t * id of the expiration asset list\n\t * @const {string}\n\t * @default\n\t */\n\tEXPIRATION_ASSET_LIST_ID: 'expiration-assets',\n\n\t/**\n\t * id of the expiration header\n\t * @const {string}\n\t * @default\n\t */\n\tEXPIRATION_HEADER_ID: 'expiration-header',\n\n\t/**\n\t * id the (non-modal) quick-edit panel (aka tag panel) installs in\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tTAGPANEL_CONTAINER_ID: 'quick-edit',\n\n\t/**\n\t * max number of assets to show in the Most Viewed Assets list\n\t * @const\n\t * @type {number}\n\t * @default\n\t */\n\tMOST_VIEWED_SIZE: 40,\n\n\t/**\n\t * ID of the upload button in assetViewsView\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tVIEW_UPLOAD_BUTTON_ID: 'asset-view-upload',\n\n\t/**\n\t * id of the dom element where assetRepurposeView is installed\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tREPURPOSE_CONTAINER_ID: 'asset-repurpose',\n\n\t/**\n\t * Array of the known asset detail tabs; disable a tab by removing it from this list.\n\t * @const\n\t * @type {array}\n\t * @default\n\t */\n\tDETAIL_TABS: [\n\t\t'overview',\n\t\t'preview',\n\t\t'fileinfo',\n\t\t'attributes',\n\t\t'attributeHistory',\n\t\t'views',\n\t\t'reviews',\n\t\t'links',\n\t\t'categories',\n\t\t'clips',\n\t\t'constituents_keyframes',\n\t\t'constituents_layers',\n\t\t'constituents_pages',\n\t\t'versions',\n\t\t'uasge',\n\t\t'index',\n\t\t'metadata',\n\t\t'permissions',\n\t\t'publicLinks',\n\t],\n\n\t/**\n\t * Default tab of assetDetailView to show upon load\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tDETAIL_TABS_DEFAULT: 'fileinfo',\n\n\t/**\n\t * max number of assets to show in the Recently Uploaded Assets list\n\t * @const\n\t * @type {number}\n\t * @default\n\t */\n\tRECENTLY_UPLOADED_SIZE: 40,\n\n\t/**\n\t * Should we initialize the extra uploader for asset reimportation?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tREIMPORT_ENABLE: true,\n\n\t/**\n\t * Should we initialize the extra uploader for asset checkin?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tCHECKIN_ENABLE: true,\n\n\t/**\n\t * Should we initialize asset repurposing?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tREPURPOSE_ENABLE: true,\n\n\t/**\n\t * Should we download an asset after checking it out?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tDOWNLOAD_ON_CHECKOUT: true,\n\n\t/**\n\t * Is the CartAssets class extended from the MiniAssets class (instead of the Assets class)?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\t// TODO: why is this in the asset controller instead of the cart controller?\n\tCART_ASSETS_MINI: true,\n\n\t/**\n\t * Is the SearchAssets class extended from the MiniAssets class (instead of the Assets class)?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\t// TODO: ditto previous question.\n\tSEARCH_ASSETS_MINI: true,\n\n\t/**\n\t * Should we allow drag actions on assets?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tDRAGGABLE: true,\n\n\t/**\n\t * Should assets re-fetch themselves immediately after saving to the DAM?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tFETCH_ON_SAVE: true,\n\n\t/**\n\t * Should asset collections, by default, fetch via the Faceted Search interface instead of the standard Search interface?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tUSE_FACETED_SEARCH: false,\n};\n","import config from 'netxcore@netx/core-asset/config';\n\nObject.assign(config, {\n\tPAGE_SIZE: 30,\n\tCHUNK_SIZE: 30,\n\tDETAIL_TABS: ['preview', 'fileinfo', 'attributes', 'list'],\n\tDRAGGABLE: false,\n\tEQUAL_GRID: true, // default false\n\tLIST_TYPE: ['card', 'curator', 'grid', 'list'],\n\tLIST_TYPE_DEFAULT: 'card',\n\tLIST_TYPES_ENABLED: false,\n\n\tCATEGORY_ASSETS_MINI: false,\n\tSEARCH_ASSETS_MINI: false,\n\tCART_ASSETS_MINI: false,\n\tZOOM_CONTAINER_ID: 'modal',\n});\n\nexport default config;\n","export default {\n\t/**\n\t * CSS id for cart container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tPOST_LOGIN_HASH_NAME: 'postLoginHash',\n\tCUSTOM_LOGIN_TRIGGERED_NAME: 'customLoginTriggered',\n\t/**\n\t * Should the client prevent the server from timing out inactive sessions?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tTICKLE_SESSION: false,\n};\n","import config from 'netxcore@netx/core-auth//config';\n\nObject.assign(config, {\n\tPOST_LOGIN_HASH_NAME: 'cleanPostLoginHash',\n});\n\nexport default config;\n","/**\n * Netx.Collections.CartAssets reflects the assets in a cart on the DAM -- either a saved cart, or\n * the in-memory cart AKA the \"current cart\". It contains a host of RPC methods for manipulating cart\n * contents and for all of the cart-based asset operations on the DAM.\n *\n * Inherts the paging system from Netx.Collections.Assets to fetch cart assets by page or chunk.\n *\n * @class\n * @todo The new cart API is much nicer, and it'd be nice if this object reflected it.\n * I'd rather call 'cart.addAssets' than 'cart.cartAdd', etc. We'd want to create deprecations\n * around the old methods so they still work for now, but use the new methods in the core controlle\n */\nimport Base from '@netx/core-asset/collections/assets';\n\nimport {i18n} from '@netx/core/i18n';\nimport AssetSetModel from '@netx/core-asset/models/assetSet';\nimport {types as assetSetTypes} from '@netx/core-asset/properties/assetSets';\nimport {userInputToExpirationTime} from '@netx/core-asset-expiration/utils';\nimport customConfig from '../config';\nimport {unarchiveTypes} from '../properties/cartAssetArchive';\nimport {allSavedCarts} from '@netx/core-cart/singletons/savedCarts';\n\nexport default class CartAssets extends Base {\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tfacetedSearch: 'Loading saved cart assets',\n\t\t\tsearchAssetBeanObjects: 'Loading saved cart assets',\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tfacetedSearch: 'Loaded saved cart assets',\n\t\t\tsearchAssetBeanObjects: 'Loaded saved cart assets',\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} methods - Methods for this Collection\n\t * @property {method} methods.addAssetsToCart - Add assets to cart\n\t * @property {method} methods.addFacetedSearchToCart - Add faceted search to cart\n\t * @property {method} methods.archiveCartAssets - Archive all assets in cart\n\t * @property {method} methods.createObjectPackage - Create TMS object package\n\t * @property {method} methods.deleteCartAssets - Delete all assets in cart\n\t * @property {method} methods.empty - Empty cart\n\t * @property {method} methods.expireCartAssets - Set all assets in cart to expire\n\t * @property {method} methods.fetchAll - Fetch all assets\n\t * @property {method} methods.inspect - Inspect cart contents\n\t * @property {method} methods.removeAssetsFromCart - Remove assets from cart\n\t * @property {method} methods.setAssetsInCart - Set assets in cart\n\t * @property {method} methods.unarchiveCartAssets - Unarchive all assets in cart\n\t */\n\tget methods() {\n\t\treturn _.extend(super.methods, {\n\t\t\t/**\n\t\t\t * Add assets to cart\n\t\t\t * @method\n\t\t\t * @param {array} assets Assets/asset ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\taddAssetsToCart(assets, opts) {\n\t\t\t\treturn ['addAssetsToCart', this.id, _.tidyAssetList(assets)];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Add faceted search to cart\n\t\t\t * @method\n\t\t\t * @param {module:search/collections/searchRules} selection Selection\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\taddFacetedSearchToCart(selection, opts) {\n\t\t\t\tif (!selection) {\n\t\t\t\t\tthrow new Error('No search selection!');\n\t\t\t\t}\n\n\t\t\t\tvar search = selection.createSearchObject();\n\t\t\t\treturn [\n\t\t\t\t\t'addFacetedSearchToCart',\n\t\t\t\t\tthis.id,\n\t\t\t\t\tsearch.sortField,\n\t\t\t\t\tsearch.sortOrder,\n\t\t\t\t\tsearch.matchCriteria,\n\t\t\t\t\tsearch.elementTypes,\n\t\t\t\t\tsearch.elementSubType1s,\n\t\t\t\t\tsearch.elementSubType2s,\n\t\t\t\t\tsearch.elementValue1s,\n\t\t\t\t\tsearch.elementValue2s,\n\t\t\t\t\tsearch.elementValue3s,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\tselection.searchFacets.selectedValues(),\n\t\t\t\t\tselection.searchFacets.filterMode,\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Archive cart assets\n\t\t\t * @method\n\t\t\t */\n\t\t\tarchiveCartAssets: ['archiveCartAssets', 'id', 'archiveArgs.locationId'],\n\t\t\t/**\n\t\t\t * TMS\n\t\t\t * @method\n\t\t\t */\n\t\t\tcreateObjectPackage: ['createObjectPackage', 'id'],\n\t\t\t/**\n\t\t\t * Delete all assets in cart\n\t\t\t * @method\n\t\t\t */\n\t\t\tdeleteCartAssets: ['deleteCartAssets', 'id'],\n\t\t\t/**\n\t\t\t * Empty cart\n\t\t\t * @method\n\t\t\t */\n\t\t\tempty: ['setAssetsInCart', 'id', []],\n\t\t\t/**\n\t\t\t * Delete all assets in cart\n\t\t\t * @method\n\t\t\t */\n\t\t\texpireCartAssets: ['expireCartAssets', 'id', 'expirationArgs.date'],\n\t\t\t/**\n\t\t\t * Fetch all assets\n\t\t\t * Usefull for our pull until (chekcing to see if an asset is still present)\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchAll(opts) {\n\t\t\t\tvar search = this.selection.createSearchObject();\n\t\t\t\treturn [\n\t\t\t\t\t'searchAssetObjects',\n\t\t\t\t\tsearch.sortField,\n\t\t\t\t\tsearch.sortOrder,\n\t\t\t\t\tsearch.matchCriteria,\n\t\t\t\t\tsearch.elementTypes,\n\t\t\t\t\tsearch.elementSubType1s,\n\t\t\t\t\tsearch.elementSubType2s,\n\t\t\t\t\tsearch.elementValue1s,\n\t\t\t\t\tsearch.elementValue2s,\n\t\t\t\t\tsearch.elementValue3s,\n\t\t\t\t\tsearch.saveSearch,\n\t\t\t\t\tsearch.notifyType,\n\t\t\t\t\tsearch.ignoreStat,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Inspects cart assets for repupose\n\t\t\t * @method\n\t\t\t */\n\t\t\tinspect: ['inspectCartContents', 'id'],\n\t\t\t/**\n\t\t\t * Remove assets from cart\n\t\t\t * @method\n\t\t\t * @param {array} assets Assets/asset ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tremoveAssetsFromCart(assets, opts) {\n\t\t\t\treturn ['removeAssetsFromCart', this.id, _.tidyAssetList(assets)];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Set assets in cart\n\t\t\t * @method\n\t\t\t * @param {array} assets Assets/asset ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetAssetsInCart(assets, opts) {\n\t\t\t\treturn ['setAssetsInCart', this.id, _.tidyAssetList(assets)];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Unarchive cart assets\n\t\t\t * @method\n\t\t\t */\n\t\t\tunarchiveCartAssets: [\n\t\t\t\t'unarchiveCartAssets',\n\t\t\t\t'id',\n\t\t\t\t'unarchiveArgs.type',\n\t\t\t\t'unarchiveArgs.email',\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * @property {object} parsers - Parsers for this collection\n\t * @property {function} parsers.addAssetsToCart - Added assets to cart\n\t * @property {function} parsers.addFacetedSearch - Added assets to cart based on faceted search\n\t * @property {function} parsers.addSearch - Added assets to cart based on search\n\t * @property {function} parsers.empty - Emptied cart\n\t * @property {function} parsers.inspect - Inspected cart assets\n\t * @property {function} parsers.repurpose - Repurposed assets with preset\n\t * @property {function} parsers.removeAssetsFromCart - Removed assets from cart\n\t */\n\tget parsers() {\n\t\treturn _.extend(super.parsers, {\n\t\t\t/**\n\t\t\t * Added assets to cart\n\t\t\t * @function\n\t\t\t * @param {number} count Cart asset count\n\t\t\t * @param {array} assets Assets/asset ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\taddAssetsToCart(count, assets, opts) {\n\t\t\t\tassets = _.tidyAssetList(assets);\n\t\t\t\t// TODO: it'd be nice to get the calling arguments included in the complete: event & not have to do this:\n\t\t\t\tthis.listenToOnce(this, 'complete:addAssetsToCart', () => {\n\t\t\t\t\tdispatcher.trigger('cart:added', assets);\n\t\t\t\t\tthis.trigger('added', assets);\n\t\t\t\t});\n\n\t\t\t\tthis.cartResultParser(count);\n\t\t\t},\n\t\t\t/**\n\t\t\t * Added assets to cart based on facetedsearch\n\t\t\t * @function\n\t\t\t * @param {number} count Cart asset count\n\t\t\t * @param {module:search/collections/searchRules} selection Selection\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\taddFacetedSearchToCart(count, selection, opts) {\n\t\t\t\tthis.cartResultParser(count);\n\t\t\t},\n\t\t\t/**\n\t\t\t * Emptied cart\n\t\t\t * @function\n\t\t\t * @param {number} count Cart asset count\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tempty(count, opts) {\n\t\t\t\tthis.reset(); // clear out the collection\n\t\t\t\tthis.pager.clearPages();\n\t\t\t\tthis.trigger('emptied');\n\t\t\t\tdispatcher.trigger('cart:cleared', this);\n\t\t\t},\n\t\t\t/**\n\t\t\t * Inspected cart assets\n\t\t\t * @function\n\t\t\t * @param {object} data Inspection data\n\t\t\t * @param {object} opts Request options\n\t\t\t * @example\n\t\t\t * {\n\t\t\t * \"imageCount\":2,\n\t\t\t * \"videoCount\":0,\n\t\t\t * \"audioCount\":0,\n\t\t\t * \"documentCount\":0,\n\t\t\t * \"otherAssetCount\":0,\n\t\t\t * \"downloadApprovalRequired\":false,\n\t\t\t * \"videoAssetIds\":[],\n\t\t\t * \"imageAssetIds\":[3,6],\n\t\t\t * \"audioAssetIds\":[],\n\t\t\t * \"documentAssetIds\":null,\n\t\t\t * \"otherAssetIds\":[],\n\t\t\t * \"cartItemBreachesImageDownloadThreshold\":false,\n\t\t\t * \"cartItemBreachesVideoDownloadThreshold\":false\n\t\t\t * }\n\t\t\t */\n\t\t\tinspect(data, opts) {\n\t\t\t\tthis.inspection = data;\n\t\t\t},\n\t\t\t/**\n\t\t\t * Removed assets from cart\n\t\t\t * @function\n\t\t\t * @param {number} count Cart asset count\n\t\t\t * @param {array} assets Assets/asset ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tremoveAssetsFromCart(count, assets, opts) {\n\t\t\t\t!this.id && this.cartResultParser(count);\n\t\t\t},\n\t\t});\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * The cart ID; set to 0 to fetch from the current cart.\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.id = 0;\n\n\t\tif (opts.cartId) {\n\t\t\tconsole.warn(\n\t\t\t\t'`cartId` is deprecated on the `CartAssets` collections. Use the `id` by version 9.1',\n\t\t\t);\n\t\t\topts.id = opts.cartId;\n\t\t}\n\n\t\tif (opts.id) {\n\t\t\tthis.setCartId(opts.id || opts.cartId);\n\t\t}\n\n\t\t/**\n\t\t * @memberof Netx.Collections.CartAssets\n\t\t * @property {object} archiveArgs - Arguments to the archive cart assets method\n\t\t * @property {number} archiveArgs.locationId - Archive location id\n\t\t * @default\n\t\t */\n\t\tthis.archiveArgs = _.extend(\n\t\t\t{\n\t\t\t\tlocationId: 0,\n\t\t\t},\n\t\t\topts.archiveArgs,\n\t\t);\n\n\t\t/**\n\t\t * Target of various batch task methods -- a list of asset IDs, or an empty array to specify the current cart contents.\n\t\t * @memberof Netx.Collections.CartAssets\n\t\t * @type {array}\n\t\t */\n\t\tthis.batch = [];\n\n\t\t/**\n\t\t * @memberof Netx.Collections.CartAssets\n\t\t * @property {object} expirationArgs - Arguments to the expire cart assets method\n\t\t * @property {number} expirationArgs.date - Expiration date to set (in milliseconds)\n\t\t */\n\t\tthis.expirationArgs = _.extend(\n\t\t\t{\n\t\t\t\tdate: 0,\n\t\t\t},\n\t\t\topts.expirationArgs,\n\t\t);\n\n\t\t/**\n\t\t * attributes returned by inspectCartContents()\n\t\t * @memberof Netx.Collections.CartAssets\n\t\t * @type {object}\n\t\t */\n\t\tthis.inspection = _.extend({}, opts.inspection);\n\n\t\t/**\n\t\t * Route of last cart dislplayed\n\t\t * @type {string}\n\t\t */\n\t\tthis.lastCartRoute = opts.lastCartRoute;\n\n\t\t/**\n\t\t * number of items in the cart, as reported by DAM\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.total = opts.total || 0;\n\n\t\t/**\n\t\t * @memberof Netx.Collections.CartAssets\n\t\t * @property {object} unarchiveArgs - Arguments to the unarchive cart assets method\n\t\t * @property {number} unarchiveArgs.unarchiveType - Type of unarchive ( 1 = temporary, 2 = permanently )\n\t\t * @property {string} unarchiveArgs.email - Email address to notify on unarchive complete\n\t\t * @default\n\t\t */\n\t\tthis.unarchiveArgs = _.extend(\n\t\t\t{\n\t\t\t\ttype: 1,\n\t\t\t\temail: '',\n\t\t\t},\n\t\t\topts.unarchiveArgs,\n\t\t);\n\n\t\t// Set selection to cart/cartId\n\t\tthis.selection.at(0).set({\n\t\t\telementType: 10, // cart search\n\t\t\telementValue1: this.id, // cart id (0 for current)\n\t\t});\n\t\t// Set max items (this already happens in Netx.Collections.Assets - necessary to do here again?)\n\t\tthis.selection.maxItems = customConfig.CHUNK_SIZE + 1;\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(this, 'add', this.addAsset)\n\t\t\t// Don't consider a cart sync to be a user selection - I do not see cacheSelection in any code - remove soon? 2015-09-25\n\t\t\t// nk - also this was stopping the super collection sync listener which calls calculatePaging\n\t\t\t// this.stopListening( this, 'sync', this.cacheSelection );\n\t\t\t// always count the cart after a sync\n\t\t\t.listenTo(this, 'sync', this.assetCount)\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'cart:saved:collect:success cart:saved:add:assets:success',\n\t\t\t\t(savedCarts) => {\n\t\t\t\t\tsavedCarts.get(this.id) && this.fetch();\n\t\t\t\t},\n\t\t\t)\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t[\n\t\t\t\t\t'cart:saved:assets:unexpire:succeeded',\n\t\t\t\t\t'cart:saved:assets:expire:succeeded',\n\t\t\t\t].join(' '),\n\t\t\t\t(savedCart) => {\n\t\t\t\t\tthis.id === this.model.id && this.fetch();\n\t\t\t\t},\n\t\t\t)\n\t\t\t// portal is the only one using backbone collections for these cart assets\n\t\t\t// atm, so we can just listen to the dispatcher for these events\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t`cart:saved:removeAssets:success`,\n\t\t\t\t(updatedSavedCart, assetId) => {\n\t\t\t\t\tif (this.id !== updatedSavedCart.id) return;\n\t\t\t\t\tthis.remove(assetId);\n\t\t\t\t},\n\t\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} locationId Archive location id\n\t * @param {object} opts Request options\n\t */\n\tarchive(locationId, opts) {\n\t\tlocationId = parseInt(locationId);\n\n\t\tif (isNaN(locationId) || !Netx.app.storageLocations.get(locationId)) {\n\t\t\treturn new $.Deferred().reject(\n\t\t\t\tnew Error(i18n.t('i18n.invalidArchiveLocation')),\n\t\t\t);\n\t\t}\n\n\t\tthis.archiveArgs.locationId = locationId;\n\t\treturn this.archiveCartAssets(opts);\n\t}\n\n\t/**\n\t * Generic handler for cart methods' success\n\t * @method\n\t * @param {number} count Cart asset count\n\t * @todo Check parameter documentation\n\t */\n\tcartResultParser(count) {\n\t\t// update our asset count\n\t\tthis.setAssetCount(count);\n\t\t// re-get our list of cart assets from the DAM, now that the search results have been added there.\n\t\treturn this.fetch();\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} dateStr Date (yyyy-mm-dd)\n\t */\n\tasync expireAssets(dateStr) {\n\t\ttry {\n\t\t\tconst expirationTime = userInputToExpirationTime(dateStr);\n\t\t\tthis.expirationArgs.date = expirationTime;\n\t\t\tconst uuid = await this.expireCartAssets();\n\t\t\treturn [uuid, expirationTime];\n\t\t} catch (ex) {\n\t\t\treturn new $.Deferred().reject(ex);\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} page\n\t * set page and context for selection, then fetch\n\t */\n\tfetchCurrentCart(page, opts) {\n\t\tthis.curPage = page ? page : 1;\n\t\tthis.routeContext = 'cart';\n\t\treturn this.fetch(opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} id\n\t * @param {number} page\n\t * set page and context for savedCart, then fetch\n\t */\n\tfetchSavedCart(id, page, opts) {\n\t\treturn allSavedCarts.getCart(id).then((savedCart) => {\n\t\t\tthis.savedCart = savedCart;\n\t\t\tthis.setCartId(id, page);\n\t\t\treturn this.fetch(opts);\n\t\t});\n\t}\n\n\t/**\n\t * Try to find the saved cart model for our ID\n\t * @method\n\t * @todo this will need to be addressed when we get into paging\n\t */\n\tfindCartModel() {\n\t\treturn allSavedCarts.get(this.id);\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolen}\n\t */\n\tisSortable() {\n\t\t// Cannot sort on cart or custom search types currently\n\t\tconst customSearchType = this.selection.findWhere({elementType: 9});\n\t\treturn _.isUndefined(customSearchType);\n\t}\n\n\t/**\n\t * We are only allow one poll at a time per instance\n\t * @method\n\t * @param {array} assetsList An array of asset ids\n\t */\n\tpollRemoveAssets(assetsList) {\n\t\tconst d = new $.Deferred();\n\n\t\tconst checkPolling = () => {\n\t\t\t// Already polling\n\t\t\tif (this._polling) {\n\t\t\t\t// Wait for poll to complete and try again\n\t\t\t\tthis._polling.promise().then(() => {\n\t\t\t\t\t// Otherwise a loop will ensue\n\t\t\t\t\t// this._polling will still be defined and so the method will just return the polling promise\n\t\t\t\t\t// which immediately is resolved - which would trigger this again - repeat... forever.\n\t\t\t\t\t_.defer(() => {\n\t\t\t\t\t\tcheckPolling();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t\t// Ready to poll\n\t\t\telse {\n\t\t\t\tlet assetIds = [];\n\t\t\t\tthis.pollUntil(\n\t\t\t\t\t(assets) => {\n\t\t\t\t\t\tif (!_.isUndefined(assets)) {\n\t\t\t\t\t\t\tassetIds = _.pluck(assets, 'assetId');\n\t\t\t\t\t\t\treturn !_.intersection(assetIds, assetsList).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t},\n\t\t\t\t\t'cart:saved:removing:assets',\n\t\t\t\t\tthis.fetchAll,\n\t\t\t\t\t500,\n\t\t\t\t\t{silent: true},\n\t\t\t\t).then(() => {\n\t\t\t\t\treturn d.resolve(assetIds);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t\tcheckPolling();\n\n\t\treturn d.promise();\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} assets Array of asset models\n\t * @fires modules:cart#cart:saved:removing:assets\n\t * @fires modules:cart#cart:removed\n\t */\n\t// TODO: document or fix: why do we poll after removeAssetsFromCart, but not after addAssetsToCart ?\n\t// TODO: refactor/unwrap removeAssets, matching how we did it for addAssets.\n\tremoveAssets(assets, opts = {}) {\n\t\tconst assetsList = _.tidyAssetList(assets);\n\t\tconst count = this.assetCount();\n\n\t\treturn this.removeAssetsFromCart(assetsList, opts).then(() => {\n\t\t\t// Let the world know\n\t\t\tdispatcher.trigger('cart:saved:removing:assets', assetsList, this.id);\n\t\t\treturn this.pollRemoveAssets(assetsList).then((assetIds) => {\n\t\t\t\t// Remove from collection\n\t\t\t\tthis.remove(assetsList);\n\t\t\t\tdispatcher.trigger('cart:removed', assetsList, this.id);\n\n\t\t\t\tthis.trigger('sync', this, [], opts).setAssetCount(assetIds.length);\n\n\t\t\t\treturn assetsList;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} count Count\n\t */\n\tsetAssetCount(count) {\n\t\t// triggers 'counted'\n\t\tthis.pager.set({itemTotal: parseInt(count)});\n\t\t// We kind of painted ourselves into a corner here\n\t\t// our actions react to sync events to test enablers\n\t\t// we want the cart to reflect the selection immediately\n\t\t// upon add/remove from cart - so, a fake sync here.\n\t\tthis.trigger('sync', this, [], {});\n\n\t\treturn this.pager;\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} assets Array of assets\n\t * @fires module:cart#cart:wasSet\n\t */\n\tsetAssets(assets) {\n\t\tconst assetsList = _.tidyAssetList(assets);\n\t\treturn this.setAssetsInCart(assetsList).then(() => {\n\t\t\tdispatcher.trigger('cart:wasSet', assetsList);\n\t\t\tthis.trigger('wasSet', assetsList);\n\t\t});\n\t}\n\n\t/**\n\t * Set the cart id and page\n\t * @param {number} id SavedCart id\n\t * @param {number} page\n\t */\n\tsetCartId(id, page) {\n\t\tconst selection = this.selection;\n\t\tthis.curPage = page;\n\t\tthis.routeContext = 'cart-assets/' + id;\n\t\tid = parseInt(id);\n\t\t// triggers 'countUnknown'\n\t\tselection.at(0).set({elementValue1: id});\n\n\t\t// reset facets\n\t\tif (selection.searchFacets && id != this.id) {\n\t\t\tselection.searchFacets.reset();\n\t\t}\n\n\t\tthis.id = id;\n\t\tthis.batch = id === 0 ? [] : [id];\n\t}\n\n\t/**\n\t * return an assetSet model defining the set of this cart's assets\n\t * @method\n\t * @return {module:asset/models/assetSet} AssetSet model\n\t */\n\ttoAssetSet() {\n\t\t// TODO: this will need to be addressed when we get into paging\n\t\tconst model = this.findCartModel();\n\t\treturn new AssetSetModel({\n\t\t\ttype: assetSetTypes.savedCart,\n\t\t\tids: [this.id],\n\t\t\tmodels: model ? [model] : undefined,\n\t\t\tlabel: model ? model.get('title') : i18n.t('i18n.cartAssets'),\n\t\t});\n\t}\n\n\t/**\n\t * Unarchive all assets\n\t * @method\n\t * @param {number} type Unarchive type\n\t * @param {string} email Email to notify on completion\n\t */\n\tunarchive(type, email) {\n\t\ttype = parseInt(type);\n\n\t\tif (isNaN(type) || unarchiveTypes[type] == null) {\n\t\t\treturn new $.Deferred().reject(\n\t\t\t\tnew Error(i18n.t('i18n.invalidUnarchiveType')),\n\t\t\t);\n\t\t}\n\n\t\t_.extend(this.unarchiveArgs, {\n\t\t\temail: email,\n\t\t\ttype: type,\n\t\t});\n\t\treturn this.unarchiveCartAssets();\n\t}\n\n\t/**\n\t * Unset all asset expiration\n\t * @method\n\t */\n\tasync unexpireAssets() {\n\t\tthis.expirationArgs.date = 0;\n\t\tconst uuid = await this.expireCartAssets();\n\t\treturn [uuid, 0];\n\t}\n\n\t/**\n\t * Instantiate a cartAssets collection with a page of cart assets from a specified cart:\n\t * @method\n\t * @param {number} id Cart id\n\t */\n\tstatic Load(id) {\n\t\tconst instance = new this([], {id: id});\n\t\treturn instance.fetch().then(() => {\n\t\t\treturn this;\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CartAssets';\n\t}\n}\n","/**\n * @class\n */\nimport Base from 'netxcore@netx/core-cart/collections/cartAssets';\n\nexport default class CartAssets extends Base {\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\tsuper(models, opts);\n\n\t\tthis.pager.set({routesToPage: true});\n\t}\n}\n","export default {\n\t/**\n\t * CSS id for cart container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tSAVED_CARTS_ID: 'cart-saved',\n\t/**\n\t * CSS id for cart list element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tCART_GALLERY_ID: 'cart-assets',\n\t/**\n\t * CSS id for cart actions bar element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tCART_ACTIONS_BAR: 'cart-actions-bar',\n\t/**\n\t * CSS id for cart list header element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tCART_HEADER_ID: 'cart-header',\n\t/**\n\t * CSS id for saved cart header container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tSAVED_CART_HEADER_ID: 'saved-cart-header',\n\t/**\n\t * CSS id for saved cart assets container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tSAVED_CART_GALLERY_ID: 'saved-cart-assets',\n\n\t/**\n\t * CSS id for cart container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tCHUNK_SIZE: 12,\n\t/**\n\t * CSS id for cart container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tPAGE_SIZE: 12,\n\t/**\n\t * When sharing cart permissions, allow ownership changes?\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tSHARE_SHOW_OWNER: true,\n\t/**\n\t * When sharing cart permissions, sync immediately on every change?\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tSHARE_SYNC_IMMEDIATE: false,\n\t/**\n\t * Route component for showing the contents a saved cart\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tROUTE_SAVED_CART: 'cart-assets',\n};\n","import config from 'netxcore@netx/core-cart/config';\n\nObject.assign(config, {\n\tSHARE_SYNC_IMMEDIATE: true,\n});\n\nexport default config;\n","/**\n * This is a collection of category objects representing the child categories of the current category.\n *\n * It must be instantiated with options.currentCat pointing to a Netx.Models.Category representing the current category.\n *\n * If options.cache is provided, it is assumed to be a Netx.Collections.CategoryTreeNodes collection,\n * and we fetch our categories through that object, using it as a read-thru cache.\n *\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/category';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\n\nexport default class Categories extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tgetCategories: 'Loading categories',\n\t\t\tgetCategoryObjects: 'Loading categories',\n\t\t\tgetDashboardRecentCategories: 'Loading dashboard categories',\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tgetCategories: 'Loading categories',\n\t\t\tgetCategoryObjects: 'Loaded categories',\n\t\t\tgetDashboardRecentCategories: 'Loaded dashboard categories',\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} methods - Collection RPC methods\n\t * @property {method} methods.read - Fetch categories\n\t * @property {method} methods.getCategoryObjects - Fetch categories for shallow models\n\t * @property {method} methods._getCategoriesById - Fetch categories by id\n\t * @property {method} methods._getDashboardRecentCategories - Fetch recent categories for dashboard\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\tif (this.currentCat) {\n\t\t\t\t\tthis.parentid = parseInt(this.currentCat.get('categoryid'));\n\t\t\t\t}\n\n\t\t\t\tif (!this.parentid) {\n\t\t\t\t\tthis.parentid = 1;\n\t\t\t\t}\n\n\t\t\t\t// get the categories from the DAM\n\t\t\t\tif (!this.cache) {\n\t\t\t\t\treturn ['getCategories', this.searchString, this.parentid];\n\t\t\t\t}\n\n\t\t\t\t// Get the categories from our cache\n\t\t\t\t// Really this cache mechanism should be deprecated; I thought I did that, but no:\n\t\t\t\t// Netx.category.list still caches off of Netx.category.tree . So this is a stopgap 'till we fix all that.\n\t\t\t\treturn this.cache.fetchChildren(this.parentid).then((response) => {\n\t\t\t\t\treturn this.cache.where({\n\t\t\t\t\t\tparentid: this.parentid,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\t/**\n\t\t\t * Just like users/groups\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetCategoryObjects(opts) {\n\t\t\t\treturn ['getCategoryObjects', this.pluck('categoryid')];\n\t\t\t},\n\t\t\t/** @method */\n\t\t\t_getCategoriesById: ['getCategoryObjects', 'ids'],\n\t\t\t/** @method */\n\t\t\t_getDashboardRecentCategories: ['getDashboardRecentCategories'],\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Collection RPC methods\n\t * @property {function} parsers.getCategoryObjects - Parse fetch of categories for shallow models\n\t * @property {function} parsers._getCategoriesById - Parse fetch of categories by id\n\t * @property {function} parsers._getDashboardRecentCategories - Parse fetch of recent categories for dashboard\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} categories Categories\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetCategoryObjects(categories, opts) {\n\t\t\t\tthis.set(categories, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} categories Categories\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\t_getCategoriesById(categories, opts) {\n\t\t\t\tif (opts.asset) {\n\t\t\t\t\tcategories = _.map(categories, (category) =>\n\t\t\t\t\t\t_.extend(category, {asset: opts.asset}),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthis.set(categories, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} recentCategories Recent categories\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\t_getDashboardRecentCategories(recentCategories, opts) {\n\t\t\t\tthis.set(recentCategories, opts);\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * A cache of categories we can fetch through, such as the category tree\n\t\t * @type {Netx.Collections.Categories}\n\t\t * @default\n\t\t */\n\t\tthis.cache = opts.cache;\n\n\t\t/**\n\t\t * The parent category we should consider when fetching children\n\t\t * @type {Netx.Models.Category}\n\t\t * @default\n\t\t */\n\t\tthis.currentCat = opts.currentCat;\n\n\t\t/**\n\t\t * Used by `getCategoriesById`\n\t\t * @type {array}\n\t\t * @default\n\t\t * @todo This is is overriding our Netx.Collection.prototype.ids() - need to find all the places settign this and change to something else\n\t\t */\n\t\tthis.ids = opts.ids || [];\n\n\t\t/**\n\t\t * @type {object}\n\t\t * @default\n\t\t * @todo are these used?\n\t\t */\n\t\tthis.nodes = _.extend(\n\t\t\t{\n\t\t\t\tactive: undefined,\n\t\t\t\tactiveParent: undefined,\n\t\t\t\tprevious: undefined,\n\t\t\t},\n\t\t\topts.nodes,\n\t\t);\n\n\t\t/**\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.parentid = opts.parentId;\n\n\t\t/**\n\t\t * @type {string}\n\t\t * @default\n\t\t */\n\t\tthis.searchString = opts.searchString || '';\n\n\t\t// We are the current category's children\n\t\tif (this.currentCat) {\n\t\t\t// React to category changes.\n\t\t\tthis.listenTo(\n\t\t\t\tthis.currentCat,\n\t\t\t\t'change:categoryid',\n\t\t\t\t(currentCat, newCatId, opts) => {\n\t\t\t\t\tthis.fetch(opts);\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * Fetch the children of any given category\n\t * @method\n\t * @param {number} parentId Parent category id\n\t * @param {object} opts Request options\n\t */\n\tfetchChildren(parentId, opts) {\n\t\tthis.parentid = parentId;\n\t\treturn this.fetch(opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} ids An array of ids\n\t * @param {object} opts Request options\n\t */\n\tgetCategoriesById(ids, opts = {}) {\n\t\tthis.ids = _.isArray(ids) ? ids : [parseInt(ids)];\n\n\t\t!opts.silent &&\n\t\t\tthis.listenToOnce(\n\t\t\t\tthis,\n\t\t\t\t'request:_getCategoriesById',\n\t\t\t\t(collection, xhr, opts) => {\n\t\t\t\t\tthis.trigger('request:read', this, xhr, opts);\n\t\t\t\t},\n\t\t\t);\n\n\t\treturn this._getCategoriesById(opts).then((response) => {\n\t\t\tthis.ids = [];\n\t\t\t!opts.silent && this.trigger('sync', this, response, opts);\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Request options\n\t */\n\tgetDashboardRecentCategories(opts = {}) {\n\t\tif (!opts.silent) {\n\t\t\tthis.listenToOnce(\n\t\t\t\tthis,\n\t\t\t\t'request:_getDashboardRecentCategories',\n\t\t\t\t(collection, xhr, opts) => {\n\t\t\t\t\tthis.trigger('request:read', this, xhr, opts);\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\treturn this._getDashboardRecentCategories(opts).then((response) => {\n\t\t\t!opts.silent && this.trigger('sync', this, response, opts);\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Categories';\n\t}\n}\n","import Base from 'netxcore@netx/core-category/collections/categories';\n\n/** @override */\nexport default class Categories extends Base {\n\t/**\n\t * @property {object} methods - Collection RPC methods\n\t * @property {method} methods.read - Fetch categories\n\t * @property {method} methods._getCategoriesByName - Fetch categories by name\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t...super.methods,\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\tif (this.currentCat) {\n\t\t\t\t\tthis.parentid = parseInt(this.currentCat.get('categoryid'));\n\t\t\t\t}\n\n\t\t\t\tif (!this.parentid) {\n\t\t\t\t\tthis.parentid = 1;\n\t\t\t\t}\n\n\t\t\t\t// get the categories from the DAM\n\t\t\t\tif (!this.cache) {\n\t\t\t\t\treturn ['getCategories', this.searchString, this.parentid];\n\t\t\t\t}\n\n\t\t\t\t// Get the categories from our cache\n\t\t\t\t// Really this cache mechanism should be deprecated; I thought I did that, but no:\n\t\t\t\t// Netx.category.list still caches off of Netx.category.tree . So this is a stopgap 'till we fix all that.\n\t\t\t\treturn this.cache.fetchChildren(this.parentid).then((response) => {\n\t\t\t\t\treturn this.cache.where({\n\t\t\t\t\t\tparentid: this.parentid,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @method */\n\t\t\t/** @TODO Move to core */\n\t\t\t_getCategoriesByName: ['getCategoryAutoList', 'searchString', 1],\n\t\t};\n\t}\n}\n","export default {\n\t/**\n\t * CSS class used for active category\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tACTIVE_CLASS: 'active',\n\t/**\n\t * Is the CategoryAssets class extended from the MiniAssets class (instead of the Assets class)?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tASSETS_MINI: false,\n\t/**\n\t * CSS class used for open tree nodes\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tTREE_NODE_OPEN_CLASS: 'open',\n\t/**\n\t * CSS class used for closed tree nodes\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tTREE_NODE_CLOSED_CLASS: 'closed',\n\t/**\n\t * CSS id used for the container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tTREE_ID: 'category-tree',\n\t/**\n\t * CSS id used for the category layer header\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tCATEGORY_HEADER_ID: 'category-header',\n\t/**\n\t * CSS id used for the category list container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tCATEGORY_LIST_ID: 'category-list',\n\t/**\n\t * CSS id used for the category asset list container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tASSET_LIST_ID: 'category-assets',\n\t/**\n\t * Should the asset list employ faceted search?\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tASSET_LIST_FACETED: false,\n\t/**\n\t * CSS id used for the breadcrumb container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tBREADCRUMB_ID: 'breadcrumb',\n\t/**\n\t * CSS id used for the category detail container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tCATEGORY_DETAIL_ID: 'category',\n\t/**\n\t * CSS id of the category container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tCONTAINER_ID: 'categories',\n\t/**\n\t * CSS id for the category edit container element\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tCATEGORY_EDIT_ID: 'category-edit',\n\t/**\n\t * Should we allow drag actions on categories?\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tDRAGGABLE: true,\n\t/**\n\t * Category edit view display type\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tMODAL: true,\n\t/**\n\t * Default category id\n\t * @const\n\t * @type {number}\n\t * @default\n\t */\n\tcategoryid: 1,\n\t/**\n\t * Allows categories to be only displayed in the tree or both the tree and gallery\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\tdisplayCategoriesAsAssets: true,\n\t/**\n\t * Default repository directory path\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\trepositorydirectory: '/',\n\t/**\n\t * Turns the category tree on or off\n\t * @const\n\t * @type {boolean}\n\t * @default\n\t */\n\ttree: true,\n\t/**\n\t * Sets the maximum depth to display in the category tree\n\t * @const\n\t * @type {string}\n\t * @default\n\t */\n\tTREE_MAX_DEPTH: null, // How many layers deep should we display?\n};\n","import config from 'netxcore@netx/core-category/config';\n\nObject.assign(config, {\n\tMODAL: false,\n\ttree: true,\n\tdisplayCategoriesAsAssets: true,\n\n\tcategoryid: 1,\n\n\tTREE_MAX_DEPTH: 90,\n});\n\nexport default config;\n","/**\n * CategoryDetailsData contains the results of the getCategoryDetailsData() API call.\n *\n * This info could be considered part of a Category model, but the data is calculated on-demand and\n * isn't part of the server-side CategoryBean that our Category model reflects. Instead, we store\n * these stats in this model, and then use calls on the Category model to create/update this model & attach\n * it to the Category.\n *\n * CategoryDetailsData cannot be written to the server; it is a fetch-only model.\n *\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nexport default class CategoryDetailsData extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * The unique ID for this model\n\t * @type {string}\n\t */\n\tget idAttribute() {\n\t\treturn 'categoryId';\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {string} defaults.byteCount - Total bytes of all assets in the category (recursive)\n\t * @property {string} defaults.fileCount - Total number of files in the category (recursive)\n\t * @property {string} defaults.subcategoryCount - Total number of subcategories in the category (recursive)\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tbyteCount: '',\n\t\t\tfileCount: 0,\n\t\t\tsubCategoryCount: 0,\n\t\t};\n\t}\n\n\t/**\n\t * RPC methods:\n\t * @rpcs\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/** @method */\n\t\t\tread: ['getCategoryDetailsData', 'categoryId'],\n\t\t};\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CategoryDetailsData';\n\t}\n}\n","/**\n * @class\n * Model to store attribute data for attribute profile items.\n * Specifically used to store attribute's id and associated value.\n * https://kb.netx.net/display/DEV/Attribute+Profiles+for+Folders\n */\n\nimport Base from '../models/attribute';\n\nexport default class AttributeProfileAttribute extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @type {string}\n\t * @private\n\t */\n\tget idAttribute() {\n\t\treturn 'attributeid';\n\t}\n\n\t/**\n\t * @type {object}\n\t * @private\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t...super.defaults,\n\t\t\tappend: false,\n\t\t\tattributeid: null,\n\t\t\tcleared: false,\n\t\t\t// Our base sets this to 0 be default\n\t\t\t// we will set this as needed when re-ordering\n\t\t\tindex: null,\n\t\t\tvalue: null,\n\t\t};\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AttributeProfileAttribute';\n\t}\n}\n","/**\n * @class\n * Collection to handle attribute templates/values for attribute profiles\n * https://kb.netx.net/display/DEV/Attribute+Profiles+for+Folders\n */\n\nimport Base from '../collections/attributes';\nimport Model from '../models/attributeProfileAttribute';\n\nexport default class AttributeProfileAttributes extends Base {\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\tthis.comparator = null;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AttributeProfileAttributes';\n\t}\n}\n","/**\n * @class\n * Model to handle attribute profile data\n * https://kb.netx.net/display/DEV/Attribute+Profiles+for+Folders\n */\n\nimport Base from '@netx/core/lib/netx-model';\nimport AttributeProfileAttributes from '../collections/attributeProfileAttributes';\nimport AttributeProfileAttribute from '../models/attributeProfileAttribute';\nimport {isEmptyValue} from '@netx/core/lib/underscore-netx';\nimport {ATTRIBUTE_MULTIPLE_VALUE_TYPES} from '@netx/core-attribute/constants';\nimport {assetAttributes} from '@netx/core-attribute/singletons';\nimport {csvToArray} from '@netx/core-next/utils/array';\n\nexport default class AttributeProfile extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @type {string}\n\t * @private\n\t */\n\tget idAttribute() {\n\t\treturn 'profileId';\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute profile values\n\t * @property {string} defaults.name - Name of attribute profile\n\t * @property {object[]} defaults.items - Objects representing profile attributes and values\n\t * @property {number} defaults.items[i].templateId - Attribute template id\n\t * @property {string[]} defaults.items[i].values - Attribute values\n\t * @property {boolean} defaults.items[i].append - Whether attribute value is to be appended or not\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tname: '',\n\t\t\titems: [],\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget methods() {\n\t\treturn {\n\t\t\tcreate(opts) {\n\t\t\t\treturn ['setAttributeProfile', this.self()];\n\t\t\t},\n\t\t\tupdate(opts) {\n\t\t\t\treturn ['setAttributeProfile', this.self()];\n\t\t\t},\n\t\t\tremove(opts) {\n\t\t\t\treturn ['removeAttributeProfile', this.id];\n\t\t\t},\n\t\t\tsetAttributeProfileForFolder(folderId, opts) {\n\t\t\t\treturn ['setAttributeProfileForFolder', folderId, this.self()];\n\t\t\t},\n\t\t\tremoveAttributeProfileFromFolder(folderId, opts) {\n\t\t\t\treturn ['removeAttributeProfileFromFolder', folderId];\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts) {\n\t\tsuper(attrs, opts);\n\n\t\tthis.assetAttributes = assetAttributes;\n\n\t\tthis.attributesSelected = new AttributeProfileAttributes();\n\t\tthis.addSubCollection(this.attributesSelected);\n\n\t\tthis.populateSelectedAttributes();\n\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t'attribute:profile:edit:success',\n\t\t\t(attributeProfile) => {\n\t\t\t\tif (attributeProfile.profileId !== this.id) return;\n\t\t\t\tthis.set(attributeProfile);\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} data Data\n\t * @param {object} opts Options\n\t */\n\tparseAndSave(data, opts) {\n\t\t/* Structure of `data` arg\n\t\t{\n\t\t \tname: <profile name>\n\t\t \tattribute-profile-attributes-item: {\n\t\t \t\t<index>: <attribute id>,\n\t\t \t\t...\n\t\t \t}\n\t\t \t<attribute name>: <attribute value>,\n\t\t \t<attribute name>-append: <boolean>\n\t\t \t...\n\t\t}\n\t\t*/\n\n\t\tconst attrIds = Object.values(\n\t\t\tdata['attribute-profile-attributes-item'] || {},\n\t\t).map(Number);\n\n\t\tconst items = attrIds\n\t\t\t.map((attrId) => {\n\t\t\t\tconst attr = assetAttributes.get(attrId);\n\t\t\t\tif (!attr) return;\n\n\t\t\t\tconst name = attr.get('name');\n\t\t\t\tconst type = attr.get('type');\n\n\t\t\t\tlet _data = data[name];\n\n\t\t\t\treturn {\n\t\t\t\t\ttemplateId: attrId,\n\t\t\t\t\tvalues: ATTRIBUTE_MULTIPLE_VALUE_TYPES.includes(type)\n\t\t\t\t\t\t? csvToArray(_data)\n\t\t\t\t\t\t: Array.isArray(_data)\n\t\t\t\t\t\t? _data\n\t\t\t\t\t\t: [_data],\n\t\t\t\t\tappendable: data[`${name}-append`] || false,\n\t\t\t\t};\n\t\t\t})\n\t\t\t.filter((attrObj) => attrObj != null);\n\n\t\treturn this.save({name: data.name, items}, {wait: true, ...opts}).then(\n\t\t\t// Repopulate our selected attributes after any changes\n\t\t\tthis.populateSelectedAttributes,\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * Loop through the `items` array attribute to find all template IDs\n\t * for this attribute profile and get the associated models for each\n\t * and place them in an AttributeProfileAttributes collection\n\t */\n\tpopulateSelectedAttributes() {\n\t\tconst attributeModels = this.get('items')\n\t\t\t.map((attr, idx) => {\n\t\t\t\tconst _attrModel = this.assetAttributes.get(attr.templateId);\n\t\t\t\tif (!_attrModel) return;\n\n\t\t\t\tconst attrModel = new AttributeProfileAttribute({\n\t\t\t\t\t..._attrModel.attributes,\n\t\t\t\t});\n\t\t\t\tattrModel.set({\n\t\t\t\t\tappend: attr.appendable,\n\t\t\t\t\torderby: idx,\n\t\t\t\t});\n\n\t\t\t\tif (!ATTRIBUTE_MULTIPLE_VALUE_TYPES.includes(attrModel.get('type'))) {\n\t\t\t\t\tattrModel.set('value', attr.values[0]);\n\t\t\t\t} else {\n\t\t\t\t\tattrModel.set('value', attr.values);\n\t\t\t\t}\n\n\t\t\t\tif (isEmptyValue(attrModel.get('value'))) {\n\t\t\t\t\tattrModel.set('cleared', true);\n\t\t\t\t}\n\n\t\t\t\treturn attrModel;\n\t\t\t})\n\t\t\t.filter((attr) => attr != null);\n\n\t\tthis.attributesSelected.set(attributeModels);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AttributeProfile';\n\t}\n}\n","import {UserLevel} from '@netx/core-user/constants';\n\nexport const MINIMUM_USER_LEVEL = UserLevel.ADMIN;\n","import {Locales} from '@netx/core-next/locales';\n\nexport const AttributeProfilesSystemLabel = Locales((i18n) => ({\n\tROUTE: i18n('i18n.attributeProfiles'),\n}));\n\nexport const PROFILE_ACTION = Locales((i18n) => ({\n\tADD: i18n('i18n.addAttributeProfile'),\n\tEDIT: i18n('i18n.editAttributeProfile'),\n}));\n","import {getViewModel} from '@netx/core/lib/utils';\n\nimport type AttributeModel from '@netx/core-asset/models/attribute';\nimport type View from '@netx/core/lib/netx-view';\n\nimport {MINIMUM_USER_LEVEL} from '../constants';\nimport {canEdit} from '../enablers';\nimport {PROFILE_ACTION} from '../locales';\n\nimport type {Action} from '@netx/core/bootstrap';\n\nimport {icon} from '@fortawesome/fontawesome-svg-core';\nimport {faPencilAlt} from '@fortawesome/pro-solid-svg-icons';\n\nconst iconOpts = {classes: ['fa-fw']};\nconst icons = {\n\tfaPencilAlt: icon(faPencilAlt, iconOpts).html,\n};\n\nconst wrapper = (view: View<AttributeModel>, event: MouseEvent) => [\n\tgetViewModel<AttributeModel>(view),\n\tevent,\n];\n\nexport const BASE_EVENT = `attribute:profile`;\n\nexport const ATTRIBUTE_PROFILE_EVENT = <const>{\n\tADD: `${BASE_EVENT}:new`,\n\tEDIT: `${BASE_EVENT}:edit`,\n};\n\nexport const ACTIONS: Action<\n\ttypeof ATTRIBUTE_PROFILE_EVENT[keyof typeof ATTRIBUTE_PROFILE_EVENT]\n>[] = [\n\t{\n\t\tevent: ATTRIBUTE_PROFILE_EVENT.ADD,\n\t\tenableTest: canEdit,\n\t\tlabel: PROFILE_ACTION.ADD,\n\t\ttestOnSync: true,\n\t\tuserLevel: MINIMUM_USER_LEVEL,\n\t},\n\t{\n\t\tevent: ATTRIBUTE_PROFILE_EVENT.EDIT,\n\t\tenableTest: canEdit,\n\t\ticon: icons.faPencilAlt,\n\t\tlabel: PROFILE_ACTION.EDIT,\n\t\ttestOnSync: true,\n\t\tuserLevel: MINIMUM_USER_LEVEL,\n\t\twrapper,\n\t},\n];\n\nexport default ACTIONS;\n","/**\n * @class\n * Collection to handle attribute profiles\n * https://kb.netx.net/display/DEV/Attribute+Profiles+for+Folders\n */\n\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/attributeProfile';\nimport Netx from '@netx/core/bootstrap';\nimport PagerModel from '@netx/core-app/models/pager';\nimport SorterModel from '@netx/core-app/models/sorter';\n\nimport {ATTRIBUTE_PROFILE_EVENT} from '@netx/core-attribute-profile/actions';\n\nexport default class AttributeProfiles extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tgetAttributeProfiles: 'Loading attribute profiles',\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tgetAttributeProfiles: 'Loaded attribute profiles',\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget methods() {\n\t\treturn {\n\t\t\tread() {\n\t\t\t\treturn [\n\t\t\t\t\t'getAttributeProfiles',\n\t\t\t\t\tthis.filterStr,\n\t\t\t\t\tthis.sorter.getSortDTO(),\n\t\t\t\t\tthis.pager.getPageDTO(),\n\t\t\t\t];\n\t\t\t},\n\t\t\tgetAttributeProfileForFolder: (folderId, opts) => [\n\t\t\t\t'getAttributeProfileForFolder',\n\t\t\t\tfolderId,\n\t\t\t],\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget parsers() {\n\t\treturn {\n\t\t\tgetAttributeProfileForFolder: (data, opts) => {\n\t\t\t\treturn data;\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * Paging model\n\t\t * @memberOf Netx.Collections.AttributeProfiles\n\t\t * @alias pager\n\t\t * @type {Netx.Models.Pager}\n\t\t */\n\t\tthis.pager = new PagerModel(\n\t\t\tObject.assign(\n\t\t\t\t{\n\t\t\t\t\t// TODO: collections/models should not need to know about routes/routing\n\t\t\t\t\troutesToPage: false,\n\t\t\t\t},\n\t\t\t\topts.pager,\n\t\t\t),\n\t\t\t{collection: this},\n\t\t);\n\n\t\t/**\n\t\t * Sorting model\n\t\t * @memberof module:asset/collections/participants\n\t\t * @alias sorter\n\t\t * @type {module:app/models/sorter}\n\t\t */\n\t\tthis.sorter = new SorterModel(\n\t\t\t{\n\t\t\t\tfield: opts.sortField || 'name',\n\t\t\t\torder: opts.sortOrder || 'desc',\n\t\t\t},\n\t\t\t{\n\t\t\t\tcollection: this,\n\t\t\t\tsortableFields: ['name'],\n\t\t\t},\n\t\t);\n\t\tthis.addSubModel(this.sorter);\n\n\t\t// Add model to collection after successful edit\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t`${ATTRIBUTE_PROFILE_EVENT.EDIT}:success`,\n\t\t\t(attributeProfile) => {\n\t\t\t\tthis.add(attributeProfile, {merge: true});\n\t\t\t\tthis.trigger('sync', this);\n\t\t\t},\n\t\t);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AttributeProfiles';\n\t}\n}\n","/**\n * @class\n * @extends Netx.Model\n */\nimport Base from '@netx/core/lib/netx-model';\nimport AssetSearhRulesCollection from '@netx/core-search/collections/searchRules_assets';\nimport AssetSetModel from '@netx/core-asset/models/assetSet';\nimport CategoryDetailsData from './categoryDetailsData';\nimport CategoryTreeNodesCollection from '../collections/categoryTreeNodes';\nimport AttributeProfile from '@netx/core-asset/models/attributeProfile';\nimport AttributeProfiles from '@netx/core-asset/collections/attributeProfiles';\n\nimport AssetModel from '@netx/core-asset/models/asset';\n\nimport {types as assetSetTypes} from '@netx/core-asset/properties/assetSets';\nimport customConfig from '../config';\n\nexport default class Category extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'categoryid';\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - Default attributes\n\t * @default\n\t * @property {number} defaults.assetId - Primary asset for category (id)\n\t * @property {string} defaults.assetLabel - Primary asset for category (label)\n\t * @property {string} defaults.byteCount - Size of all assets in category\n\t * @property {array} defaults.categoryAttributes - Attributes for category (an array of ids)\n\t * @property {number} defaults.categoryid - Category id (Never set the id in defaults)\n\t * @property {array} defaults.children - Child categories (an array of ids)\n\t * @property {string} defaults.contents - ??? Generally is filled with thie string \"categories\"\n\t * @property {string} defaults.creationDate - Date created\n\t * @property {string} defaults.description - Description\n\t * @property {boolean} defaults.facet - Determines whether a category should be used as a facet\n\t * @property {string} defaults.file - Primary file path for category\n\t * @property {number} defaults.fileCount \t\t\t- Number of assets in category\n\t * @property {boolean} defaults.hasContents - Whether or not the category has any assets\n\t * @property {string} defaults.moduserlabel - Last user to modify category\n\t * @property {string} defaults.name - Category name\n\t * @property {number} defaults.orderby - Place in order\n\t * @property {string} defaults.parentCategoryName - Parent category name\n\t * @property {number} defaults.parentid - Parent id\n\t * @property {string} defaults.path - Path to category\n\t * @property {array} defaults.permissionMatrix - Permission matrix ['read', 'download', 'add', 'modify', 'delete', 'all'] (represented by 1s and 0s)\n\t * @property {number} defaults.repositorydirectory - Repository directory (eg \"cat1/cat2/cat3\")\n\t * @property {number} defaults.subCategoryCount - Numbers of categories within parent category\n\t * @property {number} defaults.type - ??? Generally is filled wit the number 1\n\t * @property {number} defaults.userId - Id of user who created category\n\t * @property {number} defaults.visible - Whether or not the category iss visible (a boolean represented by a number)\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tassetId: 0,\n\t\t\tassetLabel: '',\n\t\t\tbyteCount: '',\n\t\t\tcategoryAttributes: [],\n\t\t\t// categoryid: 0,\n\t\t\tchildren: [],\n\t\t\tcontents: '',\n\t\t\tcreationDate: '',\n\t\t\tdescription: '',\n\t\t\tfacet: false,\n\t\t\tfile: '',\n\t\t\tfileCount: 0,\n\t\t\thasContents: false,\n\t\t\tmoduserlabel: '',\n\t\t\tname: '',\n\t\t\torderby: 0,\n\t\t\tparentCategoryName: '',\n\t\t\tparentid: 1,\n\t\t\tpath: '',\n\t\t\tpermissionMatrix: [],\n\t\t\trepositorydirectory: '/',\n\t\t\tsubCategoryCount: 0,\n\t\t\ttype: 0,\n\t\t\tuserId: 0,\n\t\t\tvisible: 1,\n\n\t\t\t// Client attributes\n\t\t\topen: false,\n\t\t\tbreadcrumb: [],\n\t\t\t// tree: new Netx.Collections.CategoryTreeNodes([]),\n\t\t\t// childCategories: new Netx.Collections.CategoryTreeNodes([])\n\t\t};\n\t}\n\n\t// Attributes that must be removed before sending to server\n\tget clientAttrs() {\n\t\treturn [\n\t\t\t'breadcrumb',\n\t\t\t'byteCount',\n\t\t\t'childCategories',\n\t\t\t'fileCount',\n\t\t\t'open',\n\t\t\t'subCategoryCount',\n\t\t\t'tree',\n\t\t\t'collection',\n\t\t];\n\t}\n\n\t/**\n\t * @property {object} methods - Methods for this model\n\t * @property {method} methods.create - Create category\n\t * @property {method} methods.read - Fetch category\n\t * @property {method} methods.remove - Destroy category\n\t * @property {method} methods.update - Update category\n\t *\n\t * @property {method} methods._addToCategory - Add assets to category\n\t * @property {method} methods.fetchChildren - Fetch category children\n\t * @property {method} methods.getCategoryBreadcrumbs - Fetch category breadcrumbs\n\t * @property {method} methods.getCategoryByPath - Fetch category by path string\n\t * @property {method} methods.getCategoryData - Fetch category\n\t * @property {method} methods.getCategoryDetailsData - Fetch category details data\n\t * @property {method} methods._moveToCategory - Move assets to category\n\t * @property {method} methods.setCategoryObject - Update category\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tcreate: function (opts) {\n\t\t\t\t// The server really wants this id to be passed at creation...\n\t\t\t\tthis.set('categoryid', 0, {silent: true});\n\t\t\t\treturn this.setCategoryObject(opts).then(function (id) {\n\t\t\t\t\treturn this.set(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcategoryid: id,\n\t\t\t\t\t\t},\n\t\t\t\t\t\topts,\n\t\t\t\t\t).fetch(opts);\n\t\t\t\t});\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread: function (opts) {\n\t\t\t\tvar d = new $.Deferred();\n\n\t\t\t\tthis.getCategoryData(\n\t\t\t\t\t_.extend({duplicateQueryPolicy: 'abort'}, opts),\n\t\t\t\t).then(function (category) {\n\t\t\t\t\t// TODO: See https://jira.netx.net/browse/DAM-9247\n\t\t\t\t\t// The server returns an empty category with the id of 0 when one is not found\n\t\t\t\t\tif (category.categoryid === 0) {\n\t\t\t\t\t\treturn d.reject(new Error(i18n.t('i18n.categoryNotFound')));\n\t\t\t\t\t}\n\t\t\t\t\tif (!opts.silent) {\n\t\t\t\t\t\t// Open\n\t\t\t\t\t\tthis.set(\n\t\t\t\t\t\t\t'open',\n\t\t\t\t\t\t\tthis.get('open') && this.get('children').length > 0,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\td.resolveWith(this, [category]);\n\t\t\t\t}, d.reject);\n\n\t\t\t\treturn d.promise();\n\t\t\t},\n\t\t\t/**\n\t\t\t * Destroy category\n\t\t\t * @method\n\t\t\t */\n\t\t\tremove: ['deleteCategory', 'categoryid'],\n\t\t\t/**\n\t\t\t * Update category\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tupdate: function (opts) {\n\t\t\t\treturn this.setCategoryObject(opts).then(() => {\n\t\t\t\t\t// Need the DAM to send full beans blah blah blah\n\t\t\t\t\treturn this.fetch(opts);\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Add assets to category\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\t_addToCategory: function (opts) {\n\t\t\t\treturn ['setAssetCategoryLinks', this.assetsToTransfer, this.id, true];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Fetch category children\n\t\t\t * @method\n\t\t\t */\n\t\t\tfetchChildren: ['getCategoryTree', 'id'],\n\t\t\t/**\n\t\t\t * Fetch category breadcrumbs\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetCategoryBreadcrumbs: function (opts) {\n\t\t\t\tvar cid = this.id;\n\t\t\t\treturn ['getCategoryBreadcrumbs', cid > 1 ? cid : 0];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Fetch category by path string\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetCategoryByPath: function (opts) {\n\t\t\t\tvar path = this.get('repositorydirectory').split('/');\n\t\t\t\treturn ['getCategoryByPath', path];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Fetch category\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetCategoryData: function (opts) {\n\t\t\t\tvar catId = this.id;\n\t\t\t\tif (catId == null) {\n\t\t\t\t\treturn new $.Deferred().reject(\n\t\t\t\t\t\tnew Error(\n\t\t\t\t\t\t\t'Skipping call to \"getCategoryData\". Category ID is null or undefined:',\n\t\t\t\t\t\t\tcatId,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn ['getCategoryData', catId];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Fetches additional details about a category\n\t\t\t * @method\n\t\t\t */\n\t\t\tgetCategoryDetailsData: ['getCategoryDetailsData', 'categoryid'],\n\t\t\t/**\n\t\t\t * Move assets to category\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\t_moveToCategory: function (opts) {\n\t\t\t\treturn ['setAssetCategoryLinks', this.assetsToTransfer, this.id, false];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Create category\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetCategoryObject: function (opts) {\n\t\t\t\treturn ['setCategoryObject', this.self()];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} data Data to parse\n\t * @param {object} opts Options\n\t */\n\tparseAndSave(data, opts) {\n\t\t// Use model's attribute keys to pull needed data out of `data` object\n\t\tconst catData = _.pick.apply(\n\t\t\t_,\n\t\t\t[data].concat(Object.keys(this.attributes)),\n\t\t);\n\n\t\tconst {attributeProfileId} = data;\n\n\t\t// If `attributeProfile` is null, then the user is removing the\n\t\t// attribute profile from the folder\n\t\tif (attributeProfileId === '') {\n\t\t\tthis.selectedAttributeProfile = new AttributeProfile({profileId: null});\n\t\t} else {\n\t\t\tthis.selectedAttributeProfile = new AttributeProfile({\n\t\t\t\tprofileId: attributeProfileId,\n\t\t\t});\n\t\t}\n\n\t\treturn this.save(catData, {wait: true, ...opts}).then(() => {\n\t\t\t// If attributeProfileId is undefined, we probably got here from creating\n\t\t\t// a folder where you cannot - currently - choose an attribute profile\n\t\t\tif (attributeProfileId === undefined) return;\n\n\t\t\t// If the attribute profile id is null, that means the user\n\t\t\t// removed the attribute profile from the folder\n\t\t\tif (this.selectedAttributeProfile.get('profileId') === null) {\n\t\t\t\treturn this.selectedAttributeProfile.removeAttributeProfileFromFolder(\n\t\t\t\t\tthis.id,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn this.selectedAttributeProfile.setAttributeProfileForFolder(\n\t\t\t\t\tthis.id,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * @property {object} parsers - Parsers for this model\n\t * @property {method} parsers.getCategoryBreadcrumbs - Parse fetch of category breadcrumbs\n\t * @property {method} parsers.getCategoryByPath - Parse fetch of category by path\n\t * @property {method} parsers.getCategoryDetailsData - Parse fetch of category details data\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * Fetched category breadcrumbs\n\t\t\t * @method\n\t\t\t * @param {array} data Label value objects\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetCategoryBreadcrumbs: function (data, opts) {\n\t\t\t\tthis.set('breadcrumb', _.toArray(data).reverse(), opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * Fetched category by path\n\t\t\t * @method\n\t\t\t * @param {number} id Category id\n\t\t\t * @param {object} opts Request options\n\t\t\t * @fires module:category#category:current:update\n\t\t\t * @todo Why do it with a dispatcher in the parser? Whatever called this can do that...\n\t\t\t */\n\t\t\tgetCategoryByPath: function (id, opts) {\n\t\t\t\tdispatcher.trigger('category:current:update', {categoryid: id});\n\t\t\t\t// TODO does getCategoryPath belong on the collection?\n\t\t\t\t// This parser wherever it winds up living needs to call this.fetch()\n\t\t\t\t// and add the result to the categories collection\n\t\t\t},\n\t\t\t/**\n\t\t\t * Sets additional attributes about the category on the model\n\t\t\t * @method\n\t\t\t * @param {object} data Category details data\n\t\t\t * @param {object} opts Request options\n\t\t\t * @example {\n\t\t\t * \"categoryId\": 3,\n\t\t\t * \"fileCount\": 0,\n\t\t\t * \"subCategoryCount\": 0,\n\t\t\t * \"byteCount\":\"0.0 bytes\"\n\t\t\t * }\n\t\t\t */\n\t\t\tgetCategoryDetailsData: function (data, opts) {\n\t\t\t\t// This call returns 'categoryId' instead of 'categoryid'.\n\t\t\t\t// Anyway, we know our id. This call should not be allowed to change it.\n\t\t\t\tthis.set(_.omit(data, 'categoryId', 'categoryid'), opts);\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attrs Category attributes\n\t * @param {object} opts Category options\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\t// This is related to a circular reference somewhere\n\t\t// Anytime you find that a require at the top results in an empty object - this is why\n\t\t// https://stackoverflow.com/questions/37127083/can-two-files-have-each-other-as-dependencies-in-javascript-when-using-webpack\n\t\t// AssetModel = require('@netx/core-asset/models/asset').default;\n\n\t\tsuper(attrs, opts);\n\n\t\t// Debounce these methods\n\t\tthis.assetsAddedToCategory = _.debounce(this.assetsAddedToCategory, 50);\n\t\tthis.childAdded = _.debounce(this.childAdded, 100);\n\t\tthis.childRemoved = _.debounce(this.childRemoved, 100);\n\t\tthis.childrenChanged = _.debounce(this.childrenChanged, 100);\n\t\tthis.close = _.debounce(this.close, 100);\n\t\tthis.open = _.debounce(this.open, 100);\n\n\t\t// Member variable to hold up-to-date list of all attribute profiles\n\t\tthis.attributeProfiles = new AttributeProfiles();\n\n\t\t// Need to defer so everything is done initing\n\t\t_.defer(\n\t\t\t_.bind(function () {\n\t\t\t\t// If a tree was not already set, try and set one\n\t\t\t\tif (!this.has('tree')) {\n\t\t\t\t\tthis.set('tree', opts.tree || this.collection);\n\t\t\t\t}\n\t\t\t\tvar tree = this.get('tree');\n\t\t\t\tif (tree) {\n\t\t\t\t\t// This is a bit backwards as we are storing the collection on the model and also belone to the collection we are storing\n\t\t\t\t\t// We always maintain a reference to our tree until we are totally removed\n\t\t\t\t\t// This way we do not errounously get garbage collected just because we left another collection (so long as we are in the tree)\n\t\t\t\t\tthis.addCollectionReference(this.get('tree'));\n\t\t\t\t}\n\t\t\t}, this),\n\t\t);\n\n\t\t// Set childCategories collection\n\t\tif (!this.has('childCategories')) {\n\t\t\tthis.set(\n\t\t\t\t'childCategories',\n\t\t\t\tnew CategoryTreeNodesCollection(\n\t\t\t\t\tthis.get('open') ? this.children() : [],\n\t\t\t\t\t{categoryid: this.id},\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(\n\t\t\tthis,\n\t\t\t'sync',\n\t\t\t_.debounce(function () {\n\t\t\t\t// If it was open, re-open\n\t\t\t\tthis.isOpen() && this.open();\n\t\t\t}, 50),\n\t\t);\n\n\t\t// Child ids have changed\n\t\tthis.listenTo(\n\t\t\tthis,\n\t\t\t'change:children',\n\t\t\t_.debounce(function () {\n\t\t\t\tif (this.get('children').length === 0) {\n\t\t\t\t\tthis.close();\n\t\t\t\t}\n\t\t\t}, 50),\n\t\t);\n\n\t\t// Category successfully edited/created\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t'category:edit:success',\n\t\t\tfunction (model, isNew, newParent) {\n\t\t\t\tif (model instanceof Category) {\n\t\t\t\t\t// Parent id of the updated category\n\t\t\t\t\tvar parentId = parseInt(model.get('parentid'));\n\t\t\t\t\tif (newParent && parentId === customConfig.categoryid) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// If a different model instance of the same DAM category has been edited, grab those changes.\n\t\t\t\t\tif (model.id == this.id && model !== this) {\n\t\t\t\t\t\tthis.updated(model);\n\t\t\t\t\t}\n\t\t\t\t\t// Category successfully added to another - check if it was added to us\n\t\t\t\t\telse if (isNew && parentId == this.id) {\n\t\t\t\t\t\tthis.childAdded(model);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// The number of children in this category have changed\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t'category:children:changed',\n\t\t\tfunction (parentid, cat) {\n\t\t\t\tparentid = parseInt(parentid);\n\t\t\t\t// If parentid is \"top level\" - that should be sorted out by the tree collection\n\t\t\t\tif (parentid === this.id && parentid !== customConfig.categoryid) {\n\t\t\t\t\tthis.childrenChanged({duplicateQueryPolicy: 'merge'});\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// A child has been removed from category\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t'category:children:removed',\n\t\t\tfunction (parentid, cat) {\n\t\t\t\tparentid = parseInt(parentid);\n\t\t\t\tif (parentid === this.id && parentid !== customConfig.categoryid) {\n\t\t\t\t\tcat && this.childRemoved(cat.id, {duplicateQueryPolicy: 'merge'});\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// Category successfully deleted\n\t\tthis.listenTo(dispatcher, 'category:delete:success', function (cat) {\n\t\t\t// Check if it is one of our children\n\t\t\tif (this.get('children').indexOf(cat.id) > -1) {\n\t\t\t\tthis.childRemoved(cat.id, {duplicateQueryPolicy: 'merge'});\n\t\t\t}\n\t\t});\n\n\t\t// Category was moved\n\t\t// We need to refetch as our ancestors, path and parentid have changed\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t'category:move:success',\n\t\t\tfunction (cat, oldParentId, newParentId) {\n\t\t\t\t// This should never happen - moving the \"top level\" category - but just in case\n\t\t\t\tif (cat && cat.id === this.id && cat.id !== customConfig.categoryid) {\n\t\t\t\t\tthis.moved();\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// Assets have been added to this category\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t'asset:added:to:category asset:moved:to:category',\n\t\t\tfunction (assetId, catId) {\n\t\t\t\tcatId === this.id && this.assetsAddedToCategory();\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * A model attribute we are storing is not a subCollection but in this case is a collection reference - do not want to get those mixed up\n\t * @override\n\t */\n\tset() {\n\t\t// TODO: Fix this issue - this is dirty dirty\n\t\treturn Backbone.ES6Model.prototype.set.apply(this, arguments);\n\t}\n\t/**\n\t * Only garbage collect if we are no longer referenced in the tree\n\t * @override\n\t */\n\tgarbageCollect() {\n\t\tvar tree = this.get('tree');\n\t\tif (!tree || !tree.get(this.id) || tree.get(this.id) !== this) {\n\t\t\tsuper.garbageCollect();\n\t\t}\n\t}\n\n\t/**\n\t * Fetches attribute profile name/ID for the attribute profile attached\n\t * to the category\n\t */\n\tgetAttributeProfile() {\n\t\treturn this.attributeProfiles\n\t\t\t.getAttributeProfileForFolder(this.id)\n\t\t\t.then(\n\t\t\t\t(attributeProfile) =>\n\t\t\t\t\t(this.selectedAttributeProfile = attributeProfile),\n\t\t\t);\n\t}\n\n\t/**\n\t * Add assets to category\n\t * @method\n\t * @param {array} assets Asset ids\n\t */\n\taddToCategory(assets) {\n\t\tthis.assetsToTransfer = assets;\n\t\treturn this._addToCategory();\n\t}\n\n\t/**\n\t * @method\n\t */\n\tassetsAddedToCategory() {\n\t\t// We can be pretty sure that we now have contents (if we did not already)\n\t\tthis.set('hasContents', true);\n\t}\n\n\t/**\n\t * Check our permissionMatrix for whether a particular named bit is set.\n\t * @method\n\t * @param {string} perm One of the permissions in {module:asset/properties/assetPermissions#matrixNames}\n\t * @returns {mixed} returns true or false, or undefined (which is falsy) if the argument is undefined.\n\t */\n\t// DEVNOTE:\n\t// Until we have a better include/export scheme, we won't know whether asset or category inits first,\n\t// so we can't define one of these in terms of the other at startup.\n\t//\n\t// So instead of doing this:\n\t// allows: module:asset/models/asset.prototype.allows\n\t//\n\t// We must use a wrapper at run-time, like so:\n\tallows() {\n\t\treturn AssetModel.prototype.allows.apply(this, arguments);\n\t}\n\n\t/**\n\t * Child category added\n\t * @method\n\t * @param {Netx.Models.Category} cat Category\n\t * @param {object} opts Request options\n\t */\n\tchildAdded(cat, opts) {\n\t\tthis.fetch(_.extend({duplicateQueryPolicy: 'merge'}, opts));\n\t}\n\t/**\n\t * Child removed/deleted\n\t * @method\n\t * @param {number} catid Category id\n\t * @param {object} opts Request options\n\t */\n\tchildRemoved(catid, opts) {\n\t\t// One of our children was deleted!\n\t\t// 1) update fast!\n\t\tthis.set({children: _.without(this.get('children'), catid)});\n\t\t// 2) sync any/all other changes from server.\n\t\tthis.fetch(_.extend({duplicateQueryPolicy: 'merge'}, opts));\n\t}\n\t/**\n\t * Category children have changed\n\t * @method\n\t * @param {object} opts Request options\n\t */\n\tchildrenChanged(opts) {\n\t\t// Let the tree handle this if there is one to be had\n\t\tthis.fetch(opts).then(\n\t\t\t_.bind(function () {\n\t\t\t\t// Run through tree if we have one\n\t\t\t\tvar tree = this.get('tree'),\n\t\t\t\t\tchildren = this.get('children'),\n\t\t\t\t\tfetchChildren = false;\n\n\t\t\t\tif (tree) {\n\t\t\t\t\t// Check if we have any of our children in the tree\n\t\t\t\t\tfor (var i = 0, c = children.length; i < c; i++) {\n\t\t\t\t\t\tif (tree.get(children[i])) {\n\t\t\t\t\t\t\tfetchChildren = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfetchChildren &&\n\t\t\t\t\t\ttree.fetchChildren(this.id).then(\n\t\t\t\t\t\t\t_.bind(function () {\n\t\t\t\t\t\t\t\tthis.isOpen() && this.open();\n\t\t\t\t\t\t\t}, this),\n\t\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}, this),\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @return {Netx.Models.Category} Cloned category\n\t */\n\tclone(tree) {\n\t\ttree = tree || this.get('tree');\n\t\t// Need this to be real clean\n\t\treturn new this.constructor(\n\t\t\t_.extend({}, _.omit(this.attributes, 'childCategories', 'tree'), {\n\t\t\t\tchildCategories: new CategoryTreeNodesCollection(\n\t\t\t\t\tthis.get('childCategories').map(function (m) {\n\t\t\t\t\t\treturn m.clone(tree);\n\t\t\t\t\t}, this),\n\t\t\t\t\t{categoryid: this.id},\n\t\t\t\t),\n\t\t\t}),\n\t\t\t{tree: tree},\n\t\t);\n\t}\n\n\t/**\n\t * Close category\n\t * Manage the state of this category in the category tree\n\t * @method\n\t * @param {object} opts Request options\n\t */\n\tclose(opts) {\n\t\topts = opts || {};\n\t\t// Set on model\n\t\tthis.set('open', false);\n\n\t\t// Deprecate - use change:open\n\t\tthis.trigger('close', this);\n\n\t\t// Empty collection so our sub categories are not in the DOM\n\t\tthis.get('childCategories').reset([]);\n\n\t\tvar tree = this.get('tree');\n\t\t// Close all children if desired\n\t\tif (tree && opts.recursive) {\n\t\t\t_.each(\n\t\t\t\tthis.get('children'),\n\t\t\t\tfunction (childId) {\n\t\t\t\t\tvar child = tree.get(childId);\n\t\t\t\t\tchild && child.close(opts);\n\t\t\t\t},\n\t\t\t\tthis,\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @return {number} Depth\n\t */\n\tdepth() {\n\t\tif (this.id == customConfig.categoryid) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (this.get('parentid') == customConfig.categoryid) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tvar parentCat = this.parent();\n\t\treturn !parentCat && this.get('ancestors')\n\t\t\t? this.get('ancestors').length || 1\n\t\t\t: parentCat.depth() + 1;\n\t}\n\n\t/*\n\t * Queries the DAM for statistics about the category's contents.\n\t * It returns a promise to categoryDetailsData model.\n\t * @method\n\t * @param {object} opts Fetch options\n\t */\n\tgetDetails(opts) {\n\t\tthis.detailsData = this.detailsData || new CategoryDetailsData();\n\t\tthis.detailsData.set({categoryId: this.id});\n\t\treturn this.detailsData.fetch(opts);\n\t}\n\n\t/**\n\t * Returns a direct link url\n\t * @method\n\t * @return {string} Direct link\n\t */\n\tgetDirectLink() {\n\t\treturn [location.origin, location.pathname, '#category/', this.id].join('');\n\t}\n\n\t/**\n\t * Query this category's position in the overall category tree structure\n\t * @method\n\t * @param {number} id Category id\n\t * @param {boolean} Is child of\n\t */\n\tisChildOf(id) {\n\t\treturn this.get('parentid') == id;\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean} Open\n\t */\n\tisOpen() {\n\t\treturn this.get('open') ? true : false;\n\t}\n\n\t/**\n\t * Query this category's position in the overall category tree structure\n\t * @method\n\t * @param {number} id Category id\n\t * @return {boolean} Is parent of\n\t */\n\tisParentOf(id) {\n\t\treturn this.get('children').indexOf(id) > -1;\n\t}\n\n\t/**\n\t * Move assets to this category\n\t * @method\n\t * @param {array} assets Asset ids\n\t */\n\tmoveToCategory(assets) {\n\t\t// TODO: make client model attribute\n\t\tthis.assetsToTransfer = assets;\n\t\treturn this._moveToCategory();\n\t}\n\n\t/**\n\t * Our category was moved to another\n\t * @method\n\t */\n\tmoved() {\n\t\t// Refetch us\n\t\tthis.fetch({duplicateQueryPolicy: 'merge'}).then(\n\t\t\t_.bind(function () {\n\t\t\t\t// Run through tree\n\t\t\t\tvar tree = this.get('tree'),\n\t\t\t\t\tchildren = this.get('children'),\n\t\t\t\t\tfetchChildren = false;\n\n\t\t\t\tif (tree) {\n\t\t\t\t\tfor (var i = 0, c = children.length; i < c; i++) {\n\t\t\t\t\t\tif (tree.get(children[i])) {\n\t\t\t\t\t\t\tfetchChildren = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfetchChildren &&\n\t\t\t\t\t\ttree.fetchChildren(this.id).then(\n\t\t\t\t\t\t\t_.bind(function () {\n\t\t\t\t\t\t\t\tthis.isOpen() && this.open();\n\t\t\t\t\t\t\t}, this),\n\t\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}, this),\n\t\t);\n\t}\n\n\t/**\n\t * Open category\n\t * Manage the state of this category in the category tree\n\t * @param {object} opts Request options\n\t */\n\topen(opts) {\n\t\topts = opts || {};\n\n\t\t// Set on model\n\t\tthis.set('open', true);\n\t\t// Deprecate - use change:open\n\t\tthis.trigger('open', this);\n\n\t\tlet tree = this.get('tree');\n\n\t\tif (!tree && this.collection instanceof CategoryTreeNodesCollection) {\n\t\t\ttree = this.collection;\n\t\t}\n\n\t\t// Defer so that our views can respond to this change before we start shoving sub categories down its throat\n\t\t_.defer(() => {\n\t\t\tconst childCategories = this.get('childCategories');\n\t\t\tconst empty = !childCategories || childCategories.length === 0;\n\t\t\tlet childrenUpdated = false;\n\t\t\tlet p;\n\n\t\t\t// Set children if necessary\n\t\t\tif (empty) {\n\t\t\t\tp = this.children();\n\t\t\t\tp.then(function (children) {\n\t\t\t\t\t// Use reset or we get an ungdoly amount of add events in the child view code\n\t\t\t\t\tchildCategories.reset(children);\n\t\t\t\t\tchildrenUpdated = true;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// Check that we differ at all - otherwise our child models should be updating to their own children changed events\n\t\t\t\tlet diff = _.difference(\n\t\t\t\t\tthis.get('children'),\n\t\t\t\t\tchildCategories.pluck('categoryid'),\n\t\t\t\t);\n\t\t\t\tif (!diff.length) {\n\t\t\t\t\tdiff = _.difference(\n\t\t\t\t\t\tchildCategories.pluck('categoryid'),\n\t\t\t\t\t\tthis.get('children'),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (diff.length) {\n\t\t\t\t\tp = this.children();\n\t\t\t\t\tp.then(function (children) {\n\t\t\t\t\t\tchildCategories.set(children);\n\t\t\t\t\t\tchildrenUpdated = true;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.when(p).then(function () {\n\t\t\t\t// open any/all children (of this category) present in this.get('tree')\n\t\t\t\tif (tree && opts.recursive) {\n\t\t\t\t\t_.each(\n\t\t\t\t\t\tthis.get('children'),\n\t\t\t\t\t\tfunction (childId) {\n\t\t\t\t\t\t\tvar child = tree.get(childId);\n\t\t\t\t\t\t\tchild && child.open(opts);\n\t\t\t\t\t\t},\n\t\t\t\t\t\tthis,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t// If there are any children that should be open - open them again (basically put their childView collection models back)\n\t\t\t\t\tchildCategories.each(function (cat) {\n\t\t\t\t\t\tcat.get('open') && cat.open();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * List all (advanced search)\n\t * @method\n\t * @return {Netx.Collections.SearchRules_assets}\n\t */\n\tsearchRules_listAll() {\n\t\t// Build search rules\n\t\tvar searchRules = new AssetSearhRulesCollection([\n\t\t\t{\n\t\t\t\telementType: 23,\n\t\t\t\telementValue1: this.id,\n\t\t\t\telementSubType1: 0,\n\t\t\t},\n\t\t]);\n\t\treturn searchRules;\n\t}\n\n\t/**\n\t * Return an AssetSet model describing this category.\n\t * @method\n\t * @return {module:asset/models/assetSet} Asset set\n\t */\n\ttoAssetSet() {\n\t\treturn new AssetSetModel({\n\t\t\ttype: assetSetTypes.category,\n\t\t\tids: [this.id],\n\t\t\tmodels: [this],\n\t\t\tlabel: this.get('name'),\n\t\t});\n\t}\n\n\t/**\n\t * Another instance of this category has been updated\n\t * @method\n\t * @param {Netx.Collections.Category} cat Category\n\t */\n\tupdated(cat) {\n\t\t// Do not include the childCategories reference - we will get a clean new one\n\t\tthis.set(_.omit(cat.attributes, 'childCategories', 'tree'));\n\t}\n\n\t// children(), parent() and depth() presume that this.get('tree') is a general\n\t// object cache; that's true for the category tree objects, but not\n\t// true for a freshly created object.\n\t// TODO: implement a proper object cache, then query these through it.\n\t/**\n\t * @method\n\t * @return {array} Children\n\t */\n\tchildren() {\n\t\tvar tree = this.get('tree');\n\n\t\t// Tree safeguard\n\t\tif (!tree && this.collection instanceof CategoryTreeNodesCollection) {\n\t\t\ttree = this.collection;\n\t\t}\n\n\t\tvar d = new $.Deferred(),\n\t\t\tself = this;\n\n\t\tif (!tree || !this.get('children').length) {\n\t\t\td.resolve([]);\n\t\t} else {\n\t\t\tvar children = _.compact(\n\t\t\t\t_.map(\n\t\t\t\t\tthis.get('children'),\n\t\t\t\t\tfunction (catid) {\n\t\t\t\t\t\treturn tree.get(catid);\n\t\t\t\t\t},\n\t\t\t\t\tthis,\n\t\t\t\t),\n\t\t\t);\n\n\t\t\td.resolve(children);\n\t\t}\n\n\t\treturn d.promise();\n\t}\n\n\t/**\n\t * @method\n\t * @return {Netx.Models.Category} Parent\n\t */\n\tparent() {\n\t\tvar tree = this.get('tree');\n\t\treturn tree ? tree.get(this.get('parentid')) : undefined;\n\t}\n\n\t/**\n\t * @method\n\t * @return {array} Parents\n\t */\n\tparents(arr) {\n\t\tvar tree = this.get('tree');\n\n\t\tarr = arr || [];\n\n\t\tvar parentid = this.get('parentid');\n\t\tif (tree && parentid != customConfig.categoryid) {\n\t\t\tvar parent = tree.get(parentid);\n\t\t\tarr.push(parent);\n\t\t\treturn parent.parents(arr);\n\t\t}\n\t\treturn arr;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Category';\n\t}\n}\n","/**\n * @class\n */\nimport Base from 'netxcore@netx/core-category/models/category';\n\nimport customConfig from '../config';\n\nexport default class Category extends Base {\n\t/** @override */\n\tget clientAttrs() {\n\t\treturn super.clientAttrs.concat(['truncated', 'crumbOverflow']);\n\t}\n\n\t/** @override */\n\tget parsers() {\n\t\treturn {\n\t\t\t...super.parsers,\n\t\t\t/**\n\t\t\t * Fetched category breadcrumbs\n\t\t\t * calculates breadcrumb and overflow menu\n\t\t\t * @override\n\t\t\t * @param {array} data Return of the getCategoryBreadcrumbs call (label value objects)\n\t\t\t */\n\t\t\tgetCategoryBreadcrumbs(data, opts) {\n\t\t\t\t// TODO: should a category *model* be creating bread crumbs and even know about the DOM?\n\t\t\t\t// Answer: no\n\t\t\t\t/*\n\t\t\t\t\tmeasuring the width of crumbs by dipping them in the dom\n\t\t\t\t*/\n\n\t\t\t\tvar maxWidth = 135,\n\t\t\t\t\tallCrumbs = _.toArray(data).reverse(),\n\t\t\t\t\tuseCrumbs = [],\n\t\t\t\t\toverflowCrumbs = [],\n\t\t\t\t\tcrumb,\n\t\t\t\t\tcrumbWidth = 0,\n\t\t\t\t\tadj = 10;\n\t\t\t\tthis.set('truncated', false);\n\n\t\t\t\t// THEM-1459 - breadcrumbs stop at the portal categroy setting\n\t\t\t\tvar rootCrumb = _.findWhere(allCrumbs, {\n\t\t\t\t\t\tvalue: customConfig.categoryid.toString(),\n\t\t\t\t\t}),\n\t\t\t\t\trootIdx = (rootCrumb && _.indexOf(allCrumbs, rootCrumb)) || 0;\n\n\t\t\t\t// top level category is not passed back with getCategoryBreadcrumbs\n\t\t\t\t// although it can be set as a portal category, shows up as \"Folders\"\n\t\t\t\tif (customConfig.categoryid > 1) {\n\t\t\t\t\trootIdx++;\n\t\t\t\t}\n\t\t\t\t// cut off everything above the portal root category\n\t\t\t\tallCrumbs = allCrumbs.slice(rootIdx);\n\n\t\t\t\twhile (allCrumbs.length) {\n\t\t\t\t\tcrumb = allCrumbs.pop();\n\n\t\t\t\t\t// once you start down the overflow path, forever will it dominate your destiny, consume you it will\n\t\t\t\t\tif (overflowCrumbs.length > 0) {\n\t\t\t\t\t\toverflowCrumbs.push(crumb);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\t// create element, hidden and possitioned off screen\n\t\t\t\t\tvar $c = $('<div>', {class: 'invisible crumb-builder'}),\n\t\t\t\t\t\t// inject crumb html - if crumbs had their own templates we could grab that\n\t\t\t\t\t\thtml =\n\t\t\t\t\t\t\t'<span class=\"separator\">/</span><a href=\"#category/' +\n\t\t\t\t\t\t\tcrumb.value +\n\t\t\t\t\t\t\t'\" class=\"crumb primary-color-hover\">' +\n\t\t\t\t\t\t\tcrumb.label +\n\t\t\t\t\t\t\t'</a>';\n\t\t\t\t\t$c.append(html);\n\t\t\t\t\t// put into dom\n\t\t\t\t\t$('body').append($c);\n\n\t\t\t\t\t// if there's room use it, otherwise add to overflow dropdown\n\t\t\t\t\t// at least one || it fits\n\t\t\t\t\tif (\n\t\t\t\t\t\tuseCrumbs.length == 0 ||\n\t\t\t\t\t\tcrumbWidth + $c.width() + adj < maxWidth\n\t\t\t\t\t) {\n\t\t\t\t\t\tcrumbWidth += $c.width() + adj;\n\t\t\t\t\t\tuseCrumbs.unshift(crumb);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.set('truncated', true);\n\t\t\t\t\t\toverflowCrumbs.push(crumb);\n\t\t\t\t\t}\n\n\t\t\t\t\t// cleanup\n\t\t\t\t\t$c.remove();\n\t\t\t\t}\n\n\t\t\t\tthis.set({crumbOverflow: overflowCrumbs});\n\n\t\t\t\t// render is triggered on change:breadcrumb, need to render at times when useCrumbs do not change\n\t\t\t\tthis.set({breadcrumb: [{something: 'nothing'}]}, {silent: true});\n\t\t\t\tthis.set({breadcrumb: useCrumbs});\n\t\t\t},\n\t\t};\n\t}\n}\n","export default {};\n","import config from 'netxcore@netx/core-cms/config';\n\nObject.assign(config, {\n\tanalytics: {\n\t\tgoogle: {\n\t\t\tenabled: false,\n\t\t\ttrackingId: '',\n\t\t},\n\t},\n\tcollections: {\n\t\tmaxNumberDisplay: 999,\n\t},\n\tcopyright: 'NetX',\n\ttagline: 'Welcome',\n});\n\nexport default config;\n","/**\n * This class defines CMS-editable action objects as Netx.Models. The current client-side action object is not yet a Netx.Model, but\n * it's expexted that either we will refactor that to create a proper Netx.Models.Action model, or else we will define how to\n * cross-convert between this model and that object.\n * in CMS v1.0, we believe this model will only be used to create navigation elements.\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport {links as cmsLinks} from '../properties/cms';\nimport {RegisterLegacyAction} from '@netx/core/legacyActionManager';\n\nexport default class CMSAction extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * The unique ID for this model\n\t * @type {string}\n\t */\n\tget idAttribute() {\n\t\treturn 'event';\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {string} defaults.event - non-mutable DAM-unique key, a.k.a. name of the event triggered when action is clicked. Format is cms:(portalId):(uniqueID)\n\t * @property {string} defaults.portalId - portal for this action\n\t * @property {number} defaults.userId - owner/creator of this action\n\t * @property {string} defaults.modDate - auto-set by server on successful update\n\t * @property {string} defaults.label - human-readable string displayed in the menu; also used by admin UI as human-readable ID. possibly processed by i18next\n\t * @property {number} defaults.userLevel - Minimum user level to enable this action\n\t * @property {string} defaults.link - an URL that a menu action links to. This can be either absolute (a complete URL) or relative (an internal path) or just a route-fragment (beginning with '#').\n\t * @property {string} defaults.contentLabel - for type asset, need label and asset name\n\t * @property {string} defaults.link \t - an URL that a menu action links to. This can be either absolute (a complete URL) or relative (an internal path) or just a route-fragment (beginning with '#').\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t// event: undefined,\n\t\t\tportalId: 0,\n\t\t\tuserId: 0,\n\t\t\tmodDate: '',\n\t\t\tlabel: '',\n\t\t\tuserLevel: 0,\n\t\t\tlink: '',\n\t\t\tcontentLabel: '',\n\t\t\ttype: '',\n\t\t};\n\t}\n\n\t/**\n\t * Array of model attributes that are client specific and should never be sent to the server\n\t * @type {Array}\n\t */\n\t// clientAttrs: ['userId'], // TODO: it will be safe to send userId again after DAM-6795 is fixed ... not sure when it'll be necessary.\n\t/**\n\t * Array of attributes that are stored on the model in the \"goo\" property as stringified JSON\n\t * @type {Array}\n\t */\n\tget gooAttrs() {\n\t\treturn ['label', 'userLevel', 'link', 'contentLabel', 'type'];\n\t}\n\n\t/**\n\t * RPC methods:\n\t * @rpcs\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/** @method create */\n\t\t\tcreate: [\n\t\t\t\t'setAction',\n\t\t\t\tfunction () {\n\t\t\t\t\treturn this.self();\n\t\t\t\t},\n\t\t\t],\n\t\t\t/** @method fetch */\n\t\t\tread: ['getActionForPortal', 'event', 'portalId'],\n\t\t\t/** @method save */\n\t\t\tupdate: [\n\t\t\t\t'setAction',\n\t\t\t\tfunction () {\n\t\t\t\t\treturn this.self();\n\t\t\t\t},\n\t\t\t],\n\t\t\t/** @method destroy */\n\t\t\tremove: ['deleteActionForPortal', 'event', 'portalId'],\n\t\t};\n\t}\n\n\t/** @member */\n\tparse(result, opts) {\n\t\tif (_.isObject(result)) {\n\t\t\tthis.set(this.unpackAttrs(result), opts);\n\t\t\treturn this.attributes;\n\t\t} else if (_.isNumeric(result)) {\n\t\t\t// This is the server-side unique id. We don't use it client-side, but it doesn't hurt.\n\t\t\tthis.set({id: result});\n\t\t}\n\t}\n\n\t/**\n\t * Parses link attribute to get the type of link and it's id(asset, category, page, or just the link itself if it's a url/route)\n\t * @param {object} opts opts.edit when true means we want to return values instead of labels\n\t * @return {object} returns the type and contentId to be made available to the template\n\t */\n\tparseLink(opts) {\n\t\topts = opts || {};\n\t\tvar link = this.get('link'),\n\t\t\tlinkType,\n\t\t\tcontentId;\n\n\t\t// Parse link attribute and sets the type and contentId for use in the template\n\t\tif (this.get('type') === 'action') {\n\t\t\tlinkType = 'action';\n\t\t\tcontentId = opts.edit ? this.get('event') : this.get('event');\n\t\t} else if (this.get('type') === 'url' || _.isURL(link)) {\n\t\t\t// see isURL() in core/js/netx.js -- actually quite complicated.\n\t\t\tlinkType = 'url';\n\t\t\tcontentId = link;\n\t\t} else if (~link.indexOf('#asset')) {\n\t\t\tlinkType = 'asset';\n\t\t\tcontentId = opts.edit ? link.match(/#asset\\/(.*)/)[1] : this.get('link');\n\t\t} else if (~link.indexOf('#category')) {\n\t\t\tlinkType = 'category';\n\t\t\tcontentId = opts.edit\n\t\t\t\t? link.match(/#category\\/(.*)/)[1]\n\t\t\t\t: this.get('link');\n\t\t} else if (~link.indexOf('#page')) {\n\t\t\tlinkType = 'page';\n\t\t\tcontentId = opts.edit ? link.match(/#page\\/(.*)/)[1] : this.get('link');\n\t\t} else {\n\t\t\tlinkType = 'page';\n\t\t\tcontentId = link;\n\t\t}\n\n\t\t// so not to break current links\n\t\tif (!this.get('type')) {\n\t\t\tthis.set({type: linkType});\n\t\t}\n\n\t\t// Returns object with type and contentId to be made available to the template\n\t\treturn {\n\t\t\ttype: linkType,\n\t\t\tcontentId: contentId,\n\t\t};\n\t}\n\n\t/**\n\t * Register this action in the global actions list.\n\t */\n\tregister() {\n\t\tRegisterLegacyAction(this.attributes, {silent: true});\n\t}\n\n\t/**\n\t * Test whether a link action duplicates any other link action in this.collection.\n\t * (If this.collection is undefined, return true.)\n\t * @param {string} link the link to test\n\t */\n\tisUniqueLink(link) {\n\t\tif (!this.collection) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If no link provided, use this model's property.\n\t\tlink = link || this.get('link');\n\n\t\treturn !this.collection.find(function (m) {\n\t\t\treturn m.id != this.id && m.get('link') == link.trim();\n\t\t}, this);\n\t}\n\n\t// instance version of class method MakeLink:\n\tmakeLink() {\n\t\treturn this.constructor.MakeLink.apply(this, arguments);\n\t}\n\n\t/**\n\t * MakeLink: opposite of parseLink: given type + (id or URL), return a browser-compatible link.\n\t * @method\n\t * @static\n\t * @param {string} type type of link (from cms/properties/cms#links.types)\n\t * @param {string} contentId object ID, or raw URL for links of type 'url'\n\t */\n\tstatic MakeLink(type, contentId) {\n\t\tconst linkTypes = cmsLinks.types;\n\t\tswitch (type) {\n\t\t\tcase linkTypes.action:\n\t\t\t\treturn contentId;\n\t\t\tcase linkTypes.asset:\n\t\t\t\treturn '#asset/' + contentId;\n\t\t\tcase linkTypes.category:\n\t\t\t\treturn '#category/' + contentId;\n\t\t\tcase linkTypes.url:\n\t\t\t\treturn contentId;\n\t\t\tcase linkTypes.page:\n\t\t\t\treturn '#page/' + contentId;\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Link type \"' + type + '\" did not match possible types',\n\t\t\t\t);\n\t\t}\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CMSAction';\n\t}\n}\n","/**\n * @class\n */\nimport Base from 'netxcore@netx/core-cms/models/CMSAction';\nimport {currentPortalPages} from '@netx/core-cms/singletons/currentPortalPages';\n\nexport default class CMSAction extends Base {\n\t/** @override */\n\tparse(result, opts) {\n\t\tif (!_.isObject(result) && _.isNumeric(result)) {\n\t\t\t// This is the server-side unique id. We don't use it client-side, but it doesn't hurt.\n\t\t\tthis.set({id: result});\n\t\t\treturn;\n\t\t}\n\n\t\tthis.set(this.unpackAttrs(result), opts);\n\n\t\t// the dam returns link, menuview works on route\n\t\t// the dam returns page number, clean works on slug\n\t\tconst type = this.get('type');\n\t\tif (type == 'page') {\n\t\t\t// if it's a page, set the route to the page slug\n\t\t\tconst pageId = this.get('link').match(/#page\\/(.*)/)[1];\n\t\t\tconst page = currentPortalPages.get(pageId);\n\t\t\tif (page) {\n\t\t\t\tconst slug = page.get('slug');\n\t\t\t\tthis.set('route', `page/${slug}`);\n\t\t\t}\n\t\t} else if (type == 'url') {\n\t\t\t// if it's a url, when the route ends up an empty string it routes to #\n\t\t\t// instead of following the 'link' attribute\n\t\t\tthis.set('route', null);\n\t\t} else {\n\t\t\t// category or asset\n\t\t\tthis.set('route', this.get('link'));\n\t\t}\n\n\t\t// register in global namespace so it can actually act as an actionable action\n\t\tthis.register();\n\n\t\treturn this.attributes;\n\t}\n}\n","/**\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport AssetModel from '@netx/core-asset/models/asset';\nimport CartAssetsCollection from '@netx/core-cart/collections/cartAssets';\nimport CategoryModel from '@netx/core-category/models/category';\nimport CategoryAssetsCollection from '@netx/core-category/collections/categoryAssets';\nimport CategoriesCollection from '@netx/core-category/collections/categories';\n\nexport default class CMSBlock extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t// id: 0, // DO NOT default the idAttribute. .isNew() will give false negatives if you do.\n\t\t\t/** @property {number} defaults.userId\t\t- Creator/owner of the page */\n\t\t\tuserId: 0,\n\t\t\t/** @property {string} defaults.modDate\t\t- Set by server on successful update */\n\t\t\tmodDate: '',\n\t\t\t/** @property {array} \tdefaults.assets \t\t\t-- server-side array of asset ids for the assets in this block */\n\t\t\tassetIds: [],\n\t\t\t/** @property {number} defaults.pageId\t\t\t\t- id of parent page */\n\t\t\tpageId: 0,\n\t\t\t/** @property {string} defaults.type\t\t\t\t- type of block (html, asset, category, carousel, etc -- see cms/properties/cms#blocks.types */\n\t\t\ttype: '',\n\n\t\t\t// block display options\n\t\t\t/** @property {boolean} defaults.buttonDownload */\n\t\t\tbuttonDownload: false,\n\t\t\t/** @property {boolean} defaults.buttonCart */\n\t\t\tbuttonCart: false,\n\t\t\t/** @property {string} defaults.linkUrl */\n\t\t\tlinkUrl: '',\n\t\t\t/** @property {string} defaults.linkTitle */\n\t\t\tlinkTitle: '',\n\t\t\t/** @property {boolean} defaults.displayAssetName */\n\t\t\tdisplayAssetName: '0',\n\t\t\t/** @property {string} defaults.imageSize */\n\t\t\timageSize: 'thumb',\n\t\t\t/** @property {string} defaults.imageSize */\n\t\t\titemImageSize: 'thumb',\n\t\t\t/** @property {string} defaults.listTitle */\n\t\t\tlistTitle: '',\n\t\t\t/** @property {boolean} defaults.listButtonDownload */\n\t\t\tlistButtonDownload: false,\n\t\t\t/** @property {boolean} defaults.listButtonCart */\n\t\t\tlistButtonCart: false,\n\t\t\t/** @property {boolean} defaults.displayListItemName */\n\t\t\tdisplayListItemName: false,\n\n\t\t\t/** @property {string} defaults.html\t\t\t\t\t- text content relevant to the block type (if any) */\n\t\t\thtml: '',\n\t\t\t/** @property {array} \tdefaults.contentIds\t\t- object IDs relevant to the type (if any) */\n\t\t\tcontentIds: [],\n\t\t\t/** @property {array} \tdefaults.contentLabels\t\t- labels of objects relevant to the type (if any) */\n\t\t\tcontentLabels: [],\n\t\t};\n\t}\n\n\t/**\n\t * list of attributes to convert to pack into goo instead of transmitting directly:\n\t * @see packAttrs\n\t * @see unpackAttrs\n\t * @property {array}\n\t */\n\tget gooAttrs() {\n\t\treturn [\n\t\t\t'type',\n\t\t\t'html',\n\t\t\t'contentIds',\n\t\t\t'contentLabels',\n\t\t\t'buttonDownload',\n\t\t\t'buttonCart',\n\t\t\t'linkUrl',\n\t\t\t'linkTitle',\n\t\t\t'imageSize',\n\t\t\t'itemImageSize',\n\t\t\t'displayAssetName',\n\t\t\t'listTitle',\n\t\t\t'listButtonDownload',\n\t\t\t'listButtonCart',\n\t\t\t'displayListItemName',\n\t\t\t'ordinal',\n\t\t];\n\t}\n\n\tget clientAttrs() {\n\t\treturn ['assetModel', 'cartCollection', 'categoryCollection'];\n\t}\n\n\t/**\n\t * When syncing, pass an array of assetIds as our 'assetIds' property\n\t */\n\tself() {\n\t\tvar me = super.self(); // returns without any 'assets' property, because 'assets' is in clientAttrs\n\t\t//me.assetIds = this.get('assets') ? this.get('assets').ids() : [];\n\t\treturn me;\n\t}\n\n\t/**\n\t * RPC methods:\n\t * @rpcs\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * NOTE: Backbone renames the CRUD methods (create/read/update/delete) to fetch/save/destroy.\n\t\t\t * These @method comments straighten that out in the auto-generated docs.\n\t\t\t * @method fetch\n\t\t\t */\n\t\t\tread: [\n\t\t\t\t'getBlocks',\n\t\t\t\tfunction () {\n\t\t\t\t\treturn [this.id];\n\t\t\t\t},\n\t\t\t],\n\t\t\t/** @method save */\n\t\t\tcreate: [\n\t\t\t\t'setBlock',\n\t\t\t\tfunction () {\n\t\t\t\t\treturn this.self();\n\t\t\t\t},\n\t\t\t],\n\t\t\tupdate: [\n\t\t\t\t'setBlock',\n\t\t\t\tfunction () {\n\t\t\t\t\treturn this.self();\n\t\t\t\t},\n\t\t\t],\n\t\t\t/** @method destroy */\n\t\t\tremove: ['deleteBlock', 'id'],\n\t\t};\n\t}\n\n\t/**\n\t * backbone parser for read, update & create methods.\n\t * @param {object} result server response\n\t * @param {object} opts backbone options\n\t * @returns {object} the parsed attribute data\n\t */\n\tparse(result, opts) {\n\t\tif (_.isNumeric(result)) {\n\t\t\t// result of setBlock(): an object ID\n\t\t\tthis.set({id: result}, opts);\n\t\t} else {\n\t\t\t// result of getBlocks(id): a one-object array or\n\t\t\t// an attributes object:\n\t\t\tthis._parse(_.isArray(result) ? result[0] : result, opts);\n\t\t}\n\n\t\treturn this.attributes;\n\t}\n\n\t// TODO abstract this whole attrs->objects thing better.\n\t/** override */\n\tset(attrs, opts = {}) {\n\t\treturn opts.parse ? this._parse(attrs, opts) : super.set(attrs, opts);\n\t}\n\n\t/**\n\t * _parse decomposes and applies the server data for a block,\n\t * managing the unpacking of 'goo' and the instantiation of the assets collection --\n\t * either from an 'assets' array/collection containing data (the client's representation),\n\t * or an 'assetIds' array containing ids (as stored on the server).\n\t *\n\t * @param {object} attrs unparsed attributes\n\t * @param {object} opts backbone options\n\t */\n\t_parse(attrs, opts) {\n\t\tvar assetModel,\n\t\t\tcartCollection,\n\t\t\tcategoryCollection,\n\t\t\tcId,\n\t\t\tattributes = this.unpackAttrs(attrs);\n\t\tthis.set(attributes, {parse: false});\n\n\t\t// only parse the assets of blocks that have assets\n\t\tswitch (attributes.type) {\n\t\t\tcase 'asset':\n\t\t\t\tcId = this.get('contentIds') ? this.get('contentIds')[0] : undefined;\n\t\t\t\tassetModel = new AssetModel();\n\t\t\t\tif (cId) {\n\t\t\t\t\tassetModel.set({assetId: cId}, {parse: false});\n\t\t\t\t\tassetModel.fetch().then(function () {\n\t\t\t\t\t\t// assetPreviewView doesn't wait for the model to fetch\n\t\t\t\t\t\tthis.trigger('change:assetId', this, this.get('assetId'));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.set({assetModel: assetModel}, {parse: false});\n\n\t\t\t\tbreak;\n\t\t\tcase 'category':\n\t\t\t\tcId = this.get('contentIds') ? this.get('contentIds')[0] : undefined;\n\n\t\t\t\tif (cId && cId != this.get('categoryId')) {\n\t\t\t\t\tthis.set({categoryId: cId}, {parse: false});\n\n\t\t\t\t\tcategoryCollection = new CategoriesCollection([], {\n\t\t\t\t\t\tcurrentCat: new CategoryModel({categoryid: cId}),\n\t\t\t\t\t\tpagerRoutes: false,\n\t\t\t\t\t});\n\t\t\t\t\tcategoryCollection.pageSize = categoryCollection.chunkSize;\n\t\t\t\t\tcategoryCollection.fetch();\n\t\t\t\t\tthis.categoryCollection = categoryCollection;\n\t\t\t\t}\n\t\t\t\tif (!cId) {\n\t\t\t\t\tcategoryCollection = new CategoryAssetsCollection([], {\n\t\t\t\t\t\tpagerRoutes: false,\n\t\t\t\t\t});\n\t\t\t\t\tcategoryCollection.pageSize = categoryCollection.chunkSize;\n\t\t\t\t\tthis.categoryCollection = categoryCollection;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'carousel':\n\t\t\tcase 'categoryAssetList':\n\t\t\t\t//this.set(attributes, { parse: false });\n\t\t\t\tcId = this.get('contentIds') ? this.get('contentIds')[0] : undefined;\n\n\t\t\t\tif (cId && cId != this.get('categoryId')) {\n\t\t\t\t\tthis.set({categoryId: cId}, {parse: false});\n\n\t\t\t\t\tcategoryCollection = new CategoryAssetsCollection([], {\n\t\t\t\t\t\tpagerRoutes: false,\n\t\t\t\t\t});\n\t\t\t\t\tcategoryCollection.pageSize = categoryCollection.chunkSize = 30;\n\t\t\t\t\tcategoryCollection.getCategoryAssets(parseInt(cId));\n\n\t\t\t\t\t// this will pass the block options to the listItemViews and update as the block updates\n\t\t\t\t\tcategoryCollection.block = this;\n\n\t\t\t\t\tthis.categoryCollection = categoryCollection;\n\n\t\t\t\t\t// DAM-15696 - Relying on content labels stored in the goo means we have out\n\t\t\t\t\t// of date information. Fetching to get the actual path of the category\n\t\t\t\t\tlet category = new CategoryModel({categoryid: cId});\n\t\t\t\t\tcategory.fetch().then((cat) => {\n\t\t\t\t\t\tthis.set({contentLabels: [cat.repositorydirectory]});\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (!cId) {\n\t\t\t\t\tcategoryCollection = new CategoryAssetsCollection([]);\n\t\t\t\t\tcategoryCollection.pageSize = categoryCollection.chunkSize;\n\t\t\t\t\tthis.categoryCollection = categoryCollection;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'savedCart':\n\t\t\t\t//this.set(attributes, { parse: false });\n\t\t\t\tcId = this.get('contentIds') ? this.get('contentIds')[0] : undefined;\n\n\t\t\t\tif (cId && cId != this.get('cartId')) {\n\t\t\t\t\tthis.set({cartId: cId}, {parse: false});\n\t\t\t\t\tcartCollection = new CartAssetsCollection([], {pagerRoutes: false});\n\t\t\t\t\tcartCollection.pageSize = cartCollection.chunkSize = 30;\n\t\t\t\t\tcartCollection.fetchSavedCart(parseInt(cId));\n\t\t\t\t\tcartCollection.block = this;\n\t\t\t\t\tthis.cartCollection = cartCollection;\n\t\t\t\t}\n\n\t\t\t\tif (!cId) {\n\t\t\t\t\tcartCollection = new CartAssetsCollection([], {pagerRoutes: false});\n\t\t\t\t\tcartCollection.pageSize = cartCollection.chunkSize;\n\t\t\t\t\tthis.cartCollection = cartCollection;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\t//case 'html':\n\t\t\tdefault:\n\t\t\t\tattributes.assetIds = [];\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/** @method */\n\tsetType(newType) {\n\t\tif (this.get('type') === newType) return;\n\n\t\tconst attrs = _.extend(this.defaults, {type: newType});\n\t\tthis.set(attrs, {parse: true});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CMSBlock';\n\t}\n}\n","/**\n * @class\n */\nimport Base from 'netxcore@netx/core-cms/models/CMSBlock';\n\nimport AssetModel from '@netx/core-asset/models/asset';\nimport CartAssetsCollection from '@netx/core-cart/collections/cartAssets';\nimport CategoryAssetsCollection from '@netx/core-category/collections/categoryAssets';\nimport CategoryModel from '@netx/core-category/models/category';\nimport CategoriesCollection from '@netx/core-category/collections/categories';\n\nexport default class CMSBlock extends Base {\n\t/**\n\t * _parse decomposes and applies the server data for a block,\n\t * managing the unpacking of 'goo' and the instantiation of the assets collection --\n\t * either from an 'assets' array/collection containing data (the client's representation),\n\t * or an 'assetIds' array containing ids (as stored on the server).\n\t *\n\t * @param {object} attrs unparsed attributes\n\t * @param {object} opts backbone options\n\t */\n\t_parse(attrs, opts) {\n\t\tconst attributes = this.unpackAttrs(attrs);\n\t\tthis.set(attributes, {parse: false});\n\n\t\tconst contentIds = this.get('contentIds');\n\t\tconst cId = contentIds ? contentIds[0] : undefined;\n\n\t\tlet assetModel, cartCollection, categoryCollection;\n\n\t\t// only parse the assets of blocks that have assets\n\t\tswitch (attributes.type) {\n\t\t\tcase 'asset':\n\t\t\t\tassetModel = new AssetModel();\n\t\t\t\tif (cId) {\n\t\t\t\t\tassetModel.set({assetId: cId}, {parse: false});\n\t\t\t\t\tassetModel.fetch().then(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t// assetPreviewView doesn't wait for the model to fetch\n\t\t\t\t\t\t\tthis.trigger('change:assetId', this, this.get('assetId'));\n\t\t\t\t\t\t},\n\t\t\t\t\t\t(err) => {\n\t\t\t\t\t\t\tthis.trigger('change:assetId', this, this.get('assetId'));\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthis.set({assetModel: assetModel}, {parse: false});\n\n\t\t\t\tbreak;\n\t\t\tcase 'category':\n\t\t\t\tif (!cId) {\n\t\t\t\t\tcategoryCollection = new CategoryAssetsCollection([], {\n\t\t\t\t\t\tpagerRoutes: false,\n\t\t\t\t\t});\n\t\t\t\t\tcategoryCollection.pageSize = categoryCollection.chunkSize;\n\t\t\t\t\tthis.categoryCollection = categoryCollection;\n\t\t\t\t} else if (cId != this.get('categoryId')) {\n\t\t\t\t\tthis.set({categoryId: cId}, {parse: false});\n\n\t\t\t\t\tcategoryCollection = new CategoriesCollection([], {\n\t\t\t\t\t\tcurrentCat: new CategoryModel({categoryid: cId}),\n\t\t\t\t\t\tpagerRoutes: false,\n\t\t\t\t\t});\n\t\t\t\t\tcategoryCollection.pageSize = categoryCollection.chunkSize;\n\t\t\t\t\tcategoryCollection.fetch();\n\t\t\t\t\tthis.categoryCollection = categoryCollection;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'carousel':\n\t\t\tcase 'categoryAssetList':\n\t\t\t\tif (!cId) {\n\t\t\t\t\tcategoryCollection = new CategoryAssetsCollection([], {\n\t\t\t\t\t\tpagerRoutes: false,\n\t\t\t\t\t});\n\t\t\t\t\tcategoryCollection.pageSize = categoryCollection.chunkSize;\n\t\t\t\t\tthis.categoryCollection = categoryCollection;\n\t\t\t\t} else if (cId != this.get('categoryId')) {\n\t\t\t\t\tthis.set({categoryId: cId}, {parse: false});\n\n\t\t\t\t\tcategoryCollection = new CategoryAssetsCollection([], {\n\t\t\t\t\t\tcategoryId: cId,\n\t\t\t\t\t\tpagerRoutes: false,\n\t\t\t\t\t});\n\t\t\t\t\tcategoryCollection.pageSize = categoryCollection.chunkSize;\n\t\t\t\t\tcategoryCollection.fetch();\n\n\t\t\t\t\t// this will pass the block options to the listItemViews and update as the block updates\n\t\t\t\t\tcategoryCollection.block = this;\n\n\t\t\t\t\tthis.categoryCollection = categoryCollection;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'savedCart':\n\t\t\t\t// DAM-19561 - existing collection blocks do not have this data\n\t\t\t\tthis.set({\n\t\t\t\t\tlistButtonDownload: true,\n\t\t\t\t\tlistButtonCart: true,\n\t\t\t\t\tdisplayListItemName: '1',\n\t\t\t\t});\n\n\t\t\t\tif (!cId) {\n\t\t\t\t\tcartCollection = new CartAssetsCollection([], {pagerRoutes: false});\n\t\t\t\t\tcartCollection.pageSize = cartCollection.chunkSize;\n\t\t\t\t\tthis.cartCollection = cartCollection;\n\t\t\t\t} else if (cId != this.get('cartId')) {\n\t\t\t\t\tthis.set({cartId: cId}, {parse: false});\n\t\t\t\t\tcartCollection = new CartAssetsCollection([], {pagerRoutes: false});\n\t\t\t\t\tcartCollection.pageSize = cartCollection.chunkSize;\n\t\t\t\t\tcartCollection.pager.set({routesToPage: false});\n\t\t\t\t\tcartCollection.fetchSavedCart(parseInt(cId));\n\t\t\t\t\tthis.cartCollection = cartCollection;\n\t\t\t\t}\n\n\t\t\t\tif (cartCollection) {\n\t\t\t\t\tcartCollection.block = this;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\n\t\t\t//case 'html':\n\t\t\tdefault:\n\t\t\t\tattributes.assetIds = [];\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n","/**\n * @class\n * @extends Netx.Model\n */\nimport Base from '@netx/core/lib/netx-model';\n\n// import CMSBlockModel from './CMSBlock';\nimport CMSBlocksCollection from '../collections/CMSBlocks';\nimport moment from '@netx/core/lib/netx-moment';\n\nexport default class CMSPage extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {string} defaults.portalId - Unique ID of a portal\n\t * @property {string} defaults.slug - mutable unique key\n\t * @property {number} defaults.userId - Id of owner/creator\n\t * @property {string} defaults.modDate - set by server on update\n\t * @property {module:cms/models/CMSBlocks} defaults.blocks - Collection of block models for this page\n\t * @property {string} defaults.template - page template key\n\t * @property {string} defaults.title - page title\n\t * @property {string} defaults.description - displayed in search, built from first h2\n\t * @property {string} defaults.displayTitle - display page title toggle\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t// id: 0,\n\t\t\tportalId: '',\n\t\t\tslug: '',\n\t\t\tuserId: 0,\n\t\t\tmodDate: '',\n\t\t\t// Synthesized from result.blocks at load time by _parse() :\n\t\t\tblocks: new CMSBlocksCollection(),\n\t\t\ttemplate: 'template1',\n\t\t\ttitle: '',\n\t\t\tdescription: '',\n\t\t\tdisplayTitle: false,\n\t\t};\n\t}\n\n\t/**\n\t * attrs to convert to/from 'goo'\n\t * @property {array} clientArrs\n\t */\n\tget gooAttrs() {\n\t\treturn ['template', 'title', 'displayTitle'];\n\t}\n\n\t/**\n\t * attrs to hide from the server\n\t * @property {array} clientArrs\n\t */\n\tget clientAttrs() {\n\t\treturn ['blocks'];\n\t}\n\n\t/**\n\t * RPC methods:\n\t * @rpcs\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tgetPageForId: ['getPageForId', 'id'],\n\t\t\tgetPageForPortal: ['getPageForPortal', 'portalId', 'slug'],\n\t\t\tread: function () {\n\t\t\t\tif (this.id) {\n\t\t\t\t\treturn ['getPageForId', this.id];\n\t\t\t\t} else if (this.get('portalId') && this.get('slug')) {\n\t\t\t\t\treturn ['getPageForPortal', this.get('portalId'), this.get('slug')];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(\"can't fetch page without ID or portal+slug\");\n\t\t\t\t}\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method fetch\n\t\t\t */\n\t\t\tcreate: function () {\n\t\t\t\tif (!this.get('title')) {\n\t\t\t\t\treturn new $.Deferred().reject();\n\t\t\t\t}\n\n\t\t\t\tif (!this.get('slug')) {\n\t\t\t\t\tthis.set({\n\t\t\t\t\t\tslug: this.makeSlug(this.get('title')),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn ['setPage', this.self()];\n\t\t\t},\n\n\t\t\tupdate: [\n\t\t\t\t'setPage',\n\t\t\t\tfunction () {\n\t\t\t\t\treturn this.self();\n\t\t\t\t},\n\t\t\t],\n\t\t\t/** @method destroy */\n\t\t\tremove: ['deletePage', 'id'],\n\t\t};\n\t}\n\n\t/**\n\t * TODO: DAM-8469 & unwrap\n\t * @method\n\t * @param {int} id\n\t */\n\tfetchById(id) {\n\t\tthis.set({id: id});\n\t\treturn this.fetch();\n\t}\n\n\t/**\n\t * TODO: DAM-8469 & unwrap\n\t * @method\n\t * @param {int} portalId\n\t * @param {string} slug\n\t */\n\tfetchByPortalSlug(portalId, slug) {\n\t\tthis.set({\n\t\t\tportalId: portalId,\n\t\t\tslug: slug,\n\t\t});\n\t\treturn this.getPageForPortal.apply(this, _.rest(arguments));\n\t}\n\n\t/** @member */\n\tget parsers() {\n\t\treturn {\n\t\t\tgetPageForId: function (result) {\n\t\t\t\tthis._parse(result, {parse: true});\n\t\t\t},\n\t\t\tgetPageForPortal: function (result) {\n\t\t\t\tthis._parse(result);\n\t\t\t},\n\t\t\tcreate: function (result) {\n\t\t\t\tif (result && result > 0) {\n\t\t\t\t\tthis.set({\n\t\t\t\t\t\tpageId: result,\n\t\t\t\t\t\tid: result,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * multipurpose backbone parse method.\n\t * @param {object} result the server's response\n\t * @param {object} opts the sync options\n\t * @return {object} the parsed data\n\t * @method\n\t */\n\tparse(result, opts) {\n\t\tif (_.isNumeric(result)) {\n\t\t\t// got just an ID\n\t\t\treturn {id: result};\n\t\t} else {\n\t\t\t// got a whole object\n\n\t\t\t// DAM-19186 - if old page, assume show unless home\n\t\t\tif (result.displayTitle === undefined) {\n\t\t\t\tresult.displayTitle = result.slug !== 'home';\n\t\t\t}\n\t\t\tthis._parse(result, opts);\n\t\t}\n\t\treturn this.attributes;\n\t}\n\n\t/**\n\t * Convert results array: create block objects for page.\n\t * @method\n\t */\n\t_parse(page, opts) {\n\t\tvar attributes = this.unpackAttrs(page);\n\t\t// generic version?\n\t\tthis.set(_.omit(attributes, 'blocks'), _.omit(opts, 'parse'));\n\t\tthis.setModDate();\n\t\tthis.setBlocks(attributes.blocks, opts);\n\t}\n\n\t/**\n\t * Convert blocks & blocks.arrays to bare objects when syncing\n\t * @override\n\t */\n\tself() {\n\t\tconst me = super.self(),\n\t\t\tblocksCollection =\n\t\t\t\tthis.get('blocks') || this.set({blocks: new CMSBlocksCollection()});\n\n\t\tme.blocks = _.map(blocksCollection.models, function (block, idx, all) {\n\t\t\treturn block.self();\n\t\t});\n\n\t\treturn me;\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts) {\n\t\tsuper(attrs, opts);\n\n\t\tif (this.get('goo')) {\n\t\t\tvar gooAttrs = this.unpackAttrs(\n\t\t\t\t_.pick(this.attributes, this.gooAttrs, 'goo'),\n\t\t\t);\n\t\t\tthis.set(gooAttrs);\n\t\t}\n\t\t// for automatic page saves\n\t\tthis.debouncedSave = _.debounce(this.debouncedSave, 1000);\n\t}\n\n\t/** @override */\n\tsave() {\n\t\treturn this.update();\n\t}\n\t/**\n\t * @method\n\t * Pages get saved automatically on various changes\n\t * thus debouncing is necessary, like when creating a new block\n\t */\n\tdebouncedSave() {\n\t\treturn this.update();\n\t}\n\n\t/**\n\t * Utility method: makeSlug() converts its argument into a more URL-y string.\n\t * If this page model has a collection property, the models in that collection\n\t * are checked to avoid duplicate slugs.\n\t * @method\n\t * @param {string} name\n\t */\n\tmakeSlug(name) {\n\t\t// Based on:\n\t\t// http://stackoverflow.com/questions/1053902/how-to-convert-a-title-to-a-url-slug-in-jquery\n\t\tvar suggestion = name\n\t\t\t.toLowerCase() // make everything lowercase\n\t\t\t.replace(/[-\\W]+/g, '-') // convert pattersn of multiple dashes or non-word characters -> a single dash\n\t\t\t.replace(/^-/, '') // strip any dash from front of slug\n\t\t\t.replace(/-$/, ''); // strip any dash from end of slug\n\n\t\t// If we have a collection, search it for duplicate slugs.\n\t\tif (!this.isUniqueSlug(suggestion)) {\n\t\t\tvar index = 2;\n\t\t\t// Keep incrementing & searching until we can't find this modified slug in our collection.\n\t\t\twhile (!this.isUniqueSlug(suggestion + '-' + index)) {\n\t\t\t\tindex++;\n\t\t\t}\n\t\t\tsuggestion += '-' + index;\n\t\t}\n\n\t\treturn suggestion;\n\t}\n\n\t/**\n\t * Utility method to test whether a page slug is unique within this.collection.\n\t * (If this.collection is undefined, this method returns true.)\n\t * @method\n\t */\n\tisUniqueSlug(slug) {\n\t\tconst collection = this.collection || Netx.cms.portal.pages;\n\n\t\tif (!collection) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// If slug is undefined, use this model's property\n\t\tslug = slug || this.get('slug');\n\n\t\treturn !collection.find(function (m) {\n\t\t\t// Is there a model other than this one with the same slug already?\n\t\t\t// (We specifically exclude our own model's ID.)\n\t\t\treturn m.id != this.id && m.get('slug') == slug.trim();\n\t\t}, this);\n\t}\n\n\t/**\n\t * Set our blocks property, converting non-models into models & fetching them as needed.\n\t * @method\n\t */\n\tsetBlocks(blocks, opts) {\n\t\tif (!blocks || blocks.length == 0) {\n\t\t\t// create new block, with id and everything\n\t\t\tdispatcher.trigger('cms:page:block:add', this);\n\t\t}\n\n\t\tvar blockCollection = _.toCollection(blocks, CMSBlocksCollection, {\n\t\t\tparse: true,\n\t\t});\n\n\t\tif (this.get('blocks') instanceof CMSBlocksCollection) {\n\t\t\t// Update existing blocks collection\n\t\t\tthis.get('blocks').reset(blockCollection.models, {parse: true});\n\t\t} else {\n\t\t\t// Attach new blocks collection\n\t\t\tthis.set({blocks: blockCollection}, {parse: true});\n\t\t}\n\t}\n\n\t/** @method */\n\tparseBlocks() {\n\t\tif (this.parsed) return;\n\n\t\tconst blocksCollection = this.get('blocks');\n\t\tblocksCollection.each((block, idx, all) => {\n\t\t\tblock._parse(block.attributes, {parse: true});\n\t\t});\n\t\tthis.parsed = true;\n\t}\n\n\t/**\n\t * @method\n\t */\n\tsetModDate() {\n\t\tthis.set({\n\t\t\tmodDate: moment(this.get('modDate')).format('MMMM Do, YYYY (h:mm:ss a)'),\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CMSPage';\n\t}\n}\n","import Base from 'netxcore@netx/core-cms/models/CMSPage';\n\nimport CMSBlockModel from './CMSBlock';\nimport CMSBlocksCollection from '@netx/core-cms/collections/CMSBlocks';\n\n/**\n * @override\n */\nexport default class CMSPage extends Base {\n\t/** @override */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t// have we parsed our blocks yet\n\t\tthis.parsed = opts.parsed === true;\n\t}\n\n\t/** @method */\n\tparseBlocks() {\n\t\tif (this.parsed) return;\n\t\tconst blocksCollection = this.get('blocks');\n\t\tblocksCollection.each((block, idx, all) => {\n\t\t\tblock._parse(block.attributes, {parse: true});\n\t\t});\n\t\tthis.parsed = true;\n\t}\n\n\t/**\n\t * Set our blocks property, converting non-models into models & fetching them as needed.\n\t */\n\tsetBlocks(blocks, opts) {\n\t\tif (!blocks || blocks.length == 0) {\n\t\t\tblocks = [new CMSBlockModel({type: 'html'})];\n\t\t}\n\t\tconst blockCollection = _.toCollection(blocks, CMSBlocksCollection, {\n\t\t\tparse: false,\n\t\t});\n\n\t\tif (\n\t\t\tthis.get('blocks') &&\n\t\t\tthis.get('blocks').constructor.__name__ === 'CMSBlocks'\n\t\t) {\n\t\t\t// Update existing blocks collection\n\t\t\tthis.get('blocks').reset(blockCollection.models, {parse: false});\n\t\t} else {\n\t\t\t// Attach new blocks collection\n\t\t\tthis.set({blocks: blockCollection}, {parse: false});\n\t\t}\n\t}\n}\n","export const config = {\n\tHOME_ROUTE: 'dashboard',\n\tREQUIRE_LOGIN: true,\n};\n\nexport default config;\n","import {config as coreConfig} from '@netx/core-next/config';\nimport {currentPortal} from '@netx/core-cms/singletons';\n\nexport const config = {\n\t...coreConfig,\n\tget HOME_ROUTE() {\n\t\t// Set home route if it exists\n\t\treturn currentPortal.get('homeRoute')\n\t\t\t? '#page/' + currentPortal.get('homeRoute')\n\t\t\t: '#';\n\t},\n\tget REQUIRE_LOGIN() {\n\t\tconst requireLogin = currentPortal.get('requireLogin');\n\t\tif (requireLogin != null && requireLogin == false) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n};\n\nexport default config;\n","/**\n * The 'enableTest' field of an Action definitions may be set to one of these, or to an array of them for multiple tests.\n * @module core/enablers\n */\n\nimport {getViewCollection, getViewModel} from './utils';\nimport {userSource as userSources} from '@netx/core-user/properties/user';\nimport {isMobile as checkIsMobile} from './underscore-netx';\nimport {mediaServicesAvailable} from '@netx/core-share-media-service/enablers';\nimport {assetProjectEnabled} from '@netx/core-asset-project/enablers';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {userProfile} from '@netx/core-user/collections/singletons/userProfile';\n\n/**\n * Clips cannot be emailed currently\n * @function\n * @returns {boolean}\n */\nexport const canEmail = (v) => {\n\tif (v.data && v.data.assetSet) {\n\t\treturn v.data.assetSet.get('canEmail') !== false;\n\t}\n\treturn true;\n};\n\n/**\n * Can user logout\n * @function\n * @return {boolean}\n */\nexport const canLogout = (v) => {\n\tconst userSource = userProfile.get('userSource');\n\t// If user source is INTERNAL or SAML\n\treturn userSource === userSources.INTERNAL || userSource === userSources.SAML;\n};\n\n// TODO: We should not reference Netx.[module] (other than user) for enable tests\n// DAM-11555 - currently used only for video publishing\n/**\n * @function\n * @returns {boolean}\n */\nexport const mediaServicesEnabled = (v) => {\n\tif (mediaServicesAvailable()) {\n\t\tvar mediaServices = Netx.share.mediaServices,\n\t\t\tbrightCove = mediaServices.find({name: 'Brightcove'}),\n\t\t\tyouTube = mediaServices.find({name: 'YouTube'});\n\n\t\treturn (\n\t\t\t(youTube && youTube.get('authenticated')) ||\n\t\t\t(brightCove && brightCove.get('authenticated'))\n\t\t);\n\t}\n\treturn false;\n};\n\n// collection has at least one model\n/**\n * @function\n * @returns {boolean}\n */\nexport const collectionNotEmpty = (v) => {\n\tconst collection = getViewCollection(v);\n\tif (!collection) return false;\n\n\t// Sometimes we update the pager before we get models in a collection\n\tconst pager = collection.pager;\n\tif (!pager) return collection.length > 0;\n\n\treturn pager.get('itemTotal') > 0;\n};\n\n/**\n * @function\n * @returns {boolean}\n */\nexport const canUseGridEditor = (v) => {\n\treturn true;\n};\n\n/**\n * @function\n * @returns {boolean}\n */\nexport const allowsDelete = (v) => {\n\tif (v.model && _.isFunction(v.model.allows)) {\n\t\treturn v.model.allows('delete');\n\t} else if (v.collection && _.isFunction(v.collection.allows)) {\n\t\treturn v.collectionl.allows('delete');\n\t}\n\treturn false;\n};\n\n// For the case when you want to move an asset out of/into a category,\n// for which you need modify permissions on both. We can't know whether\n// to expect an asset view or a category view here. We have a few different\n// patterns for inserting extra references, too, so here we perform an\n// exhaustive search.\n/**\n * @function\n * @returns {boolean}\n */\nexport const categoryAndAssetCanEdit = (view) => {\n\t// Best approach is if the view itself has both .asset and .category, being links to appropriate models.\n\tif (view.asset && view.category) {\n\t\treturn view.asset.allows('modify') && view.category.allows('modify');\n\t}\n\n\t// view.model could be either an asset model or a catgegory model, but either way this has to pass:\n\tif (!view.model || !view.model.allows || !view.model.allows('modify')) {\n\t\treturn false;\n\t}\n\n\tif (view.model.constructor.__name__ === 'Category') {\n\t\tif (view.asset) {\n\t\t\t// If a category view has an asset model as .asset, this will work.\n\t\t\treturn view.asset.allows('modify');\n\t\t} else {\n\t\t\t// NOTE: this view.model.get('asset') thing is kind of a hack, used to reference the original asset model in the asset:category:edit handler.\n\t\t\t// I'd rather we attached that directly to the view (as above), because its meaning can be misconstrued otherwise.\n\t\t\t// TODO: fix that up.\n\t\t\treturn (\n\t\t\t\tview.model.get('asset') && view.model.get('asset').allows('modify')\n\t\t\t);\n\t\t}\n\t}\n\n\tif (view.model.constructor.__name__ === 'Asset') {\n\t\t// if an asset view has a category model as .category, this will work.\n\t\tif (view.category) {\n\t\t\treturn view.category.allows('modify');\n\t\t} else {\n\t\t\t// if the current category just so happens to be our asset's \"main\" category, we're in luck and can test.\n\t\t\tview.model.get('categoryid') == Netx.category.current.id &&\n\t\t\t\tNetx.category.current.allows('modify');\n\t\t}\n\t}\n\n\t// Couldn't find a test, alas.\n\treturn false;\n};\n\n/**\n * Have we set `header.helpUrl`?\n * @function\n * @returns {boolean}\n */\nexport const helpUrl = (v) => {\n\treturn !_.isUndefined(getPreference('header.helpUrl'));\n};\n\n/**\n * @function\n * @returns {boolean}\n */\nexport const isMobile = () => {\n\treturn checkIsMobile(false);\n};\n\n/**\n * @function\n * @returns {boolean}\n */\nexport const notMobile = () => {\n\treturn !isMobile();\n};\n\n/**\n * @function\n * @returns {boolean}\n */\nexport const readOnly = (v) => {\n\tconst model = getViewModel(v);\n\treturn !model.allows('write');\n};\n\n/**\n * Asset review enabled\n * @function\n * @returns {boolean}\n */\nexport const reviewEnabled = (v) => {\n\t// DAM-14088\n\tif (checkIsMobile()) return false;\n\n\treturn assetProjectEnabled();\n};\n","import {publicProperties} from '@netx/core-app/collections/singleton/publicProperties';\n\nexport const getPublicProperty = <Bool extends boolean = false>(\n\tkey: string,\n\tasBoolean?: Bool,\n) => {\n\treturn (\n\t\tasBoolean ? publicProperties.isTrue(key) : publicProperties.getProperty(key)\n\t) as Bool extends true ? boolean : string | undefined;\n};\n\nexport default getPublicProperty;\n","/**\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/batchJob';\n\nclass BatchJobs extends Base {\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'BatchJobs';\n\t}\n}\n\nexport default BatchJobs;\n","import BatchJobsCollection from '../batchJobs';\n\nexport const batchJobs = new BatchJobsCollection([]);\n\nexport default batchJobs;\n\nimport {setGlobal} from '@netx/core-next/utils/setGlobal';\n// TODO: this is still needed as a global due to netx model inception in netx model and batch jobs\n// if (process.env.NODE_ENV !== 'production') {\nsetGlobal({batchJobs});\n//}\n","/**\n * Collection of generic label values\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/labelValue';\n\nclass LabelValues extends Base {\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\t}\n\n\t/**\n\t * getProperty returns a value by label, unpacking the LVB.\n\t * @method\n\t * @param {string} label Full name of a property\n\t * @return string or undefined\n\t */\n\tgetProperty(label) {\n\t\tconst lvb = this.findWhere({label: label});\n\t\treturn lvb ? lvb.get('value') : undefined;\n\t}\n\n\t/**\n\t *\n\t * To test the boolean truth of properties that can contain the string \"true\" or \"false\",\n\t * we sometimes want to return true only if the string is \"true\" ... any other string == false.\n\t * Other times, we want the opposite. And you never know when someone might have made a typo,\n\t * since it's a text field ... isTrue and isFalse simplify that.\n\t * @param string label full name of a property\n\t * @returns boolean\n\t *\n\t */\n\tisTrue(label) {\n\t\treturn this.getProperty(label) === 'true';\n\t}\n\tisFalse(label) {\n\t\treturn this.getProperty(label) === 'false';\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'LabelValues';\n\t}\n}\n\nexport default LabelValues;\n","/**\n * Collection of public properties that are fetched prior to the app initializing.\n * These properties are fetched using the webservice method getPublicProperties()\n * @class\n */\nimport Base from './labelValues';\nimport Model from '../models/labelValue';\n\nclass PublicProperties extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} methods - Collection RPC methods\n\t * @property {method} methods.read - Fetch public properties\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tread: ['getPublicProperties'],\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'PublicProperties';\n\t}\n}\n\nexport default PublicProperties;\n","import PublicPropertiesCollection from '@netx/core-app/collections/publicProperties';\n\nexport const publicProperties = new PublicPropertiesCollection();\n\nexport default publicProperties;\n","/**\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nclass Socket extends Base {\n\t/**\n\t * @property {object} defaults - Model defaults\n\t * @property {boolean} defaults.autoConnect - Auto connect to websockets at initialize\n\t * @property {boolean} defaults.autoReconnect - Auto reconnect when disconnected by server\n\t * @property {boolean} defaults.clientDisconnected - We opted to disconnect from websockets\n\t * @property {boolean} defaults.connected - Connected to websockets\n\t * @property {array} defaults.connectionDurations - Connection duration store\n\t * @property {number} defaults.connectionRetries - Current websocket connection retries (will reset after sustaining a successful connection for at least 5s)\n\t * @property {number} defaults.lastConnectTime - The last time we achieved a websocket connection (ms)\n\t * @property {number} defaults.lastDisconnectTime - The last time we were disconnected from websockets (ms)\n\t * @property {number} defaults.maxConnectionRetries - Max times we will try to reconnect without acheiving a successful connection fot at least 5s\n\t * @property {number} defaults.reconnectCount - The number of times the websocket reconnected through the life of our session\n\t * @property {array} defaults.subscriptions - Websocket subscriptions\n\t * @property {string} defaults.url - Websocket endpoint\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tautoConnect: true,\n\t\t\tautoReconnect: true,\n\t\t\tclientDisconnected: false,\n\t\t\tconnected: false,\n\t\t\tconnectionDurations: [],\n\t\t\tconnectionRetries: 0,\n\t\t\tdisconnectEvents: [],\n\t\t\tlastConnectTime: 0,\n\t\t\tlastDisconnectTime: 0,\n\t\t\tmaxConnectionRetries: 5,\n\t\t\treconnectCount: 0,\n\t\t\tsubscriptions: [],\n\t\t\turl: '',\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Request options\n\t */\n\tconstructor(attrs, opts) {\n\t\tsuper(attrs, opts);\n\n\t\t// Debounced/throttled methods\n\t\tthis.reconnect = _.throttle(this.reconnect, 5000, true);\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(\n\t\t\tthis,\n\t\t\t'change:connectionRetries',\n\t\t\t(model, connectionRetries) => {\n\t\t\t\tif (\n\t\t\t\t\t!this.get('connected') &&\n\t\t\t\t\tconnectionRetries >= this.get('maxConnectionRetries')\n\t\t\t\t) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'There is an issue connecting to websockets. Max retries reached.',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// Auto connect\n\t\t// !Netx.session.get('token') && this.get('autoConnect') && this.connect();\n\t}\n\n\t/**\n\t * @method\n\t */\n\tconnect() {\n\t\tthis.whenConnected && this.whenConnected.reject();\n\n\t\tconst whenConnected = (this.whenConnected = new $.Deferred());\n\n\t\t// DEBUG\n\t\tif (this.fail) {\n\t\t\t_.delay(() => {\n\t\t\t\tthis.disconnected();\n\t\t\t}, 2);\n\t\t\treturn this.whenConnected.resolve();\n\t\t}\n\n\t\tconst socket = (this.socket = new WebSocket(this.get('url')));\n\t\t// Can check the event code here as well if need be\n\t\tsocket.onclose = _.bind(this.disconnected, this);\n\t\tsocket.onmessage = _.bind(this.message, this);\n\n\t\t// When connected\n\t\tsocket.onopen = () => {\n\t\t\tthis.set({\n\t\t\t\tclientDisconnected: false,\n\t\t\t\tconnected: true,\n\t\t\t\tlastConnectTime: _.now(),\n\t\t\t});\n\n\t\t\t// Let's try and maintain a connection for at least 5s\n\t\t\t// before resetting max retries\n\t\t\tthis.resetMaxConnectRetries = setTimeout(() => {\n\t\t\t\tthis.set('connectionRetries', 0);\n\t\t\t}, 5000);\n\n\t\t\twhenConnected.resolve();\n\t\t};\n\n\t\treturn this.whenConnected;\n\t}\n\n\t/**\n\t * @method\n\t */\n\tdisconnect() {\n\t\tif (!this.get('connected')) return this;\n\n\t\tthis.set('clientDisconnected', true);\n\t\t// https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n\t\tthis.socket.close(1000);\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @method\n\t * @return {number} Current connection lifetime in ms\n\t */\n\tgetConnectionLifetime() {\n\t\treturn this.get('connected') ? _.now() - this.get('lastConnectTime') : 0;\n\t}\n\n\t/**\n\t * @method\n\t * @param {event} e `close` event\n\t */\n\tdisconnected(e) {\n\t\t// Reset\n\t\tthis.resetMaxConnectRetries && clearTimeout(this.resetMaxConnectRetries);\n\n\t\tconst connectionDurations = this.get('connectionDurations');\n\t\tconst disconnectEvents = this.get('disconnectEvents');\n\n\t\tif (this.get('connected')) {\n\t\t\tthis.set({\n\t\t\t\tconnected: false,\n\t\t\t\tconnectionDurations: connectionDurations.concat([\n\t\t\t\t\t_.now() - this.get('lastConnectTime'),\n\t\t\t\t]),\n\t\t\t\tdisconnectEvents: disconnectEvents.concat([e]),\n\t\t\t\tlastDisconnectTime: _.now(),\n\t\t\t});\n\t\t}\n\n\t\t// We did not ask for this disconnect, assume something went wrong and reconnect\n\t\t// Typically caused by a `Broken pipe` on the server - this should be resolved when\n\t\t// websockets are rebuilt in 9.0\n\t\tif (!this.get('clientDisconnected') && this.get('autoReconnect')) {\n\t\t\tconsole.warn('client did not opt to disconnect');\n\t\t\tthis.reconnect();\n\t\t} else {\n\t\t\tthis.socket.onmessage = null;\n\t\t\tthis.socket.onclose = null;\n\t\t\tthis.off().set({\n\t\t\t\tconnectionRetries: 0,\n\t\t\t\tsubscriptions: [],\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @param {event} e `message` event\n\t */\n\tmessage(e) {\n\t\tconst data = JSON.parse(e.data);\n\n\t\tdata.roomName\n\t\t\t? this.trigger(\n\t\t\t\t\t'socket:message:' + data.roomName,\n\t\t\t\t\tJSON.parse(data.message),\n\t\t\t )\n\t\t\t: this.trigger('socket:message', data);\n\t}\n\n\t/**\n\t * @method\n\t */\n\treconnect() {\n\t\tconst connectionRetries = this.get('connectionRetries');\n\t\tconst maxConnectionRetries = this.get('maxConnectionRetries');\n\n\t\tif (connectionRetries < maxConnectionRetries) {\n\t\t\tconsole.warn(\n\t\t\t\t'attempting to reconnect to websocket (' +\n\t\t\t\t\t(connectionRetries + 1) +\n\t\t\t\t\t'/' +\n\t\t\t\t\tmaxConnectionRetries +\n\t\t\t\t\t')',\n\t\t\t);\n\n\t\t\tvar reconnectCount = this.get('reconnectCount');\n\t\t\tthis.set({\n\t\t\t\tconnectionRetries: connectionRetries + 1,\n\t\t\t\treconnectCount: reconnectCount + 1,\n\t\t\t});\n\n\t\t\tthis.connect().then(() => {\n\t\t\t\t// Re-subscribe when connected\n\t\t\t\tthis.overrideSubscriptionCheck = true;\n\t\t\t\t_.each(this.get('subscriptions'), this.subscribe, this);\n\t\t\t\tthis.overrideSubscriptionCheck = false;\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} message Message\n\t */\n\tsend(message) {\n\t\tthis.when(this.get('connected') ? true : this.whenConnected).then(() => {\n\t\t\tthis.socket.send(JSON.stringify(message));\n\t\t});\n\t\treturn this;\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} roomName Room name\n\t */\n\tsubscribe(roomName) {\n\t\tconst subscriptions = this.get('subscriptions');\n\t\tconst inSubscriptions = _.contains(subscriptions, roomName);\n\n\t\tif (\n\t\t\t!roomName ||\n\t\t\t!this.get('connected') ||\n\t\t\t(!this.overrideSubscriptionCheck && inSubscriptions)\n\t\t)\n\t\t\treturn this;\n\n\t\t!inSubscriptions &&\n\t\t\tthis.set('subscriptions', subscriptions.concat([roomName]));\n\n\t\treturn this.send({\n\t\t\tmessage: '',\n\t\t\taction: 6,\n\t\t\troomName: roomName,\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} roomName Room name\n\t */\n\tunsubscribe(roomName) {\n\t\tconst subscriptions = this.get('subscriptions');\n\n\t\tif (\n\t\t\t!this.get('connected') ||\n\t\t\t(roomName && !_.contains(subscriptions, roomName))\n\t\t)\n\t\t\treturn this;\n\n\t\tthis.set(\n\t\t\t'subscriptions',\n\t\t\troomName ? _.without(subscriptions, roomName) : [],\n\t\t);\n\n\t\treturn this.send({\n\t\t\tmessage: '',\n\t\t\taction: 7,\n\t\t\troomName: roomName,\n\t\t});\n\t}\n\n\t// DEBUG\n\t/** @method */\n\tsimulateFail() {\n\t\tthis.fail = true;\n\t\tthis.disconnected();\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Socket';\n\t}\n}\n\nexport default Socket;\n","import window from 'global/window';\nimport SocketModel from '../../models/socket';\n\nconst protocol = window.location.toString().split(window.location.host)[0];\nconst websocketProtocol = protocol.replace(/http/, 'ws');\nexport const legacyWebsocketUrl = `${websocketProtocol}${window.location.host}/websocket`;\n\nexport const legacyWebsocket = new SocketModel({url: legacyWebsocketUrl}, {});\n\nexport default legacyWebsocket;\n\nimport {setGlobal} from '@netx/core-next/utils/setGlobal';\n// still needed due to the circular dependency of the netx-model and the websocket model\n// which is only extending netx-model to get events - can easily be turned into a mobx store or similar\n// and the circular dependency goes away.\n// the only reason i am not tackling that now is that we will evenetually have legit websockets and use\n// socket.io - so the whole thing changes and this troublesome file is deleted\n// if (process.env.NODE_ENV !== 'production') {\nsetGlobal({websocket: legacyWebsocket});\n// }\n","/**\n * BatchJob Model\n * @class\n */\nimport Netx from '@netx/core/bootstrap';\nimport Base from '@netx/core/lib/netx-model';\nimport customConfig from '../config';\n\nclass BatchJob extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'uuid';\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {string} defaults.completeUrl - The default batch job complete URL\n\t * @property {string} defaults.details - The default batch job details\n\t * @property {string} defaults.estimatedTime - The defualt batch job estimated time\n\t * @property {number} defaults.increment - The defualt batch job increment\n\t * @property {string} defaults.jobTitle - The defualt batch job title\n\t * @property {number} defaults.percentComplete - The defualt batch job percent complete\n\t * @property {number} defaults.runningTime - The defualt batch job running time\n\t * @property {string} defaults.runningTimeLabel - The defualt batch job running time label\n\t * @property {number} defaults.secondsToReload - The defualt batch job seconds to reload\n\t * @property {number} defaults.startTime - The defualt batch job start time\n\t * @property {object} defaults.shareData - The defualt batch job share data\n\t * @property {boolean} defaults.shareData.appendMetadata - The defualt batch job share data append metadata\n\t * @property {string} defaults.shareData.errorCatasrophe - The defualt batch job share data error catastrophe\n\t * @property {string} defaults.shareData.errorMessage - The defualt batch job share data error message\n\t * @property {number} defaults.shareData.fileSize - The defualt batch job share data file size\n\t * @property {number} defaults.shareData.hoursToLive - The defualt batch job share data hours to live\n\t * @property {array} defaults.shareData.messages - The defualt batch job share data messages\n\t * @property {string} defaults.shareData.name - The defualt batch job share data name\n\t * @property {string} defaults.shareData.path - The defualt batch job share data path\n\t * @property {string} defaults.shareData.realPath - The defualt batch job share data real path\n\t * @property {string} defaults.shareData.size - The defualt batch job share data size\n\t * @property {string} defaults.shareData.sizeUncompressed - The defualt batch job share data size uncompressed\n\t * @property {string} defaults.shareData.warningMessage - The defualt batch job share data warning message\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tcompleteUrl: '',\n\t\t\tdetails: '',\n\t\t\testimatedTime: '',\n\t\t\tincrement: 0,\n\t\t\tjobTitle: '',\n\t\t\tpercentComplete: 0,\n\t\t\trunningTime: 0,\n\t\t\trunningTimeLabel: '',\n\t\t\tsecondsToReload: 0,\n\t\t\tstartTime: 0,\n\t\t\tshareData: {\n\t\t\t\tappendMetadata: false,\n\t\t\t\terrorCatastrophe: '',\n\t\t\t\terrorMessage: '',\n\t\t\t\tfileSize: 0,\n\t\t\t\thoursToLive: 0,\n\t\t\t\tmessages: [],\n\t\t\t\tname: '',\n\t\t\t\tpath: '',\n\t\t\t\trealPath: '',\n\t\t\t\tsize: '', // string\n\t\t\t\tsizeUncompressed: '', // string\n\t\t\t\twarningMessage: '',\n\t\t\t},\n\n\t\t\t// Client attributes\n\t\t\targs: [],\n\t\t\thasResult: false,\n\t\t};\n\t}\n\n\t/** @type {Array} */\n\tget clientAttrs() {\n\t\treturn ['args', 'hasResult'];\n\t}\n\n\t/**\n\t * @memberof BatchJob\n\t * @property {object} methods - Model RPC methods\n\t * @property {method} methods.read - Fetch progress report\n\t *\n\t * @property {method} methods.getShare - Fetch share bean\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\t// If the uuid isn't set, or is zero or undefined or whatever,\n\t\t\t\t// pass a 0 here (instead of zero or undefined or whatever.)\n\t\t\t\treturn ['getProgressReport', this.id ? this.id : 0];\n\t\t\t},\n\t\t\t// Helpers\n\t\t\tgetShare: ['getShareBean'],\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - The parsers available on this model\n\t * @property {function} parsers.getShare - Parses result of fetched share bean\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} data Share data\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetShare(data, opts) {\n\t\t\t\tthis.set('shareData', data, opts);\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * Promise for job completion\n\t\t * @memberof module:app/models/batchJob\n\t\t * @alias completed\n\t\t * @type {object}\n\t\t */\n\t\tthis.completed = new $.Deferred();\n\n\t\t/**\n\t\t * @memberof module:app/models/batchJob\n\t\t * @alias eventStrs\n\t\t * @type {object}\n\t\t */\n\t\tthis.eventStrs = opts.eventStrs || {};\n\n\t\tthis.pollInterval = opts.pollInterval;\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(this, 'complete', (model) => {\n\t\t\tthis.completed.resolveWith(this, [this]);\n\t\t\tthis.destroy();\n\t\t}).listenTo(this, 'error', (model, error) => {\n\t\t\tthis.completed.rejectWith(this, [error, this]);\n\t\t});\n\n\t\t// Wait until initialize is complete\n\t\t_.defer(this.trackJob.bind(this));\n\t}\n\n\t/**\n\t * Add another event str to notify on batch job complete\n\t * @method\n\t * @param {string} eventStr Event string\n\t * @param {array} args Event arguments\n\t */\n\taddEventStr(eventStr, args) {\n\t\tthis.eventStrs[eventStr] = args || [];\n\t}\n\n\t/**\n\t * We do not have an RPC method - just want cleanup\n\t * @override\n\t * @param {object} opts Request options\n\t */\n\tdestroy(opts) {\n\t\tthis.stopListening();\n\t\tthis.trigger('destroy', this, this.collection, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @fires module:app#app:pollBatchJob:messages\n\t * @fires module:share#share:simpleDownload\n\t */\n\ttrackJob() {\n\t\tthis.pollUntil(\n\t\t\t(status) => {\n\t\t\t\tthis.triggerProgress(this.get('percentComplete'));\n\t\t\t\t// this.trigger('progress', this, this.get('percentComplete'));\n\t\t\t\treturn !status || this.get('percentComplete') >= 100;\n\t\t\t},\n\t\t\tnull,\n\t\t\tnull,\n\t\t\tthis.pollInterval || customConfig.POLL_INTERVAL,\n\t\t).then(() => {\n\t\t\t// Expecting share data results\n\t\t\tif (this.get('hasResult')) {\n\t\t\t\treturn this.getShare().then((shareData) => {\n\t\t\t\t\tshareData = shareData || {};\n\n\t\t\t\t\t// Completed\n\t\t\t\t\tthis.triggerComplete([shareData]);\n\n\t\t\t\t\t// if the sharedata specifies a file, download that.\n\t\t\t\t\tif (shareData.path && shareData.path.length) {\n\t\t\t\t\t\tdispatcher.trigger('share:simpleDownload', shareData.path);\n\t\t\t\t\t}\n\t\t\t\t}, this.triggerError);\n\t\t\t}\n\n\t\t\t// Completed\n\t\t\tthis.triggerComplete();\n\t\t}, this.triggerError.bind(this));\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} error Error\n\t */\n\ttriggerError(error) {\n\t\tconst args = this.get('args') || [];\n\t\t_.each(this.eventStrs, (eventArgs, eventStr) => {\n\t\t\teventArgs = eventArgs || args;\n\t\t\tdispatcher.trigger.apply(\n\t\t\t\tdispatcher,\n\t\t\t\t[eventStr + ':error', error].concat(eventArgs),\n\t\t\t);\n\t\t});\n\n\t\tconst errorMessage = error?.message?.includes('tiles generation failed')\n\t\t\t? i18n.t('i18n.assetZoomTilesUnavailable')\n\t\t\t: error;\n\t\tthis.trigger.apply(this, ['error', this, errorMessage].concat(args));\n\t\tthis.eventStrs = {};\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} additionalArgs Additional arguments\n\t */\n\ttriggerComplete(additionalArgs) {\n\t\tadditionalArgs = additionalArgs || [];\n\t\tconst args = additionalArgs.concat(this.get('args') || []);\n\t\t_.each(this.eventStrs, (eventArgs, eventStr) => {\n\t\t\teventArgs = eventArgs || args;\n\t\t\t// TODO: fix all places using `succeeded` and use `complete`\n\t\t\tdispatcher.trigger.apply(\n\t\t\t\tdispatcher,\n\t\t\t\t[eventStr + ':succeeded'].concat(eventArgs.concat(this)),\n\t\t\t);\n\t\t});\n\t\tthis.trigger.apply(this, ['complete', this].concat(args));\n\t\tthis.eventStrs = {};\n\t}\n\n\ttriggerProgress(progress, additionalArgs) {\n\t\tadditionalArgs = additionalArgs || [];\n\t\tconst args = additionalArgs.concat(this.get('args') || []);\n\t\t_.each(this.eventStrs, (eventArgs, eventStr) => {\n\t\t\teventArgs = eventArgs || args;\n\t\t\tdispatcher.trigger.apply(\n\t\t\t\tdispatcher,\n\t\t\t\t[eventStr + ':progress', progress].concat(eventArgs.concat(this)),\n\t\t\t);\n\t\t});\n\t\tthis.trigger.apply(this, ['progress', this, progress].concat(args));\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean} Rejected\n\t */\n\t// note: this is currently only used for the checkin error of identical files\n\tisRejected() {\n\t\t// the uploaded file is identical to the current asset version\n\t\tconst messageCode = 2103,\n\t\t\tprogressMessages = this.get('progressMessages') || [],\n\t\t\tmessageArr = progressMessages.filter(\n\t\t\t\t(message) => message.code === messageCode,\n\t\t\t);\n\t\treturn messageArr.length > 0;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'BatchJob';\n\t}\n}\n\nexport default BatchJob;\n","/**\n * LabelValue model, utilized by every collection whose fetch method returns an array of LabelValueBeans\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nclass LabelValue extends Base {\n\t/**\n\t * Set the attribute backbone will look to as the id\n\t * @type {string}\n\t */\n\tget idAttribute() {\n\t\treturn 'label';\n\t}\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {string} defaults.label - The default label\n\t * @property {string} defaults.value - The default value\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tlabel: undefined,\n\t\t\tvalue: undefined,\n\t\t};\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'LabelValue';\n\t}\n}\n\nexport default LabelValue;\n","/**\n * Describe your model\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\n\nclass Pager extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - Model defaults\n\t * @property {string} defaults.currentPage - Current page number\n\t * @property {number} defaults.itemTotal - Total number of items\n\t * @property {number} defaults.pageSize - Items per page\n\t * @property {number} defaults.pagesToDisplay - Number of numeric page options to display\n\t * @property {number} defaults.pageTotal - Total number of pages\n\t * @property {boolean} defaults.routesToPage - Changing page causes route (TODO: this should not be handled in the pager model itself)\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tcurrentPage: 1,\n\t\t\titemTotal: 0,\n\t\t\tpageSize: 50,\n\t\t\tpagesToDisplay: 8,\n\t\t\tpageTotal: 0,\n\t\t\tstartIndex: null,\n\t\t\troutesToPage: true,\n\t\t};\n\t}\n\n\t/**\n\t * When passing options to a madel, Backbone will look for a definition of the model's collection and if we should parse the initial attributes (which also receives our options object)\n\t * All options are then passed along to the set method which is fired off the bat to set the model's attributes\n\t * @override\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t// Debounced/throttled methods\n\t\tthis.changedCurrentPage = _.debounce(this.changedCurrentPage, 50);\n\n\t\t// Hey, listen!\n\t\tthis.on('change:itemTotal change:pageSize', this.calculatePages).on(\n\t\t\t'change:currentPage',\n\t\t\tthis.changedCurrentPage,\n\t\t);\n\n\t\tif (this.collection) {\n\t\t\t// To avoid any pager total collision, when we fetch we do not want to listen\n\t\t\t// for add and removes until after the sync\n\t\t\tthis.listenTo(this.collection, 'request:read', () => {\n\t\t\t\tthis.stopListening(this.collection, 'add').stopListening(\n\t\t\t\t\tthis.collection,\n\t\t\t\t\t'remove',\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tthis.listenTo(this.collection, 'destroy', () => {\n\t\t\t\tconst assetCount = this.get('itemTotal');\n\t\t\t\tassetCount && this.set('itemTotal', assetCount - 1);\n\t\t\t}).listenTo(this.collection, 'sync', (collection, results, opts) => {\n\t\t\t\tif (!collection.selection) return;\n\n\t\t\t\tconst p = {};\n\t\t\t\tp.firstIndex = collection.selection.startPosition;\n\t\t\t\tp.lastIndex = p.firstIndex + collection.length - 1; // i think this is smarter.\n\t\t\t\tp.firstPage = p.firstIndex == 1;\n\t\t\t\tp.lastChunk = this.lastChunk;\n\n\t\t\t\t// logic: imagine chunkSize = 50, then ...\n\t\t\t\t// startPosition 1 = page 1\n\t\t\t\t// startPosition 2 - 51 = page 2 ( < 51 is an abnormal start position, but it's ahead of some assets)\n\t\t\t\t// startPosition 52 = page 3, and so on.\n\t\t\t\tp.currentPage = Math.ceil((p.firstIndex - 1) / collection.pageSize) + 1;\n\n\t\t\t\tif (this.has('itemTotal')) {\n\t\t\t\t\t// 1 = 1 page. 51- 100 = 2 pages. 101 = 3 pages. And so on.\n\t\t\t\t\tp.pageTotal = Math.ceil(this.get('itemTotal') / collection.pageSize);\n\t\t\t\t}\n\n\t\t\t\tthis.set(p);\n\n\t\t\t\t// To be safe, if anything rogue fires syncs without a `request:read`\n\t\t\t\t// cleanup\n\t\t\t\tthis.stopListening(this.collection, 'add')\n\t\t\t\t\t.stopListening(this.collection, 'remove')\n\t\t\t\t\t.listenTo(this.collection, 'add', (model, collection, opts) => {\n\t\t\t\t\t\tif (opts.index == null || opts.success != null) return;\n\t\t\t\t\t\tthis.adjustTotal(1);\n\t\t\t\t\t})\n\t\t\t\t\t.listenTo(this.collection, 'remove', (model, collection, opts) => {\n\t\t\t\t\t\tif (opts.index == null || opts.success != null) return;\n\t\t\t\t\t\tthis.adjustTotal(-1);\n\t\t\t\t\t});\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Calculate the total asset count after add or remove\n\t * @param {number} adj (+1 or -1)\n\t * @method\n\t */\n\tadjustTotal(adj) {\n\t\tconst assetCount = this.get('itemTotal');\n\t\tassetCount && this.set('itemTotal', assetCount + adj);\n\t}\n\n\t/**\n\t * Calculate the total number of pages required given itemTotal and pageSize\n\t * @method\n\t */\n\tcalculatePages() {\n\t\tconst pageTotal = Math.ceil(this.get('itemTotal') / this.get('pageSize'));\n\t\tthis.set('pageTotal', pageTotal);\n\t}\n\n\t/**\n\t * @method\n\t * @param {module:app/models/pager} pager Pager (this)\n\t * @param {number} page Page\n\t * @param {object} opts Options\n\t */\n\tchangedCurrentPage(pager, page, opts) {\n\t\tconst collection = this.collection;\n\n\t\tif (!collection) return;\n\n\t\t// see if this pager uses the route\n\t\tif (this.get('routesToPage')) {\n\t\t\tdispatcher.trigger('router:page', page, this.collection.routeContext);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.collection.gotoPage(page, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Options\n\t */\n\tfirstPage(opts) {\n\t\tthis.set('currentPage', 1, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @return {object} PageDTO\n\t */\n\tgetPageDTO() {\n\t\tconst pageDTO = {\n\t\t\tsize: this.get('pageSize'),\n\t\t};\n\n\t\tif (this.get('startId') != null) {\n\t\t\tpageDTO.startId = this.get('startId');\n\t\t} else {\n\t\t\t// This is 0 based pager\n\t\t\tpageDTO.startIndex = (this.get('currentPage') - 1) * this.get('pageSize');\n\t\t}\n\n\t\treturn pageDTO;\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} page Page number\n\t * @param {object} opts Options\n\t */\n\tgotoPage(page, opts) {\n\t\tthis.set('currentPage', parseInt(page), opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Options\n\t */\n\tlastPage(opts) {\n\t\tthis.set('currentPage', this.get('pageTotal'), opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Options\n\t */\n\tnextPage(opts) {\n\t\tconst currentPage = this.get('currentPage');\n\t\tif (currentPage >= this.get('pageTotal')) return;\n\n\t\tthis.set('currentPage', currentPage + 1, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Options\n\t */\n\tprevPage(opts) {\n\t\tconst currentPage = this.get('currentPage');\n\t\tif (currentPage <= 1) return;\n\n\t\tthis.set('currentPage', currentPage - 1, opts);\n\t}\n\n\t/**\n\t * We get back a start index on paging calls\n\t * @method\n\t * @param {number} index Index\n\t */\n\tsetStartIndex(index, opts) {\n\t\treturn this.set(\n\t\t\t{\n\t\t\t\tcurrentPage: Math.floor(index / this.get('pageSize') + 1),\n\t\t\t\tstartIndex: index,\n\t\t\t},\n\t\t\t{fetch: false, ...opts},\n\t\t);\n\t}\n\t/**\n\t * When clearing the current cart we need to reset the pager\n\t * without trashing instance specific attributes\n\t * @method\n\t */\n\tclearPages() {\n\t\tthis.set({\n\t\t\tcurrentPage: 1,\n\t\t\tfirstIndex: 1,\n\t\t\titemTotal: 0,\n\t\t\tpageTotal: 0,\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Pager';\n\t}\n}\n\nexport default Pager;\n","/**\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nclass Progress extends Base {\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {boolean} defaults.active - Progress is active\n\t * @property {string} defaults.message - Progress message\n\t * @property {number} defaults.percent - Progress percentage\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tpercent: 0,\n\t\t\tmessage: '',\n\t\t\tactive: false,\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t// Use delay option if passed\n\t\tthis.delay = opts.delay != null ? opts.delay : 1000;\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} message Message\n\t */\n\tcomplete(message) {\n\t\tthis.set({\n\t\t\tmessage: message || '',\n\t\t\tpercent: 100,\n\t\t});\n\t\t_.delay(() => {\n\t\t\tthis.set({\n\t\t\t\tactive: false,\n\t\t\t\tpercent: 0,\n\t\t\t});\n\t\t}, this.delay);\n\t}\n\n\t/**\n\t * We have no server methods - just cleanup\n\t * @override\n\t */\n\tdestroy() {\n\t\tthis.stopListening();\n\t}\n\n\t/**\n\t * @method\n\t */\n\treset() {\n\t\tthis.set(this.constructor.GetDefaults());\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} percent Percent\n\t * @param {string} message Message\n\t */\n\tupdate(percent, message) {\n\t\tthis.set({\n\t\t\tactive: true,\n\t\t\tmessage: message || '',\n\t\t\tpercent: percent,\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Progress';\n\t}\n}\n\nexport default Progress;\n","/**\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nclass Sorter extends Base {\n\t/**\n\t * @property {object} defaults - Model defaults\n\t * @property {string} defaults.field - Sort field\n\t * @property {string} defaults.sortOrder - Sort order (asc, desc)\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tfield: '',\n\t\t\torder: 'desc',\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * If not provided, the keys of the collection's models will be used\n\t\t * @memberof module:app/models/sorter\n\t\t * @alias sortableFields\n\t\t * @type {array}\n\t\t */\n\t\tthis.sortableFields =\n\t\t\topts.sortableFields || _.keys(this.collection.model.GetDefaults());\n\n\t\t/**\n\t\t * @memberof module:app/models/sorter\n\t\t * @alias sortableOrders\n\t\t * @type {array}\n\t\t */\n\t\tthis.sortableOrders = opts.sortableOrders || ['asc', 'desc'];\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(\n\t\t\tthis,\n\t\t\t'change',\n\t\t\t_.debounce((sorter, opts) => {\n\t\t\t\tthis.collection[this.collection.preferredFetchMethod || 'fetch'](\n\t\t\t\t\t_.extend({duplicateQueryPolicy: 'abort'}, opts),\n\t\t\t\t);\n\t\t\t}, 15),\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @return {object}\n\t */\n\tgetSortDTO() {\n\t\treturn this.self();\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} field Field\n\t * @param {string} order Order\n\t */\n\tsetSort(field, order) {\n\t\torder = order || 'desc';\n\t\t// Normalize\n\t\tif (order === 'descending') order = 'desc';\n\t\tif (order === 'ascending') order = 'asc';\n\n\t\tif (!_.contains(this.sortableFields, field)) {\n\t\t\tthrow new Error('Invalid sort `field` \"' + field + '\"');\n\t\t}\n\t\tif (!_.contains(this.sortableOrders, order)) {\n\t\t\tthrow new Error('Invalid sort `order` \"' + order + '\"');\n\t\t}\n\n\t\treturn this.set({\n\t\t\tfield: field,\n\t\t\torder: order,\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Sorter';\n\t}\n}\n\nexport default Sorter;\n","// Definitions of the various autocompletion API calls go here.\n// The return types are 'lvb' for an array of labelValueBeans, or 'string' for an array of strings.\n// TODO: double-check that all these permissionMatrixLevel integers match what Flex uses.\nexport const completions = {\n\tattributeHistory: {\n\t\tdata: [] as string[],\n\t\treturn: 'lvb',\n\t},\n\tsearch: {\n\t\tapi: 'getKeywordAutoList',\n\t\targs: ['_TERM_', ''], // required to pass a blank second argument.\n\t\treturn: 'string',\n\t},\n\tsavedSearch: {\n\t\tapi: 'getSavedSearchAutoList',\n\t\targs: ['_TERM_'],\n\t\treturn: 'lvb',\n\t},\n\tasset: {\n\t\tapi: 'getAssetAutoList',\n\t\targs: ['_TERM_'],\n\t\treturn: 'lvb',\n\t},\n\tcategory(opts: Record<string, string>) {\n\t\treturn {\n\t\t\tapi: 'getCategoryAutoList',\n\t\t\targs: ['_TERM_', opts['permission-matrix-level'] || 1],\n\t\t\treturn: 'lvb',\n\t\t};\n\t},\n\tcategoryName(opts: Record<string, string>) {\n\t\treturn {\n\t\t\tapi: 'getCategoryAutoList',\n\t\t\targs: ['_TERM_', opts['permission-matrix-level'] || 1],\n\t\t\treturn: 'string',\n\t\t};\n\t},\n\tdomain: {\n\t\tapi: 'getDomainAutoList',\n\t\targs: ['_TERM_'],\n\t\treturn: 'lvb',\n\t},\n\tuser(opts: Record<string, string>) {\n\t\treturn {\n\t\t\tapi: 'getUserAutoList',\n\t\t\targs: ['_TERM_', opts['permission-matrix-level'] || 1],\n\t\t\t// TODO: this is a hack until we move completely away from this old autocomplete system\n\t\t\treturn: 'userAutoListItemToLvb',\n\t\t};\n\t},\n\tsharedResource(opts: Record<string, string>) {\n\t\treturn {\n\t\t\tapi: 'getSharedResourceAutoList',\n\t\t\targs: [opts['resource-name'], '_TERM_', opts.permission || 'read'],\n\t\t\treturn: 'lvb',\n\t\t};\n\t},\n\tgroup: {\n\t\tapi: 'getGroupAutoList',\n\t\targs: ['_TERM_'],\n\t\treturn: 'lvb',\n\t},\n\tpage: {\n\t\t// This is local data which will be populated when available\n\t\tdata: [] as string[],\n\t\treturn: 'string',\n\t},\n\tsemanticObjects(opts: Record<string, string>) {\n\t\treturn {\n\t\t\tapi: 'getSemanticObjectAutoList',\n\t\t\targs: ['_TERM_', opts['semantic-object-type-id']],\n\t\t\treturn: 'string',\n\t\t};\n\t},\n\tsemanticObjectTypes: {\n\t\tapi: 'getSemanticObjectTypeAutoList',\n\t\targs: ['_TERM_'],\n\t\treturn: 'lvb',\n\t},\n\ttag(opts: Record<string, string>) {\n\t\treturn {\n\t\t\tapi: 'metadataAutoCompleteLookup',\n\t\t\targs: [opts['dataset-id'], '_TERM_'],\n\t\t\treturn: 'string',\n\t\t};\n\t},\n\tcart: {\n\t\tapi: 'getSavedCartAutoList',\n\t\targs: ['_TERM_'],\n\t\treturn: 'lvb',\n\t},\n\tsavedCart: {\n\t\t// duplicate of above\n\t\tapi: 'getSavedCartAutoList',\n\t\targs: ['_TERM_'],\n\t\treturn: 'lvb',\n\t},\n\tmetadataLookup(opts: Record<string, string>) {\n\t\treturn {\n\t\t\tapi: 'metadataDatasetAutoList',\n\t\t\targs: [opts['template-id'], '_TERM_'],\n\t\t\treturn: 'string',\n\t\t};\n\t},\n\tattributeProfile: {\n\t\tapi: 'getAttributeProfileAutoList',\n\t\targs: ['_TERM_'],\n\t\treturn: 'lvb',\n\t},\n\tvocabulary: {\n\t\tapi: 'vocabularyLookup',\n\t\targs: ['_TERM_'],\n\t\treturn: 'inb',\n\t},\n\tvocabularyValue(opts: Record<string, string>) {\n\t\treturn {\n\t\t\tapi: 'vocabularyValueLookup',\n\t\t\targs: [opts['vocabulary-id'], '_TERM_'],\n\t\t\treturn: 'string',\n\t\t};\n\t},\n};\n\nexport default {completions};\n","import {UserLevel} from '@netx/core-user/constants';\n\nexport const MINIMUM_USER_LEVEL = UserLevel.MANAGER;\n","import {getPreference} from '@netx/core-user-next/utils/getPreference';\n\nexport const assetExpirationEnabled = () =>\n\tgetPreference('asset.expire.enabled', true);\n","import type {AssetGalleryAsset} from '@netx/core-asset-gallery/types';\nimport {type IAsset} from '@netx/core-asset-next/schema';\nimport {assetExpires} from '../utils/assetExpires';\nimport {canModifyAssetExpiration} from './canModifyAssetExpiration';\n\nexport const canExpireAsset = (asset: AssetGalleryAsset | IAsset) =>\n\t!assetExpires(asset) && canModifyAssetExpiration(asset);\n","import type {AssetGalleryAsset} from '@netx/core-asset-gallery/types';\nimport {type IAsset} from '@netx/core-asset-next/schema';\nimport {\n\tallows,\n\tPermissionMatrixName,\n} from '@netx/core-permissions/utils/allows';\nimport {currentUserMeetsUserLevel} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {MINIMUM_USER_LEVEL} from '../constants';\nimport {assetExpirationEnabled} from './assetExpirationEnabled';\n\nexport const canModifyAssetExpiration = (asset: AssetGalleryAsset | IAsset) =>\n\tassetExpirationEnabled() &&\n\tcurrentUserMeetsUserLevel(MINIMUM_USER_LEVEL) &&\n\tallows(asset.permissionMatrix, PermissionMatrixName.DELETE);\n","import type {AssetGalleryAsset} from '@netx/core-asset-gallery/types';\nimport {type IAsset} from '@netx/core-asset-next/schema';\nimport {assetExpires} from '../utils/assetExpires';\n\nimport {canModifyAssetExpiration} from './canModifyAssetExpiration';\n\nexport const canUnexpireAsset = (asset: AssetGalleryAsset | IAsset) =>\n\tassetExpires(asset) && canModifyAssetExpiration(asset);\n","import {utc} from '@netx/core/lib/netx-moment';\n\n/**\n * @param expirationDate datetime in milliseconds\n */\nexport const assetExpirationToDateString = (expirationDate: number) => {\n\treturn `${utc(expirationDate).local().format('YYYY-MM-DD')}`;\n};\n\nexport default assetExpirationToDateString;\n","import type {AssetGalleryAsset} from '@netx/core-asset-gallery/types';\nimport {type IAsset} from '@netx/core-asset-next/schema';\n\nexport const assetExpires = (asset: AssetGalleryAsset | IAsset) =>\n\t!!asset.expirationDate;\n","import moment from '@netx/core/lib/netx-moment';\n\nexport const userInputToExpirationTime = (expirationDate: string) => {\n\tconst date = moment(expirationDate).endOf('day');\n\tdate.utc();\n\n\tconst tomorrow = moment().utc(false).add(1, 'day').valueOf();\n\n\t// Make sure date is valid and that it is greater than or equal to tomorrow\n\tif (!date.isValid() || date.valueOf() < tomorrow) {\n\t\tthrow new Error('Invalid expiration date');\n\t}\n\n\treturn date.valueOf();\n};\n\nexport default userInputToExpirationTime;\n","import {UserLevel} from '@netx/core-user/constants';\n\nexport const ASSET_DOWNLOAD_MINUMUM_USER_LEVEL = UserLevel.CONSUMER;\nexport const ASSET_RESYNC_MINIMUM_USER_LEVEL = UserLevel.PRODUCER;\n\nexport enum AssetPref {\n\tCHECKSUM_ENABLED = 'metadata.checksumEnabled',\n}\n","import {AssetXMPPacketStatus, type IAsset} from './schema';\n\n// what a monster...\nexport const assetDefaults: Readonly<Omit<IAsset, 'assetId'>> = {\n\talphaChannel: '',\n\tattributeIds: [],\n\tattributeNames: [],\n\tattributeValues: [],\n\tattributePermissions: [],\n\taudioBitRate: 0,\n\taudioChannelCount: 0,\n\taudioChannelLayout: '',\n\taudioSampleRate: 0,\n\tbitDepth: 0,\n\tcategories: [],\n\tcategoryid: 0,\n\tcategoryPaths: [],\n\tcheckout: 0,\n\tcheckoutUserLabel: '',\n\tcolorProfile: '',\n\tcommitAttributes: false,\n\tconstituentType: '',\n\tconstituentIds: [],\n\tcreationdate: '',\n\tdpi: 0,\n\tduration: 0,\n\texpirationDate: 0,\n\tfile: '',\n\tfileFormatFamily: [],\n\tfileheight: 0,\n\tfilesize: 0,\n\tfiletypelabel: '',\n\tfilewidth: 0,\n\tfileSize2: 0,\n\tfiletype: 0,\n\tflvPreview: false,\n\tgeoLocationLabel: '',\n\thidden: 0,\n\tiiifManifestUrl: '',\n\timportDate: '',\n\timportUserLabel: '',\n\tinCurrentCart: false,\n\tlatitude: 0.0,\n\tlocationContext: '',\n\tlocationid: 0,\n\tlongitude: 0.0,\n\tmd5sum: '',\n\tmoduserid: 0,\n\tmoduserlabel: '',\n\tmetadataAvailable: false,\n\tmoddate: '',\n\tname: '',\n\tpath: '',\n\tpermissionMatrix: [1, 1, 1, 1, 1, 1],\n\tproofAvailable: false,\n\tpreviewUrl: '',\n\tpreviewHeight: 0,\n\tpreviewWidth: 0,\n\trating: 0,\n\treadOnly: 0,\n\trelatedAvailable: false,\n\trepurposeAvailability: 0,\n\treviewAvailable: false,\n\tstatus: 0,\n\tstatDeliveries: 0,\n\tstatPreviews: 0,\n\ttemplate: false,\n\ttemplatable: false,\n\ttemplateCustomizable: false,\n\tthumb: '',\n\tthumbUrl: '',\n\ttimeScale: 0,\n\tversionIds: [],\n\tviewIds: [],\n\tviewNames: [],\n\tvisible: 1,\n\txmpPacketStatus: AssetXMPPacketStatus.NOT_STORED_NO_XMP,\n\tzoomAvailable: false,\n\n\t// Deprecated fields -- do not use!\n\tattribute1: '',\n\tattribute2: '',\n\tattribute3: '',\n\tattribute4: '',\n\tattribute5: '',\n\tattribute6: '',\n\tattribute7: '',\n\tattribute8: '',\n\tattribute9: '',\n\tattribute10: '',\n\tattribute11: '',\n\tattribute12: '',\n\tattribute13: '',\n\tattribute14: '',\n\tattribute15: '',\n\tattribute16: '',\n\thasChildren: false,\n\timageid: 0,\n\tmetadata: '',\n\tparentId: 0,\n};\n","import {AssetStatus, type IAsset} from '../schema';\n\n/**\n * This test is cribbed from Flex: it checks the asset.status value to make sure the asset file is actually available on the DAM.\n * @returns Asset is present\n */\nexport const assetIsPresent = (asset?: IAsset): asset is IAsset =>\n\t!!asset &&\n\t[AssetStatus.ONLINE, AssetStatus.TEMP, AssetStatus.NEARLINE].includes(\n\t\tasset.status,\n\t);\n","import {assetIsPresent} from '@netx/core-asset/utils/assetIsPresent';\nimport {\n\tallows,\n\tPermissionMatrixName,\n} from '@netx/core-permissions/utils/allows';\nimport {currentUserMeetsUserLevel} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {ASSET_RESYNC_MINIMUM_USER_LEVEL} from '../constants';\nimport {type IAsset} from '../schema';\n\nexport const canResyncAsset = (asset?: IAsset) =>\n\tasset != null &&\n\tcurrentUserMeetsUserLevel(ASSET_RESYNC_MINIMUM_USER_LEVEL) &&\n\tassetIsPresent(asset) &&\n\tallows(asset.permissionMatrix, PermissionMatrixName.MODIFY);\n","import {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {type IAsset} from '../schema';\nimport {assetIsPresent} from './assetIsPresent';\n\nexport const canZoomAsset = (asset?: IAsset) =>\n\tassetIsPresent(asset) &&\n\t(getPreference('zoom.tiles.enabled', true) ||\n\t\t(getPreference('equilibrium.enabled', true) &&\n\t\t\tgetPreference('equilibrium.zoomEnabled', true))) &&\n\tasset.zoomAvailable &&\n\t// HACKaround for HTML-868:\n\tasset.filewidth > 0 &&\n\tasset.fileheight > 0;\n","import {type IAsset, AssetStatus} from '../schema';\n\nexport const assetNotCheckedOut = (asset?: IAsset) => {\n\tif (!asset) return false;\n\treturn asset.status !== AssetStatus.CHECKOUT;\n};\n","import {userProfile} from '@netx/core-user/collections/singletons/userProfile';\nimport {\n\tallows,\n\tPermissionMatrixName,\n} from '@netx/core-permissions/utils/allows';\nimport {\n\tcurrentUserMeetsUserLevel,\n\tUserLevel,\n} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {type IAsset, AssetStatus} from '../schema';\n\nexport const canCheckIn = (asset?: IAsset) => {\n\tif (!asset) return false;\n\n\tconst checkedOutBy = asset.checkout;\n\tif (\n\t\tcheckedOutBy &&\n\t\t!currentUserMeetsUserLevel(UserLevel.ADMIN) &&\n\t\tcheckedOutBy !== userProfile.id\n\t)\n\t\treturn false;\n\n\t// https://jira.netx.net/browse/DAM-13370\n\treturn (\n\t\tcurrentUserMeetsUserLevel(UserLevel.PRODUCER) &&\n\t\tallows(asset.permissionMatrix, PermissionMatrixName.MODIFY) &&\n\t\t[\n\t\t\tAssetStatus.NEARLINE,\n\t\t\tAssetStatus.ONLINE,\n\t\t\tAssetStatus.TEMP,\n\t\t\tAssetStatus.CHECKOUT,\n\t\t].includes(asset.status)\n\t);\n};\n","import {\n\tallows,\n\tPermissionMatrixName,\n} from '@netx/core-permissions/utils/allows';\nimport {\n\tcurrentUserMeetsUserLevel,\n\tUserLevel,\n} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {type IAsset, AssetStatus} from '../schema';\nimport {assetNotCheckedOut} from './assetNotCheckedOut';\n\nexport const canCheckOut = (asset?: IAsset) => {\n\treturn (\n\t\tasset != null &&\n\t\tcurrentUserMeetsUserLevel(UserLevel.PRODUCER) &&\n\t\tallows(asset.permissionMatrix, PermissionMatrixName.MODIFY) &&\n\t\tassetNotCheckedOut(asset) &&\n\t\t[AssetStatus.NEARLINE, AssetStatus.ONLINE, AssetStatus.TEMP].includes(\n\t\t\tasset.status,\n\t\t)\n\t);\n};\n","import {isAssetCheckedOut} from '@netx/core-asset/utils';\nimport {\n\tallows,\n\tPermissionMatrixName,\n} from '@netx/core-permissions/utils/allows';\nimport {\n\tcurrentUserMeetsUserLevel,\n\tUserLevel,\n} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {type IAsset} from '../schema';\n\nexport const canCreateShareLinkFromAsset = (asset?: IAsset) =>\n\tasset != null &&\n\t!isAssetCheckedOut(asset) &&\n\tcurrentUserMeetsUserLevel(UserLevel.CONSUMER) &&\n\tallows(asset.permissionMatrix, PermissionMatrixName.DOWNLOAD);\n\nexport default canCreateShareLinkFromAsset;\n","import {isBrandPortal} from '@netx/core/utils';\nimport {type IAsset} from '../schema';\nimport {canCreateShareLinkFromAsset} from './canCreateShareLinkFromAsset';\n\nexport const canCreateEmbedLinkFromAsset = (asset?: IAsset) =>\n\tcanCreateShareLinkFromAsset(asset);\n\nexport default canCreateEmbedLinkFromAsset;\n","import {assetIsPresent} from '@netx/core-asset/utils/assetIsPresent';\nimport {\n\tallows,\n\tPermissionMatrixName,\n} from '@netx/core-permissions/utils/allows';\nimport {\n\tcurrentUserMeetsUserLevel,\n\tUserLevel,\n} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {type IAsset} from '../schema';\n\nexport const canCreatePdfFromAsset = (asset?: IAsset) =>\n\tasset != null &&\n\tcurrentUserMeetsUserLevel(UserLevel.CONSUMER) &&\n\tassetIsPresent(asset) &&\n\tallows(asset.permissionMatrix, PermissionMatrixName.DOWNLOAD);\n\nexport default canCreatePdfFromAsset;\n","import {\n\tallows,\n\tPermissionMatrixName,\n} from '@netx/core-permissions/utils/allows';\nimport {type IAsset} from '../schema';\n\nexport const canDeleteAsset = (asset?: Pick<IAsset, 'permissionMatrix'>) =>\n\tasset != null && allows(asset.permissionMatrix, PermissionMatrixName.DELETE);\n\nexport default canDeleteAsset;\n","import {assetIsPresent, isAssetCheckedOut} from '@netx/core-asset/utils';\nimport {\n\tallows,\n\tPermissionMatrixName,\n} from '@netx/core-permissions/utils/allows';\nimport {type IAsset} from '../schema';\n\nexport const canDownloadAsset = (asset?: IAsset) =>\n\tasset != null &&\n\t!isAssetCheckedOut(asset) &&\n\tassetIsPresent(asset) &&\n\tallows(asset.permissionMatrix, PermissionMatrixName.DOWNLOAD);\n\nexport default canDownloadAsset;\n","import {\n\tcurrentUserMeetsUserLevel,\n\tUserLevel,\n} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {\n\tallows,\n\tPermissionMatrixName,\n} from '@netx/core-permissions/utils/allows';\nimport {type IAsset} from '../schema';\n\nexport const canLockAsset = (asset?: IAsset) => {\n\treturn (\n\t\tasset != null &&\n\t\tallows(asset.permissionMatrix, PermissionMatrixName.MODIFY) &&\n\t\tasset.readOnly !== 1 &&\n\t\tcurrentUserMeetsUserLevel(UserLevel.ADMIN)\n\t);\n};\n","import {\n\tallows,\n\tPermissionMatrixName,\n} from '@netx/core-permissions/utils/allows';\nimport {\n\tcurrentUserMeetsUserLevel,\n\tUserLevel,\n} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {type IAsset} from '../schema';\n\nexport const canOrganizeAsset = (asset?: IAsset) =>\n\tasset != null &&\n\tcurrentUserMeetsUserLevel(UserLevel.MANAGER) &&\n\tallows(asset.permissionMatrix, PermissionMatrixName.MODIFY);\n\nexport default canOrganizeAsset;\n","import {mediaServiceIsAuthenticated} from '@netx/core-share-media-service/enablers';\nimport {currentUserMeetsUserLevel, UserLevel} from '@netx/core-user-next/utils';\nimport {type IAsset} from '../schema';\n\nexport const canPublishAsset = (asset?: IAsset, mediaServiceName = '') =>\n\tasset?.fileFormatFamily.includes('video') === true &&\n\tcurrentUserMeetsUserLevel(UserLevel.CONSUMER) &&\n\tmediaServiceIsAuthenticated(mediaServiceName);\n","import {\n\tallows,\n\tPermissionMatrixName,\n} from '@netx/core-permissions/utils/allows';\nimport {\n\tcurrentUserMeetsUserLevel,\n\tUserLevel,\n} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {type IAsset} from '../schema';\nimport {assetNotCheckedOut} from './assetNotCheckedOut';\n\nexport const canReimportAsset = (asset?: IAsset) => {\n\treturn (\n\t\tasset != null &&\n\t\tcurrentUserMeetsUserLevel(UserLevel.PRODUCER) &&\n\t\tallows(asset.permissionMatrix, PermissionMatrixName.MODIFY) &&\n\t\tassetNotCheckedOut(asset)\n\t);\n};\n","import {\n\tcurrentUserMeetsUserLevel,\n\tUserLevel,\n} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {type IAsset} from '../schema';\n\nexport const canUnlockAsset = (asset?: IAsset) => {\n\treturn (\n\t\tasset != null &&\n\t\tasset.readOnly === 1 &&\n\t\tcurrentUserMeetsUserLevel(UserLevel.ADMIN)\n\t);\n};\n","import {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {AssetPref} from '../constants';\n\nexport const checksumEnabled = () =>\n\tgetPreference(AssetPref.CHECKSUM_ENABLED, true);\n\nexport default checksumEnabled;\n","import {z} from 'zod';\nimport {PermissionMatrixSchema} from '@netx/core-permissions/schema';\n\nexport enum AssetXMPPacketStatus {\n\tSTORED = 100,\n\tNOT_STORED_TOO_LARGE = 200,\n\tNOT_STORED_NO_XMP = 300,\n}\n\nexport enum AssetStatus {\n\tUNKNOWN = 0,\n\tONLINE = 1,\n\tNEARLINE = 2,\n\tOFFLINE = 3,\n\tTEMP = 4,\n\tCHECKOUT = 5,\n\tIMPORT_IN_PROGRESS = 6,\n}\n\nexport const AssetSchema = z.object({\n\tassetId: z.number().int().positive(),\n\talphaChannel: z.string(),\n\tattributeIds: z.array(z.number().int().positive()),\n\tattributeNames: z.array(z.string()),\n\tattributePermissions: z.array(\n\t\tz.union([z.literal('d'), z.literal('r'), z.literal('w')]),\n\t),\n\tattributeValues: z.array(z.union([z.string(), z.number()])),\n\taudioBitRate: z.number().int().positive(),\n\taudioChannelCount: z.number().int().positive(),\n\taudioChannelLayout: z.string(),\n\taudioSampleRate: z.number().int().positive(),\n\tbitDepth: z.number().int().positive(),\n\tcategories: z.array(z.number().int().positive()),\n\tcategoryid: z.number().int().positive(),\n\tcategoryPaths: z.array(z.string()),\n\tcheckout: z.number().int().positive(),\n\tcheckoutUserLabel: z.string(),\n\tcolorProfile: z.string(),\n\tcommitAttributes: z.boolean(),\n\tconstituentIds: z.array(z.number().int().positive()),\n\tconstituentType: z.string(),\n\tcreationdate: z.string(),\n\tdpi: z.number().int().positive(),\n\tduration: z.number().int().positive(),\n\texpirationDate: z.number().int().positive(),\n\tfile: z.string(),\n\tfileFormatFamily: z.array(z.string()),\n\tfileheight: z.number().int().positive(),\n\tfilesize: z.number().int().positive(),\n\tfileSize2: z.number().int().positive(),\n\tfiletype: z.number().int().positive(),\n\tfiletypelabel: z.string(),\n\tfilewidth: z.number().int().positive(),\n\tflvPreview: z.boolean(),\n\tgeoLocationLabel: z.string(),\n\thidden: z.union([z.literal(0), z.literal(1)]),\n\tiiifManifestUrl: z.string().nullable(),\n\timportDate: z.string(),\n\timportuserid: z.number().int().positive(),\n\timportUserLabel: z.string(),\n\tinCurrentCart: z.boolean(),\n\tlatitude: z.number().int(),\n\tlocationContext: z.string(),\n\tlocationid: z.number().int().positive(),\n\tlongitude: z.number().int(),\n\tmd5sum: z.string().nullable(),\n\tmoddate: z.string(),\n\tmoduserid: z.number().int().positive(),\n\tmoduserlabel: z.string(),\n\tmetadataAvailable: z.boolean(),\n\tname: z.string(),\n\tpath: z.string(),\n\tpermissionMatrix: PermissionMatrixSchema,\n\tpreviewHeight: z.number().int().positive(),\n\tpreviewUrl: z.string(),\n\tpreviewWidth: z.number().int().positive(),\n\tproofAvailable: z.boolean(),\n\trating: z.number().int(),\n\treadOnly: z.union([z.literal(0), z.literal(1)]),\n\trelatedAvailable: z.boolean(),\n\trepurposeAvailability: z.number().int(),\n\treviewAvailable: z.boolean(),\n\tstatDeliveries: z.number().int(),\n\tstatPreviews: z.number().int(),\n\tstatus: z.nativeEnum(AssetStatus),\n\ttemplatable: z.boolean(),\n\ttemplate: z.boolean(),\n\ttemplateCustomizable: z.boolean(),\n\tthumb: z.string(), // TODO: where did this come from? always empty string\n\tthumbUrl: z.string(),\n\ttimeScale: z.number().int(),\n\tversionIds: z.array(z.number().int().positive()),\n\tviewIds: z.array(z.number().int().positive()),\n\tviewNames: z.array(z.string()),\n\tvisible: z.union([z.literal(0), z.literal(1)]),\n\txmpPacketStatus: z.nativeEnum(AssetXMPPacketStatus),\n\tzoomAvailable: z.boolean(),\n\n\t// Deprecated fields -- do not use!\n\timageid: z.number().int().positive(),\n\tmetadata: z.string(),\n\t// attribute1: z.string(),\n\tattribute2: z.string(),\n\tattribute3: z.string(),\n\tattribute4: z.string(),\n\tattribute5: z.string(),\n\tattribute6: z.string(),\n\tattribute7: z.string(),\n\tattribute8: z.string(),\n\tattribute9: z.string(),\n\tattribute10: z.string(),\n\tattribute11: z.string(),\n\tattribute12: z.string(),\n\tattribute13: z.string(),\n\tattribute14: z.string(),\n\tattribute15: z.string(),\n\tattribute16: z.string(),\n\thasChildren: z.boolean(),\n\tparentId: z.number().int().positive(),\n});\n\nexport type IAsset = z.infer<typeof AssetSchema>;\n","import {z} from 'zod';\nimport {LabelValueSchema} from '@netx/core-next/schema/common';\n\nexport const AssetAutoListItemSchema = LabelValueSchema.pick({\n\tlabel: true,\n}).extend({\n\t// we need to move away from these lbvs\n\t// in our api layer we will be sure to at least parse this to an int\n\tvalue: z.number().int().positive(),\n});\n\nexport type IAssetAutoListItem = z.infer<typeof AssetAutoListItemSchema>;\n","import {z} from 'zod';\n\nexport enum AssetTaskName {\n\tIMPORTING = 'ImportingTask',\n\tVISUAL_DESCRIPTOR = 'VisualDescriptorTask',\n\tIMAGE_PROXIES = 'ImageProxiesTask',\n\tAUDIO = 'AudioTask',\n\tFFF_VIEW = 'FFFViewTask',\n\tINDD_PAGE = 'INDDPageTask',\n\tIWORK_PAGE = 'IWorkPageTask',\n\tKEYFRAMES = 'KeyframesTask',\n\tMETADATA = 'MetadataTask',\n\tOFFICE_PAGE = 'OfficePageTask',\n\tPDF_PAGE = 'PDFPageTask',\n\tPOST_IMPORT = 'PostImportTask',\n\tPREVIEW = 'PreviewTask',\n\tRELATED_ASSET = 'RelatedAssetTask',\n\tSWF = 'SWFTask',\n\tTHUMBNAIL = 'ThumbnailTask',\n\tVIDEO_PREVIEW = 'VideoPreviewTask',\n\tWATERMARK = 'WatermarkTask',\n\tZOOM = 'ZoomTask',\n\tZOOM_TILE = 'ZoomTileTask',\n}\n\nexport const assetTaskSchema = z.object({\n\tassetId: z.number().int().positive(),\n\terrorCode: z.number().int().positive(),\n\terrorMessage: z.string().nullable(),\n\tpercentComplete: z.number().int().positive(),\n\ttasks: z.nativeEnum(AssetTaskName),\n});\n\nexport type IAssetTask = z.infer<typeof assetTaskSchema>;\n","export enum AssetProjectPref {\n\tENABLED = 'review.enabled',\n}\n","import {type IAsset} from '@netx/core-asset-next/schema';\nimport {isMobile} from '@netx/core-next/utils/browser';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {AssetProjectPref} from './constants';\n\nexport const assetProjectEnabled = () =>\n\tgetPreference(AssetProjectPref.ENABLED, true);\n\nexport const canManageAssetProject = (asset?: IAsset) =>\n\t!isMobile(false) &&\n\tassetProjectEnabled() &&\n\tasset?.fileFormatFamily.includes('image') === true;\n","export const ASSET_VERSION_BASE_EVENT = `asset:version`;\n\nexport enum AssetVersionEvent {\n\tINIT = `${ASSET_VERSION_BASE_EVENT}:init`,\n\tINITIALIZED = `${ASSET_VERSION_BASE_EVENT}:initialized`,\n\tEXTEND = `${ASSET_VERSION_BASE_EVENT}:extend`,\n\n\tUPLOAD = `${ASSET_VERSION_BASE_EVENT}:upload`,\n\tEDIT = `${ASSET_VERSION_BASE_EVENT}:edit`,\n}\n","import NetxQueryClient, {\n\tSuccessResponse,\n} from '@netx/core-next/lib/queryClient';\nexport type {QueryError} from '@netx/core-next/lib/queryClient';\nimport {getResponseResults} from '@netx/core-next/utils/api';\nimport {IAssetView} from '../schema';\n\n/**\n * `getViewObjectsForAsset` request params\n * (what is used to send to server)\n */\nexport type GetViewObjectsForAssetRequestOptions = {\n\tid: number;\n};\n\n/**\n * `getViewObjectsForAsset` request\n * (what gets sent to the server)\n */\nexport type GetViewObjectsForAssetRequest = [\n\tGetViewObjectsForAssetRequestOptions['id'],\n];\n\n/**\n * `getViewObjectsForAsset` response\n * (what comes back from the server)\n */\nexport type GetViewObjectsForAssetResponse =\n\tSuccessResponse<GetViewObjectsForAssetResult>;\n\n/**\n * `getViewObjectsForAsset` result\n * (what is utilized from the server response)\n */\nexport type GetViewObjectsForAssetResult = IAssetView[];\n\nexport const getViewObjectsForAssetEndpoint = 'getViewObjectsForAsset';\n\n/**\n * Get asset views\n * @param fetchParams Fetch params\n */\nexport const getViewObjectsForAsset = async (\n\t{id}: GetViewObjectsForAssetRequestOptions,\n\tsignal?: AbortSignal,\n) => {\n\tconst client = NetxQueryClient();\n\n\tconst requestParams: GetViewObjectsForAssetRequest = [id];\n\n\treturn client\n\t\t.post<GetViewObjectsForAssetResponse>(\n\t\t\tgetViewObjectsForAssetEndpoint,\n\t\t\trequestParams,\n\t\t\t{signal},\n\t\t)\n\t\t.then(getResponseResults);\n};\n\nexport default getViewObjectsForAsset;\n","import NetxQueryClient, {\n\tSuccessResponse,\n} from '@netx/core-next/lib/queryClient';\nexport type {QueryError} from '@netx/core-next/lib/queryClient';\nimport {getResponseResults} from '@netx/core-next/utils/api';\nimport {type IAssetView} from '../schema';\n\n/**\n * `setViewData` request params\n * (what is used to send to server)\n */\n//IAssetView is the object get sent alng with a second param that is referencing file so I named it that. **Review**\nexport type SetViewDataRequestOptions = {\n\tassetView: IAssetView;\n\tfile?: string | null;\n};\n\n/**\n * `setViewData` request\n * (what gets sent to the server)\n */\nexport type SetViewDataRequest = [\n\tSetViewDataRequestOptions['assetView'],\n\tSetViewDataRequestOptions['file'],\n];\n\n/**\n * `setViewData` response\n * (what comes back from the server)\n */\nexport type SetViewDataResponse = SuccessResponse<SetViewDataResult>;\n\n/**\n * `setViewData` result\n * (what is utilized from the server response)\n */\nexport type SetViewDataResult = string; // uuid\n\nexport const setViewDataEndpoint = 'setViewData';\n\n/**\n * Set asset view data\n * @param fetchParams Fetch params\n */\nexport const setViewData = async ({\n\tassetView,\n\tfile,\n}: SetViewDataRequestOptions) => {\n\tconst client = NetxQueryClient();\n\n\tconst {viewId, ...rest} = assetView;\n\n\tconst requestParams: SetViewDataRequest = [\n\t\t{\n\t\t\t...rest,\n\t\t\tviewId: viewId || (null as any),\n\t\t},\n\t\tfile ?? null,\n\t];\n\n\treturn client\n\t\t.post<SetViewDataResponse>(setViewDataEndpoint, requestParams)\n\t\t.then(getResponseResults);\n};\n\nexport default setViewData;\n","import {useQuery, type UseQueryOptions} from '@tanstack/react-query';\nimport {\n\tgetViewObjectsForAsset,\n\tgetViewObjectsForAssetEndpoint,\n\ttype QueryError,\n\ttype GetViewObjectsForAssetResult,\n\ttype GetViewObjectsForAssetRequestOptions,\n} from '../getViewObjectsForAsset';\n\nexport type GetViewObjectsForAssetQueryParams =\n\tGetViewObjectsForAssetRequestOptions;\nexport type GetViewObjectsForAssetQueryKey = [\n\tstring,\n\tGetViewObjectsForAssetQueryParams,\n];\n\nexport type GetViewObjectsForAssetReactQueryOptions = Omit<\n\tUseQueryOptions<\n\t\tGetViewObjectsForAssetResult,\n\t\tQueryError,\n\t\tGetViewObjectsForAssetResult,\n\t\tGetViewObjectsForAssetQueryKey\n\t>,\n\t'queryKey' | 'queryFn'\n>;\n\n/**\n * react-query wrapper for `getViewObjectsForAsset`\n * @param queryKeyParams Params passed to the api call\n * @param options Options passed to `useQuery`\n */\nexport const useGetViewObjectsForAssetReactQuery = (\n\tqueryKeyParams: GetViewObjectsForAssetQueryParams,\n\toptions?: GetViewObjectsForAssetReactQueryOptions,\n) => {\n\tconst getViewObjectsForAssetQuery = useQuery<\n\t\tGetViewObjectsForAssetResult,\n\t\tQueryError,\n\t\tGetViewObjectsForAssetResult,\n\t\tGetViewObjectsForAssetQueryKey\n\t>({\n\t\tqueryKey: [getViewObjectsForAssetEndpoint, queryKeyParams],\n\t\tqueryFn: ({signal}) => getViewObjectsForAsset(queryKeyParams, signal),\n\t\trefetchOnWindowFocus: false,\n\t\t...options,\n\t});\n\treturn getViewObjectsForAssetQuery;\n};\n\nexport default useGetViewObjectsForAssetReactQuery;\n","import {z} from 'zod';\n\nexport enum AssetViewName {\n\tMP3 = 'previewMp3',\n\tH264 = 'previewH264',\n\tPDF = 'previewPDF',\n\tVTT = 'previewVTT',\n}\n\nexport const AssetViewSchema = z.object({\n\tviewId: z.number(),\n\t/** asset id (definitely) */\n\timageId: z.number(),\n\t/** appears to be the asset id? */\n\tautoTaskId: z.number(),\n\tfileTypeId: z.number(),\n\tfileSize: z.number(),\n\tfileWidth: z.number(),\n\tfileHeight: z.number(),\n\tname: z.string().nonempty().or(z.nativeEnum(AssetViewName)),\n\tdescription: z.string(),\n\tcreationDate: z.string(),\n\tthumb: z.string(),\n\tfileTypeLabel: z.string(),\n\tfileSizeLabel: z.string(),\n\tviewMetadataLabels: z.array(z.string()),\n\tviewMetadataValues: z.array(z.string()),\n});\nexport type IAssetView = z.infer<typeof AssetViewSchema>;\n\nexport const AssetViewFormSchema = AssetViewSchema.pick({\n\tdescription: true,\n\tname: true,\n});\n\nexport type IAssetViewFormValues = z.infer<typeof AssetViewFormSchema>;\n","import {URL} from '@netx/core-next/url';\n\nexport const getViewPath = (assetId: number) =>\n\t`${URL.assetEndpoint}/${assetId}/view`;\n","/**\n * This collection is the attribute datum for a single asset\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/attributeData';\n\nexport default class AttributeDatum extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * @memberof module:asset/models/attributeDatum\n\t\t * @alias assetAttributes\n\t\t * @type {module:asset/collections/attributes}\n\t\t */\n\t\tthis.assetAttributes = opts.assetAttributes;\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(this, 'sync', this.clearChanges).listenTo(\n\t\t\tthis,\n\t\t\t'metadataLookup:complete',\n\t\t\tthis.metadataLookupComplete,\n\t\t);\n\t}\n\n\t/**\n\t * Clear value changes\n\t * @method\n\t */\n\tclearChanges() {\n\t\tthis.invoke('clearChanges');\n\t}\n\n\t/**\n\t * Get a single attribute data model\n\t * @method\n\t * @param {number} tempateId Attribute template id (will support name as well until totally phased out)\n\t * @param {string} name Template name\n\t * @return {Netx.Models.AttributeData}\n\t */\n\tgetAttribute(templateId, name) {\n\t\tvar attrModel;\n\n\t\t// Find asset attribute template model\n\t\tattrModel =\n\t\t\tname != null\n\t\t\t\t? (this.assetAttributes || Netx.attributes).findWhere({name: name})\n\t\t\t\t: (this.assetAttributes || Netx.attributes).get(templateId);\n\n\t\t// Get existing asset attribute data record\n\t\treturn attrModel && this.get(attrModel.id);\n\t}\n\n\t/**\n\t * Get all attribute value changes\n\t * @method\n\t * @return {array}\n\t */\n\tgetChanges() {\n\t\treturn _.compact(\n\t\t\tthis.map((attr) => {\n\t\t\t\tif (attr.hasValueChanged()) {\n\t\t\t\t\treturn _.pick.apply(\n\t\t\t\t\t\t_,\n\t\t\t\t\t\t[attr.self()].concat(_.keys(Model.GetDefaults())),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\t}\n\n\t/**\n\t * Get a single attribute value\n\t * @method\n\t * @param {number|string} templateId Attribute template id (or name)\n\t * @return {mixed}\n\t */\n\tgetValue(templateId) {\n\t\tvar attributeDataModel = this.getAttribute(templateId);\n\t\tif (attributeDataModel) {\n\t\t\treturn attributeDataModel.getValue();\n\t\t}\n\t}\n\n\t/**\n\t * Get all attribute values\n\t * @method\n\t * @return {array}\n\t */\n\tgetValues() {\n\t\treturn this.map((attrData) => attrData.getValue());\n\t}\n\n\t/**\n\t * Get all read-only attributes\n\t * @method\n\t * @return {array}\n\t */\n\tgetReadOnly() {\n\t\tconst readOnly = this.filter((attrData) => !attrData.allows('edit'));\n\t\treturn readOnly.length ? readOnly : null;\n\t}\n\n\t/**\n\t * Get all writable attributes\n\t * @method\n\t * @return {array}\n\t */\n\tgetWritable() {\n\t\tconst writable = this.filter((attrData) => attrData.allows('edit'));\n\t\treturn writable.length ? writable : null;\n\t}\n\n\t/**\n\t * @method\n\t * @param {module:asset/models/attributeData} attrData Attribute data\n\t * @param {array} matches Matches\n\t */\n\tmetadataLookupComplete(attrData, matches) {\n\t\tlet attr;\n\t\t_.each(matches, (match) => {\n\t\t\tattr = this.getAttribute(null, match.label);\n\t\t\tattr &&\n\t\t\t\tattr.setValue(match.value, {\n\t\t\t\t\tautofilled: true,\n\t\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Reset all values\n\t * @method\n\t * @param {object} opts Options\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tresetValues(opts) {\n\t\treturn this.invoke('resetValues', opts);\n\t}\n\n\t/**\n\t * Set value on a single attribute\n\t * @method\n\t * @param {number} templateId Attribute template id\n\t * @param {mixed} val Value\n\t * @param {object} opts Options\n\t */\n\tsetValue(templateId, val, opts) {\n\t\tvar attributeDataModel = this.getAttribute(templateId);\n\t\tattributeDataModel && attributeDataModel.setValue(val, opts);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AttributeDatum';\n\t}\n}\n","/**\n * This model is the individual asset's attribute datum\n * A collection is created `this.attributeDatum` that represents all the data in `this.defaults.attributes`\n * @class\n * @extends Netx.Model\n * @see Netx.Collections.AttributeDatum\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport AttributeDatumCollection from '../collections/attributeDatum';\n\nexport default class AssetAttributeData extends Base {\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'assetId';\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {string} defaults.assetId - ID\n\t * @property {array} defaults.attributes - Attributes\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t// assetId: 0,\n\t\t\tattributes: [\n\t\t\t\t// Will be passed to and handled by Netx.Collections.AttributeDatum\n\t\t\t\t// {\n\t\t\t\t// \ttemplateId: 0,\n\t\t\t\t// \tassetId: 0,\n\t\t\t\t// \tpermission: \"r\",\n\t\t\t\t// \tvalues: []\n\t\t\t\t// }\n\t\t\t],\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attr Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs = {}, opts = {}) {\n\t\t// Circular reference\n\t\t//AttributeDatumCollection = require('../collections/attributeDatum').default;\n\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * @memberof module:asset/models/assetAttributeData\n\t\t * @alias assetAttributes\n\t\t * @type {module:asset/collections/attributes}\n\t\t */\n\t\tthis.assetAttributes = opts.assetAttributes || Netx.attributes;\n\n\t\t/**\n\t\t * @memberof module:asset/models/assetAttributeData\n\t\t * @alias attributeDatum\n\t\t * @type {Netx.Collections.AttributeDatum}\n\t\t */\n\t\tthis.attributeDatum = new AttributeDatumCollection([], {\n\t\t\tassetId: attrs.assetId || opts.assetId || this.id,\n\t\t});\n\n\t\t// Set initial data if passed\n\t\tattrs && this.updateAttributeDatum(attrs.attributes);\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(this, 'change:attributes', (model, newValue, opts) => {\n\t\t\tthis.updateAttributeDatum();\n\t\t});\n\t}\n\n\t/**\n\t * Add an attribute object to this model's `attributes` array\n\t * @method\n\t * @param {object} attribute Attribute object\n\t */\n\taddAttribute(attribute) {\n\t\tconst existing = this.attributeDatum.getAttribute(attribute.templateId);\n\t\tif (existing) return;\n\n\t\tthis.set('attributes', this.get('attributes').concat([attribute]));\n\t}\n\n\t/**\n\t * Clear value changes\n\t * @method\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tclearChanges() {\n\t\tthis.attributeDatum.clearChanges();\n\t}\n\n\t/**\n\t * Get a single attribute data model\n\t * @method\n\t * @param {number} tempateId Attribute template id\n\t * @param {string} name Template name\n\t * @return {Netx.Models.AttributeData}\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tgetAttribute(templateId, name) {\n\t\treturn this.attributeDatum.getAttribute(templateId, name);\n\t}\n\n\t/**\n\t * Get a single attribute template model\n\t * @method\n\t * @param {number} tempateId Attribute template id\n\t * @param {string} name Template name\n\t * @return {module:asset/models/assetAttribute}\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tgetAttributeTemplate(templateId, name) {\n\t\tconst attributeDataModel = this.getAttribute(templateId, name);\n\t\treturn attributeDataModel && attributeDataModel.getTemplate();\n\t}\n\n\t/**\n\t * Get all attribute value changes\n\t * @method\n\t * @return {array}\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tgetChanges() {\n\t\tconst changes = this.attributeDatum.getChanges();\n\t\tif (!changes || !changes.length) return;\n\n\t\treturn {\n\t\t\tassetId: this.id,\n\t\t\tattributes: changes,\n\t\t};\n\t}\n\n\t/**\n\t * Get a single attribute value\n\t * @method\n\t * @param {number} templateId Attribute template id\n\t * @return {mixed}\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tgetValue(templateId) {\n\t\treturn this.attributeDatum.getValue(templateId);\n\t}\n\n\t/**\n\t * Get all attribute values\n\t * @method\n\t * @return {array}\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tgetValues() {\n\t\treturn this.attributeDatum.getValues();\n\t}\n\n\t/**\n\t * Get all read-only attributes\n\t * @method\n\t * @return {array}\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tgetReadOnly() {\n\t\treturn this.attributeDatum.getReadOnly();\n\t}\n\n\t/**\n\t * Get all writable attributes\n\t * @method\n\t * @return {array}\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tgetWritable() {\n\t\treturn this.attributeDatum.getWritable();\n\t}\n\n\t/**\n\t * Remove an attribute object from this model's `attributes` array\n\t * @method\n\t * @param {number} templateId Template id\n\t */\n\tremoveAttribute(templateId) {\n\t\tconst attributes = this.get('attributes');\n\t\tconst idx = _.indexOf(\n\t\t\tattributes,\n\t\t\t_.findWhere(attributes, {templateId: templateId}),\n\t\t);\n\t\tif (idx < 0) return;\n\n\t\tattributes.splice(idx, 1);\n\t\tthis.set('attributes', attributes);\n\t}\n\n\t/**\n\t * Reset all values\n\t * @method\n\t * @param {object} opts Options\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tresetValues(opts) {\n\t\treturn this.attributeDatum.resetValues(opts);\n\t}\n\n\t/**\n\t * Set value on a single attribute\n\t * @method\n\t * @param {number} templateId Attribute template id\n\t * @param {mixed} val Value\n\t * @param {object} opts Options\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tsetValue(templateId, val, opts) {\n\t\tthis.attributeDatum.setValue(templateId, val, opts);\n\t}\n\n\t/**\n\t * When this model syncs we populate `this.attributeDatum` based on `this.attributes.attributes`\n\t * @method\n\t * @param {array} attributes Attributes array\n\t * @param {object} opts Options\n\t */\n\tupdateAttributeDatum(attributes, opts) {\n\t\tattributes = attributes || this.get('attributes');\n\n\t\tconst assetAttributes = this.assetAttributes;\n\t\tthis.attributeDatum.set(\n\t\t\t_.compact(\n\t\t\t\t_.map(attributes, (attr) => {\n\t\t\t\t\tconst attrModel = assetAttributes.get(attr.templateId);\n\t\t\t\t\tif (!attrModel) return;\n\n\t\t\t\t\treturn _.extend(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttemplateId: attrModel.id,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tattr,\n\t\t\t\t\t\t_.omit(\n\t\t\t\t\t\t\tattrModel.attributes,\n\t\t\t\t\t\t\t'attributeid',\n\t\t\t\t\t\t\t'objectTypes',\n\t\t\t\t\t\t\t'templateid',\n\t\t\t\t\t\t\t'value',\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t),\n\t\t\t_.extend({merge: true}, opts),\n\t\t);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetAttributeData';\n\t}\n}\n","/**\n * This collection represents attribute data for n assets\n * Each model has an asset id and an array of attribute datum for that particular asset\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/assetAttributeData';\n\nimport {isEmptyValue} from '@netx/core/utils/isEmptyValue';\nimport {unescapeAttributeName} from '@netx/core/utils/unescapeAttributeName';\n\nexport default class AssetAttributeDatum extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tgetAssetAttributes: 'Loading asset attributes',\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tgetAssetAttributes: 'Loaded asset attributes',\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} methods - Methods for this collection\n\t * @property {method} methods.read - Fetch asset attribute datum\n\t * @property {method} methods.setAssetAttributes - Update asset attributes datum\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {array} assetIds Asset ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\treturn ['getAssetAttributes', this.assetIds];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {array} data Attribute datum\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetAssetAttributes(data, opts) {\n\t\t\t\treturn ['setAssetAttributes', data];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Parsers for this collection\n\t * @property {method} partser.read - Parse response of fetch\n\t * @property {method} partser.setAssetAttributes - Parse response of set asset attributes\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} data Attribute datum\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(data, opts) {\n\t\t\t\t// Provide default values\n\t\t\t\tif (this.useDefaultValues) {\n\t\t\t\t\tvar assetAttributes = this.assetAttributes || Netx.attributes,\n\t\t\t\t\t\tattrModel,\n\t\t\t\t\t\tvalues;\n\n\t\t\t\t\tdata = _.map(data, (d) => {\n\t\t\t\t\t\treturn _.extend(d, {\n\t\t\t\t\t\t\tattributes: _.map(d.attributes, (attr, idx, all) => {\n\t\t\t\t\t\t\t\tvalues = attr.values;\n\t\t\t\t\t\t\t\tif (isEmptyValue(values)) {\n\t\t\t\t\t\t\t\t\tattrModel = assetAttributes.get(attr.templateId);\n\t\t\t\t\t\t\t\t\tvalues = [\n\t\t\t\t\t\t\t\t\t\tattrModel && attrModel.get('value') != null\n\t\t\t\t\t\t\t\t\t\t\t? attrModel.get('value')\n\t\t\t\t\t\t\t\t\t\t\t: '',\n\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn _.extend(attr, {\n\t\t\t\t\t\t\t\t\tvalues: values,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn data;\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {string} uuid UUID\n\t\t\t * @param {array} data Attribute datum\n\t\t\t * @param {object} opts Request options\n\t\t\t * @fires module:app#app:pollBatchJob\n\t\t\t */\n\t\t\tsetAssetAttributes(uuid, data, opts) {\n\t\t\t\tif (!uuid) return false;\n\n\t\t\t\t// On save, wipe out all model changes\n\t\t\t\tthis.clearChanges();\n\n\t\t\t\t// Poll\n\t\t\t\treturn this.trackBatchJob(uuid, [data], 1000);\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {array} models An array of models or model attributes\n\t * @param {object} opts Collection options\n\t */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * @memberof module:asset/models/assetAttributeDatum\n\t\t * @memberof\n\t\t * @alias assetIds\n\t\t * @type {array}\n\t\t */\n\t\tthis.assetIds = opts.assetIds || [];\n\n\t\t/**\n\t\t * @memberof module:asset/models/assetAttributeDatum\n\t\t * @alias assetAttributes\n\t\t * @type {Netx.Collections.AssetAttributes}\n\t\t */\n\t\tthis.assetAttributes = opts.assetAttributes;\n\n\t\t/**\n\t\t * Use default value if no values are present\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.useDefaultValues = opts.useDefaultValues === true;\n\n\t\t// Hey, listen!\n\t\tthis\n\t\t\t// On sync, wipe out all model changes\n\t\t\t.listenTo(this, 'sync', this.clearChanges)\n\t\t\t.listenTo(this, 'complete', (self, batchJob, data) => {\n\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t'asset:attributes:submit:succeeded',\n\t\t\t\t\tself,\n\t\t\t\t\tbatchJob,\n\t\t\t\t\tdata,\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\t/**\n\t * Clear value changes\n\t * @method\n\t */\n\tclearChanges() {\n\t\tthis.invoke('clearChanges');\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} tempateId Attribute template id\n\t * @param {string} name Template name\n\t * @param {number} assetId Asset id\n\t * @return {array|Netx.Models.AttributeData} Attribute(s)\n\t */\n\tgetAttribute(templateId, name, assetId) {\n\t\tif (assetId == null) {\n\t\t\treturn _.compact(this.map((m) => m.getAttribute(templateId, name)));\n\t\t}\n\n\t\tconst assetAttributeDataModel = this.get(assetId);\n\t\tif (assetAttributeDataModel) {\n\t\t\treturn assetAttributeDataModel.getAttribute(templateId, name);\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @param {number|string} tempateId Attribute template id (will support name as well until totally phased out)\n\t * @return {array|module:asset/models/assetAttribute} Attribute template(s)\n\t */\n\tgetAttributeTemplate(templateId, assetId) {\n\t\tconst attributeDataModel = this.getAttribute(templateId, assetId);\n\t\tif (assetId == null) {\n\t\t\treturn _.compact(\n\t\t\t\t_.map(attributeDataModel, (attrDataModel) =>\n\t\t\t\t\tattrDataModel.getTemplate(),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\n\t\treturn attributeDataModel && attributeDataModel.getTemplate();\n\t}\n\n\t/**\n\t * @method\n\t * @return {array}\n\t */\n\tgetChanges() {\n\t\treturn _.compact(this.map((m) => m.getChanges()));\n\t}\n\n\t/**\n\t * If no asset id is passed, all records will be returned\n\t * @method\n\t * @param {number} assetId Asset id\n\t * @return {array}\n\t */\n\tgetWritableAttributes(assetId) {\n\t\tif (assetId == null) {\n\t\t\treturn _.compact(this.map((m) => m.getWritable()));\n\t\t}\n\n\t\tconst assetAttributeDataModel = this.get(assetId);\n\t\tif (assetAttributeDataModel) {\n\t\t\treturn assetAttributeDataModel.getWrtiable();\n\t\t}\n\t}\n\n\t/**\n\t * If no asset id is passed, all records will be returned\n\t * @method\n\t * @param {number} assetId Asset id\n\t * @return {array}\n\t */\n\tgetReadOnlyAttributes(assetId) {\n\t\tif (assetId == null) {\n\t\t\treturn _.compact(this.map((m) => m.getReadOnly()));\n\t\t}\n\n\t\tconst assetAttributeDataModel = this.get(assetId);\n\t\tif (assetAttributeDataModel) {\n\t\t\treturn assetAttributeDataModel.getReadOnly();\n\t\t}\n\t}\n\n\t/**\n\t * If no asset id is passed, all records will be returned\n\t * @method\n\t * @param {number} assetId Asset id\n\t * @return {array}\n\t */\n\tgetValues(assetId) {\n\t\tif (assetId == null) {\n\t\t\treturn _.compact(this.map((m) => m.getValues()));\n\t\t}\n\n\t\tconst assetAttributeDataModel = this.get(assetId);\n\t\tif (assetAttributeDataModel) {\n\t\t\treturn assetAttributeDataModel.getValues();\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} templateId Attribute template id\n\t * @param {number} assetId Asset id\n\t * @return {array|mixed} Value(s)\n\t */\n\tgetValue(templateId, assetId) {\n\t\tif (assetId == null) {\n\t\t\treturn _.filter(\n\t\t\t\tthis.map((m) => m.getValue(templateId)),\n\t\t\t\t(val) => val != null,\n\t\t\t);\n\t\t}\n\n\t\tconst attributeDataModel = this.getAttribute(templateId, null, assetId);\n\t\tif (attributeDataModel) {\n\t\t\treturn attributeDataModel.getValue(templateId);\n\t\t}\n\t}\n\n\t/**\n\t * If no asset id is passed, all records will be checked\n\t * @method\n\t * @param {number} assetId Asset id\n\t * @return {boolean}\n\t */\n\thasAttributeValues(assetId) {\n\t\tconst values = this.getValues(assetId);\n\n\t\tfor (let i = 0, c = values.length, foundValue, _values; i < c; i++) {\n\t\t\t_values = values[i];\n\t\t\tfor (let j = 0, k = _values.length, val; j < k; j++) {\n\t\t\t\tval = _values[j];\n\t\t\t\tif (_.isArray(val)) {\n\t\t\t\t\tfoundValue = val.length > 0 && val !== '' && val != null;\n\t\t\t\t} else {\n\t\t\t\t\tfoundValue = val !== '' && val != null;\n\t\t\t\t}\n\t\t\t\tif (foundValue) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * If no asset id is passed, all records will be checked\n\t * @method\n\t * @param {number} assetId Asset id\n\t * @return {boolean}\n\t */\n\thasWritableAttributes(assetId) {\n\t\tconst attributes = this.getWritableAttributes(assetId);\n\t\tfor (let i = 0, c = attributes.length; i < c; i++) {\n\t\t\tif (attributes[0].length > 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} data Attribute data\n\t * @param {number} assetId Asset id (if not provided, data will be applied to all assets in this collection)\n\t * @param {object} opts Options\n\t */\n\tparseAndSave(data, assetId, opts) {\n\t\t_.each(data, (v, k) => {\n\t\t\t// This most likely came from a form, need to be safe and unescape the name\n\t\t\t// TODO: look into switching our attribute names in forms to utilize the templateId instead\n\t\t\t// User defined names as form input names is troublesome\n\t\t\tk = unescapeAttributeName(k);\n\n\t\t\tconst attrModel = (this.assetAttributes || Netx.attributes).findWhere({\n\t\t\t\tname: k,\n\t\t\t});\n\t\t\tif (attrModel && attrModel.isValueWritable()) {\n\t\t\t\tv = attrModel.parseOutValue(v);\n\t\t\t\t// Set - default to silently as this will most likely be the product of cloned data and a form update\n\t\t\t\t// so the underlying attribute data model does not need to respond to the change and populate the values collection\n\t\t\t\t// as the values collection should already be mirrored in the UI\n\t\t\t\tthis.setValue(attrModel.id, assetId, v, _.extend({silent: true}, opts));\n\t\t\t}\n\t\t});\n\n\t\t// Save\n\t\treturn this.setAssetAttributes(this.getChanges(), opts);\n\t}\n\n\t/**\n\t * Reset all values\n\t * @method\n\t * @param {object} opts Options\n\t * @see Netx.Collections.AttributeDatum\n\t */\n\tresetValues(opts) {\n\t\treturn this.invoke('resetValues', opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} templateId Attribute template id\n\t * @param {array|mixed} val Value(s)\n\t * @param {object} opts Options\n\t */\n\tsetValue(templateId, assetId, val, opts) {\n\t\tif (assetId == null) {\n\t\t\tthis.invoke('setValue', templateId, val, opts);\n\t\t\treturn;\n\t\t}\n\n\t\tconst attributeDataModel = this.getAttribute(templateId, null, assetId);\n\t\tattributeDataModel && attributeDataModel.setValue(templateId, val, opts);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetAttributeDatum';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './attribute';\n\nimport {ids as attributeTypeIds} from '@netx/core-asset/properties/attributes';\nimport {assetExpirationToDateString} from '@netx/core-asset-expiration/utils';\n\nexport default class Attribute_Date extends Base {\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\t...super.defaults,\n\t\t\ttype: attributeTypeIds.date,\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {mixed} value Value\n\t * @param {number} truncateAt Truncate at index\n\t * @return {mixed} Formatted value\n\t */\n\tformat(value, truncateAt) {\n\t\t// In all cases (currently), except one, we want `yyyy-mm-dd`\n\t\t// The dam will sometimes send us mm/dd/yyyy and we want to normalize this\n\t\t// except for `expirationDate` - which is a time and a time that we want to\n\t\t// show in a relative format\n\t\tif (this.get('system') && this.get('name') === 'expirationDate') {\n\t\t\tif (value) {\n\t\t\t\tvalue = `${i18n.t('i18n.expires')}: ${assetExpirationToDateString(\n\t\t\t\t\tvalue,\n\t\t\t\t)}`;\n\t\t\t}\n\t\t\treturn value === 0 ? '' : value;\n\t\t}\n\n\t\tvalue = this.parseInValue(value);\n\t\treturn super.format(value);\n\t}\n\n\t/**\n\t * @override\n\t * @param {mixed} value Value\n\t * @return {mixed} Parsed in value\n\t */\n\tparseInValue(value) {\n\t\tvalue = super.parseInValue(value);\n\n\t\tif (_.isArray(value)) {\n\t\t\tvalue = _.map(value, (v) => {\n\t\t\t\tif (v.includes('/')) {\n\t\t\t\t\tv = _.dateToHTML(v);\n\t\t\t\t}\n\t\t\t\treturn v;\n\t\t\t});\n\t\t} else if (value && (_.isNumber(value) || value.includes('/'))) {\n\t\t\tvalue = _.dateToHTML(value);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t/**\n\t * @override\n\t * @param {mixed} value Value\n\t * @return {mixed} Parsed out value\n\t */\n\tparseOutValue(value) {\n\t\tvalue = super.parseOutValue(value);\n\n\t\tif (_.isArray(value)) {\n\t\t\tvalue = _.map(value, (d) => {\n\t\t\t\tif (_.isNumber(d)) {\n\t\t\t\t\treturn d;\n\t\t\t\t}\n\t\t\t\treturn d.replace(/(\\d+)-(\\d+)-(\\d+)/, '$2/$3/$1');\n\t\t\t});\n\t\t} else if (value) {\n\t\t\tvalue = _.isNumber(value)\n\t\t\t\t? value\n\t\t\t\t: value.replace(/(\\d+)-(\\d+)-(\\d+)/, '$2/$3/$1');\n\t\t}\n\n\t\t// Ensure leading zero's or server side validation will fail\n\t\tif (_.isString(value) && value.length) {\n\t\t\tvalue = value\n\t\t\t\t.split('/')\n\t\t\t\t.map((v) => {\n\t\t\t\t\treturn v.padStart(2, '0');\n\t\t\t\t})\n\t\t\t\t.join('/');\n\t\t}\n\t\treturn value;\n\t}\n\n\t/** @method */\n\tvalidator(val) {\n\t\tif (val === '' || val == null) return true;\n\n\t\tconst valid =\n\t\t\tval.search(/\\d\\d\\/\\d\\d\\/\\d\\d\\d\\d/) > -1 ||\n\t\t\tval.search(/\\d\\d\\d\\d-\\d\\d-\\d\\d/) > -1;\n\n\t\tif (!valid) return new Error('Invalid date');\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Attribute_Date';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './attribute';\n\nimport {ids as attributeTypeIds, numberTypes} from '../properties/attributes';\n\n// Polyfill\n// Safari did not have this prior to version 10 (currently at v11 but just to be safe)\nif (!window.Intl) {\n\twindow.Intl = {\n\t\tNumberFormat(locale, options) {\n\t\t\tconst digits = '0123456789';\n\t\t\tthis.format = (n) => {\n\t\t\t\tlet s = n.toString();\n\t\t\t\tif (\n\t\t\t\t\t!options ||\n\t\t\t\t\toptions.useGrouping === undefined ||\n\t\t\t\t\toptions.useGrouping\n\t\t\t\t) {\n\t\t\t\t\tvar dp = s.indexOf('.');\n\t\t\t\t\tif (dp < 0) {\n\t\t\t\t\t\tdp = s.length;\n\t\t\t\t\t}\n\t\t\t\t\twhile ((dp -= 3) > 0 && digits.indexOf(s[dp - 1]) >= 0) {\n\t\t\t\t\t\ts = s.substr(0, dp) + ',' + s.substr(dp);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn s;\n\t\t\t};\n\t\t},\n\t};\n}\n/**\n * @function\n * @param {number} value Value\n * @return {number} Decimals\n */\nfunction getDecimalCount(value) {\n\tvalue = value + '';\n\n\tconst decimalSeparator = whatDecimalSeparator();\n\tconst decimals = value.split('.');\n\n\tif (!decimals[1]) {\n\t\treturn 0;\n\t}\n\n\treturn decimals[1].length;\n}\n/**\n * https://stackoverflow.com/questions/11665884/how-can-i-parse-a-string-with-a-comma-thousand-separator-to-a-number\n * @function\n * @param {mixed} value Value\n * @param {string} locale Locale\n * @return {number}\n */\nfunction parseNumber(value, locale) {\n\tvalue = value.toString();\n\tlocale = locale || navigator.language;\n\tconst example = Intl.NumberFormat(locale).format('1.1');\n\tconst cleanPattern = new RegExp('[^-+0-9' + example.charAt(1) + ']', 'g');\n\tconst cleaned = value.replace(cleanPattern, '');\n\tconst normalized = cleaned.replace(example.charAt(1), '.');\n\n\treturn parseFloat(normalized);\n}\n/**\n * @function\n * @return {string} Decimal separator for locale\n */\nfunction whatDecimalSeparator() {\n\tlet n = 1.1;\n\tn = n.toLocaleString().substring(1, 2);\n\treturn n;\n}\n\nexport default class Attribute_Number extends Base {\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\t...super.defaults,\n\t\t\ttype: attributeTypeIds.number,\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {mixed} value Value\n\t * @param {object} opts Options\n\t * @return {mixed} Formatted value\n\t */\n\tformat(value, opts = {}) {\n\t\tvalue = this.parseInValue(value);\n\n\t\t// Do not parse into locale string\n\t\tconst noLocale = opts.noLocale === true;\n\t\tconst numberType = numberTypes[this.get('spec2')] || {};\n\t\tconst maxDecimal = numberType.maxDecimal || 0;\n\n\t\t/**\n\t\t * @function\n\t\t * @param {number} value Value\n\t\t * @return Parsed number\n\t\t */\n\t\tconst parse = (value) => {\n\t\t\tvalue = parseNumber(value);\n\n\t\t\t// `Unlimited` number type\n\t\t\tif (maxDecimal === Infinity) {\n\t\t\t\treturn noLocale\n\t\t\t\t\t? value.toString()\n\t\t\t\t\t: value.toLocaleString(undefined, {\n\t\t\t\t\t\t\tuseGrouping: false,\n\t\t\t\t\t\t\tmaximumFractionDigits: 20, // Maximum allowed by`toLocaleString`\n\t\t\t\t\t });\n\t\t\t} else {\n\t\t\t\treturn noLocale\n\t\t\t\t\t? value.toFixed(maxDecimal)\n\t\t\t\t\t: value.toLocaleString(undefined, {\n\t\t\t\t\t\t\tuseGrouping: false,\n\t\t\t\t\t\t\tminimumFractionDigits: maxDecimal,\n\t\t\t\t\t\t\tmaximumFractionDigits: maxDecimal,\n\t\t\t\t\t });\n\t\t\t}\n\t\t};\n\n\t\tif (this.get('system')) {\n\t\t\t// Normalize\n\t\t\tswitch (this.get('name')) {\n\t\t\t\tcase 'fileSize':\n\t\t\t\tcase 'fileSize2':\n\t\t\t\t\tvalue = _.bytes(value, true);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else if (value) {\n\t\t\tvalue = _.isArray(value) ? _.map(value, parse) : parse(value);\n\t\t}\n\n\t\treturn super.format(value);\n\t}\n\n\t/**\n\t * Fix for displaying floats with zeros\n\t * @override\n\t * @param {object|string} key The key or an object of key values\n\t * @param {mixed} value Either the value, or if the key is an object, the options\n\t * @param {object} opts Either the options, or if the key is an object, undefined\n\t */\n\tset(key, value, opts) {\n\t\t// Make life easier\n\t\tlet attrs;\n\t\tif (_.isObject(key)) {\n\t\t\tattrs = key;\n\t\t\topts = value;\n\t\t} else {\n\t\t\tattrs = {\n\t\t\t\t[key]: value,\n\t\t\t};\n\t\t}\n\n\t\tif (attrs.value) {\n\t\t\t// Check if we are enforcing decimals via spec2 (a value of 4 means it is free - whole/decimal whatever)\n\t\t\tconst decimalPlaces = attrs.spec2 || this.get('spec2');\n\t\t\tif (decimalPlaces && decimalPlaces <= 3) {\n\t\t\t\tattrs.value = Number(attrs.value).toFixed(decimalPlaces);\n\t\t\t}\n\t\t}\n\n\t\t// Super\n\t\treturn super.set(attrs, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {mixed} value Value\n\t * @return {boolean} Invalid\n\t */\n\tinvalid(value) {\n\t\tlet valid = this.validator(value);\n\n\t\tif (valid === true) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (valid instanceof Error) {\n\t\t\treturn valid.message;\n\t\t}\n\n\t\treturn i18n.t('i18n.invalid');\n\t}\n\n\t/**\n\t * @method\n\t * @param {mixed} value Value\n\t * @return {boolean} Valid\n\t */\n\tvalidator(value) {\n\t\t// Empty values are fine\n\t\t// TODO: check for mandatory\n\t\tif (_.isNull(value) || _.isUndefined(value) || value === '') {\n\t\t\treturn true;\n\t\t}\n\n\t\tvalue = value.toString();\n\n\t\tconst numberType = numberTypes[this.get('spec2')] || false;\n\t\tconst maxDecimal = numberType && numberType.maxDecimal;\n\t\tconst maxLength =\n\t\t\tnumberType.key === 'whole' ? this.get('spec1') : undefined;\n\n\t\tconst decimalIndex = value.indexOf('.');\n\t\tif (decimalIndex > -1 && decimalIndex + 1 === value.length) {\n\t\t\treturn new Error('Invalid number');\n\t\t}\n\n\t\tif (maxLength && value.length > maxLength) {\n\t\t\treturn new Error(`Exceeds max length of ${maxLength}`);\n\t\t}\n\n\t\tif (isNaN(parseNumber(value))) {\n\t\t\treturn new Error('Invalid number format');\n\t\t}\n\n\t\t// Negative numbers are not allowed by the DAM\n\t\tif (numberType.key === 'unlimited' && value < 0) {\n\t\t\treturn new Error('Negative numbers are not allowed');\n\t\t}\n\n\t\tconst decimalCount = getDecimalCount(value);\n\t\tif (decimalCount > maxDecimal) {\n\t\t\treturn new Error(`Exceeds max decimals of ${maxDecimal}`);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Attribute_Number';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './attribute';\n\nimport {ids as attributeTypeIds} from '@netx/core-asset/properties/attributes';\n\nexport default class Attribute_Select extends Base {\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\t...super.defaults,\n\t\t\ttype: attributeTypeIds.select,\n\t\t};\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Attribute_Select';\n\t}\n}\n","/**\n * @class\n */\nimport {ids as attributeTypeIds} from '@netx/core-asset/properties/attributes';\nimport Base from './attribute';\n\nexport default class Attribute_Tag extends Base {\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\t...super.defaults,\n\t\t\ttype: attributeTypeIds.tag,\n\t\t};\n\t}\n\n\t/** @type {boolean} */\n\tget isCSV() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @override\n\t * @param {mixed} value Value\n\t * @return {mixed} Parsed in value\n\t */\n\tparseInValue(value) {\n\t\t// DAM-15267 - if there are no commas, one value, the regex in csvToArray()\n\t\t// will return null if the single value contains a single apostrophe\n\t\tif (_.isString(value) && value.indexOf(',') > -1) {\n\t\t\tvalue = _.csvToArray(value);\n\t\t}\n\t\treturn super.parseInValue(value) || [];\n\t}\n\n\t/**\n\t * @override\n\t * @param {mixed} value Value\n\t * @return {mixed} Parsed out value\n\t */\n\tparseOutValue(value) {\n\t\treturn super.parseOutValue(value) || [];\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Attribute_Tag';\n\t}\n}\n","/**\n * @class\n * @deprecated\n */\nimport Base from './attribute_tag';\n\nimport {ids as attributeTypeIds} from '@netx/core-asset/properties/attributes';\n\nexport default class Attribute_Semantic extends Base {\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\t...super.defaults,\n\t\t\ttype: attributeTypeIds.semantic,\n\t\t};\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Attribute_Semantic';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './attribute';\n\nimport {ids as attributeTypeIds} from '@netx/core-asset/properties/attributes';\n\nexport default class Attribute_Text extends Base {\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\t...super.defaults,\n\t\t\ttype: attributeTypeIds.text,\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {mixed} value Value\n\t * @param {object} opts Options\n\t * @return {mixed} Formatted value\n\t */\n\tformat(value, opts) {\n\t\topts = opts || {};\n\n\t\tconst parsedInValue = this.parseInValue(value);\n\t\tvalue = parsedInValue != null ? parsedInValue : '';\n\n\t\tvar parseURL = opts.parseURL !== false,\n\t\t\ttruncateAt = opts.truncateAt;\n\n\t\tif (_.isArray(value)) {\n\t\t\tvalue = value.join(', ');\n\t\t}\n\n\t\tvalue = value.replace(/</g, '<');\n\t\tvalue = value.replace(/>/g, '>');\n\n\t\t// Truncate value\n\t\tif (truncateAt && truncateAt !== Infinity && value.length > truncateAt) {\n\t\t\tvar truncatedValue = value.substr(0, truncateAt).trim();\n\n\t\t\tif (parseURL) {\n\t\t\t\tvar urls = value.match(/(https?:\\/\\/.*?[^\\s]+)/g);\n\t\t\t\t// We need to check if any urls started prior to truncation that did not complete\n\t\t\t\t// before truncation\n\t\t\t\tif (urls) {\n\t\t\t\t\tvar valLength = truncatedValue.length,\n\t\t\t\t\t\tcutoffUrl,\n\t\t\t\t\t\tc,\n\t\t\t\t\t\ti,\n\t\t\t\t\t\tidx;\n\n\t\t\t\t\tfor (i = 0, c = urls.length; i < c; i++) {\n\t\t\t\t\t\tconst url = urls[i];\n\t\t\t\t\t\tidx = value.lastIndexOf(url);\n\t\t\t\t\t\tif (idx < valLength && idx + url.length > valLength) {\n\t\t\t\t\t\t\tcutoffUrl = url;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ttruncatedValue = cutoffUrl\n\t\t\t\t\t\t? _.parseURLS(truncatedValue.substr(0, idx)) +\n\t\t\t\t\t\t '<a title=\"' +\n\t\t\t\t\t\t cutoffUrl +\n\t\t\t\t\t\t '\" target=\"_blank\" rel=\"noopener\" href=\"' +\n\t\t\t\t\t\t cutoffUrl +\n\t\t\t\t\t\t '\">' +\n\t\t\t\t\t\t truncatedValue.substr(idx) +\n\t\t\t\t\t\t '</a>'\n\t\t\t\t\t\t: _.parseURLS(truncatedValue);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn truncatedValue + '...';\n\t\t}\n\n\t\treturn parseURL ? _.parseURLS(value) || '' : value;\n\t}\n\n\t/**\n\t * Value only appendable if not a multivalue attribute\n\t * @override\n\t * @return {boolean} Value is appendable\n\t */\n\tisAppendable() {\n\t\treturn !this.isTrueMultivalue();\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Attribute_Text';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './attribute_text';\n\nimport {ids as attributeTypeIds} from '@netx/core-asset/properties/attributes';\n\nexport default class Attribute_Textarea extends Base {\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\t...super.defaults,\n\t\t\ttype: attributeTypeIds.textarea,\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {mixed} value Value\n\t * @param {object} opts Options\n\t * @return {mixed} Formatted value\n\t */\n\tformat(value, opts) {\n\t\topts = opts || {};\n\t\tvalue = super.format(value, opts);\n\n\t\treturn opts.html !== false ? value && value.replace(/\\n/g, '<br>') : value;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Attribute_Textarea';\n\t}\n}\n","/**\n * Attribute templates collection\n * This collection contains ALL attributes\n * It creates two sub collections of asset and clip attributes and maintains the two\n * No need to add to them individually - just add to this collection and they will get to where they need to be\n * @class\n */\nimport {assetExpirationEnabled} from '@netx/core-asset-expiration/enablers';\nimport {checksumEnabled} from '@netx/core-asset-next/enablers';\nimport {ATTRIBUTE_SYSTEM_ID} from '@netx/core-attribute/constants';\nimport {session} from '@netx/core-auth/collections/singleton';\nimport {isBrandPortal} from '@netx/core-cms-next/utils/isBrandPortal';\nimport {ENFORCE_ATTRIBUTE_IDS} from '@netx/core-cms/services/settings/constants';\nimport {\n\tcurrentUserMeetsUserLevel,\n\tUserLevel,\n} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport Base from '@netx/core/lib/netx-collection';\nimport {isEmptyValue} from '@netx/core/lib/underscore-netx';\nimport BaseModel from '../models/attribute';\nimport DateModel from '../models/attribute_date';\nimport NumberModel from '../models/attribute_number';\nimport SelectModel from '../models/attribute_select';\nimport SemanticModel from '../models/attribute_semantic';\nimport TagModel from '../models/attribute_tag';\nimport TextModel from '../models/attribute_text';\nimport TextareaModel from '../models/attribute_textarea';\nimport {\n\tids as typeIds,\n\ttypes,\n\tvocabularyAttributes,\n} from '../properties/attributes';\nimport AssetAttributeDatumCollection from './assetAttributeDatum';\n\nconst Models = {\n\tbase: BaseModel,\n\tdate: DateModel,\n\tnumber: NumberModel,\n\tselect: SelectModel,\n\tsemantic: SemanticModel,\n\ttag: TagModel,\n\ttext: TextModel,\n\ttextarea: TextareaModel,\n};\n\nconst getPortal = () =>\n\tisBrandPortal() && Netx.cms?.portal?.id && Netx.cms?.portal;\n\nexport default class Attributes extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tgetAttributeTemplates: 'Loading attributes',\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tgetAttributeTemplates: 'Loaded attributes',\n\t\t};\n\t}\n\n\t/**\n\t * Since we are overriding the model proeprty as a method\n\t * we need to point backbone into the right direction with model prototype accessing\n\t * This is the only method in all of the backbone collection code that relys on getting the a property from the model prototype\n\t * @override\n\t * @param {object} attrs Attributes\n\t * @return {mixed} Model id\n\t */\n\tmodelId(attrs) {\n\t\treturn attrs[Models.base.prototype.idAttribute || 'id'];\n\t}\n\n\t/**\n\t * Return an array of the IDs of the models in this collection.\n\t * Se note about `this.modelId` - this is an override of code in module:core/lib/netx-collection\n\t * @override\n\t * @param {boolean} omitSystem Omit system attributes\n\t * @return {array} Array of model ids\n\t */\n\tids(omitSystem) {\n\t\tconst ids = this.pluck(Models.base.prototype.idAttribute || 'id');\n\t\tif (!omitSystem) return ids;\n\n\t\t// Omit system attributes\n\t\treturn ids.filter((id) => id > 0);\n\t}\n\n\t/** @method */\n\tcomparator(attrA, attrB) {\n\t\t// Portal attributes\n\t\t// DAM-20153: if there is a portal, sort by attributeIds array\n\t\tconst portal = getPortal();\n\t\tif (portal) {\n\t\t\tconst attributeIds = portal\n\t\t\t\t.get('attributes')\n\t\t\t\t.map((attr) => attr.attributeTemplateId);\n\n\t\t\tconst indexA = attributeIds.indexOf(attrA.id);\n\t\t\tconst indexB = attributeIds.indexOf(attrB.id);\n\n\t\t\t// if the index was not found then we have a mismatch between the porta `attributes` and the\n\t\t\t// portal `attributeIds` and something did not go right in the migration\n\t\t\t//\n\t\t\t// if the data has a mismatch it is most likely due to the fact that the attribute was not selected\n\t\t\t// as a detail or sort attribute\n\t\t\t// in this event they most likely do not want it to be their primary so we will push it to the bottom\n\t\t\t// this could be the case for required attributes (like `file` and `name`)\n\t\t\tif (indexA === -1) return 1;\n\t\t\t// same as the above, if the attribute we are comparing against does not have a valid index\n\t\t\t// we want to make sure it is at the bottom of the list\n\t\t\tif (indexB === -1) return -1;\n\t\t\treturn indexA - indexB;\n\t\t}\n\n\t\t// App attributes\n\n\t\t// DAM-11580\n\t\t// If attrA is `file` it comes before\n\t\tif (attrA.id === ATTRIBUTE_SYSTEM_ID.file) {\n\t\t\treturn -1;\n\t\t}\n\t\t// If attrB is `file`, attrA comes after\n\t\telse if (attrB.id === ATTRIBUTE_SYSTEM_ID.file) {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (this.keepAlphabetical) {\n\t\t\tconst aName = attrA.get('name').toLowerCase();\n\t\t\tconst bName = attrB.get('name').toLowerCase();\n\t\t\t// This is then the standard sort you would expect by `name`\n\t\t\tif (aName < bName) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (bName < aName) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t} else {\n\t\t\tconst aOrderby = attrA.get('orderby');\n\t\t\tconst bOrderby = attrB.get('orderby');\n\t\t\t// This is then the standard sort you would expect by `orderby`\n\t\t\tif (aOrderby < bOrderby) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif (bOrderby < aOrderby) {\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\n\t\t// Equal\n\t\treturn 0;\n\t}\n\n\t/**\n\t * @property {object} methods - Collection RPC methods\n\t * @property {method} methods.read - Fetch attribute templates\n\t *\n\t * @property {method} methods.getAttributeTemplatesForCategoryContext - Provided an array of category ids, fetch all attribute templates, for those categories, that have editing permissions.\n\t * @property {method} methods.getAttributeTemplates - Fetch attribute templates\n\t * @property {method} methods.getAttributeObjects - Fetch attribute templates by id\n\t * @property {method} methods.getAllAttributeIds - Fetch attribute templates ids\n\t * @property {method} methods.getDataSetList - Fetch datasets (deprecated)\n\t * @property {method} methods.setAttributeTemplateOrder - Set new attribute template order\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\t// First get the templates\n\t\t\t\treturn (\n\t\t\t\t\tthis.categoryIds.length\n\t\t\t\t\t\t? this.getAttributeTemplatesForCategoryContext\n\t\t\t\t\t\t: this.getAttributeTemplates\n\t\t\t\t)(opts).then((attrs) => {\n\t\t\t\t\tthis.set(attrs);\n\t\t\t\t\treturn attrs;\n\t\t\t\t});\n\t\t\t},\n\n\t\t\t/** @method */\n\t\t\tgetAllAttributeIds: ['getAllAttributeIds'],\n\t\t\t/** @method */\n\t\t\tgetAttributeObjects: ['getAttributeObjects', 'attributeIds'],\n\t\t\t/** @method */\n\t\t\tgetAttributeTemplatesForCategoryContext() {\n\t\t\t\t// See @todo in constructor\n\t\t\t\tlet categoryIds = this.categoryIds;\n\t\t\t\tif (categoryIds.length > 1) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'multiple ids are not actually supported for `getAttributeTemplatesForCategoryContext`. Ignoring all but the first id.',\n\t\t\t\t\t);\n\t\t\t\t\tcategoryIds = [categoryIds[0]];\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\t'getAttributeTemplatesForCategoryContext',\n\t\t\t\t\tcategoryIds,\n\t\t\t\t\tthis.writableOnly,\n\t\t\t\t];\n\t\t\t},\n\t\t\t/** @method */\n\t\t\tgetAttributeTemplates: ['getAttributeTemplates'],\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t * @deprecated\n\t\t\t * @see parsers.getDataSetList\n\t\t\t */\n\t\t\tgetDataSetList(opts) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'Do not fetch datasets via the attributes collection. Method will be removed in 9.0 and will result in an error.',\n\t\t\t\t);\n\t\t\t\treturn ['getDataSetList', ''];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {array} ids IDs\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetAttributeTemplateOrder(ids, opts) {\n\t\t\t\treturn ['setAttributeTemplateOrder', ids, false];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Collection parsers\n\t * @property {function} parsers.getAllAttributeIds - Parse fetch of attribute ids\n\t * @property {function} parsers.getAttributeObjects - Parse fetch of attribute templates\n\t * @property {function} parsers.getAttributeTemplates - Parse fetch of attribute templates\n\t * @property {function} parsers.getAttributeTemplatesForCategoryContext - Parse fetch of attribute templates\n\t * @property {function} parsers.getDataSetList - Parse fetch of datasets (deprecated)\n\t * @property {function} parsers.setAttributeTemplateOrder - Parse update of attribute template order\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} ids Attribute ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetAllAttributeIds(ids, opts) {\n\t\t\t\t// NOTE: the attribute object's returned id field is 'attributeid', all lower case,\n\t\t\t\t// while the RPC call is getAllAttributeIds() (uppercase I).\n\t\t\t\t// I'm keeping with the somewhat standard \"Ids\" format used in the rest of the codebase.\n\t\t\t\tthis.attributeIds = ids;\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} attributes Attribute templates\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetAttributeObjects(attributes, opts) {\n\t\t\t\tthis.set(this.parseAndCorrect(attributes), opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} attributes Attribute templates\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetAttributeTemplates(attributes, opts) {\n\t\t\t\treturn this.parseAndCorrect(attributes);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} attributes Attribute templates\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetAttributeTemplatesForCategoryContext(attributes, opts) {\n\t\t\t\treturn this.parseAndCorrect(attributes);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} datasets Datasets\n\t\t\t * @param {object} opts Request options\n\t\t\t * @deprecated\n\t\t\t */\n\t\t\tgetDataSetList(datasets, opts) {\n\t\t\t\t// TODO: No! thise objects are nothin like our models whatsoever\n\t\t\t\t// it does not look like anything is using this\n\t\t\t\t// Deprecating\n\t\t\t\tconsole.warn('How do you like them errors in the console?');\n\t\t\t\tthis.set(datasets, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {null} response Null\n\t\t\t * @param {array} ids IDs\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetAttributeTemplateOrder(response, ids, opts) {\n\t\t\t\t// Correct our models `orderby`\n\t\t\t\tlet model;\n\t\t\t\t_.each(ids, (id, idx) => {\n\t\t\t\t\tmodel = this.get(id);\n\t\t\t\t\t// Set silently as we will sort after this\n\t\t\t\t\t// If we trigger a change on each one we can cause the ui to become sluggish\n\t\t\t\t\t// as it will trigger renders and all sorts of unneeded checks\n\t\t\t\t\tmodel && model.set('orderby', idx + 1, {silent: true});\n\t\t\t\t});\n\t\t\t\tthis.sort();\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} attrs Attributes\n\t * @return {array}\n\t */\n\tparseAndCorrect(attrs) {\n\t\t// Poral attributes\n\t\t// DAM-20153: this will one day be a feature of theme proper\n\t\tconst portal = getPortal();\n\t\tif (portal) {\n\t\t\t// we will use the `attributeIds` here as it is generally a more exhaustive list than `attibutes`\n\t\t\t// in the event of a migration issue - in the comparator we chack against the `attributes` array\n\t\t\t// and determine if we are out of sync and how to postion those attribute in the list\n\t\t\tconst attributeIds = portal.get('attributeIds');\n\t\t\t// While this check should no longer be neccessary now that we have fk constraints and the\n\t\t\t// attributes are being handled on the DTO and not `goo` - let's keep it in place until\n\t\t\t// we have an overall refactor of the attribute system (moving all of it out of backbone)\n\t\t\t// Also, the portal has no idea about clip only attributes\n\t\t\tconst filteredAttrs = attrs.filter(\n\t\t\t\t(attr) =>\n\t\t\t\t\tattributeIds.includes(attr.attributeid) &&\n\t\t\t\t\tattr.objectTypes.includes('asset'),\n\t\t\t);\n\t\t\t// just in case the server failed to enforce this or we had a bad migration\n\t\t\tENFORCE_ATTRIBUTE_IDS.forEach((id) => {\n\t\t\t\tif (!filteredAttrs.find((attr) => attr.attributeid === id)) {\n\t\t\t\t\tconst attr = attrs.find((attr) => attr.attributeid === id);\n\t\t\t\t\tattr && filteredAttrs.push(attr);\n\t\t\t\t}\n\t\t\t});\n\t\t\tattrs = filteredAttrs;\n\t\t}\n\n\t\treturn _.compact(\n\t\t\t_.map(attrs, (attr) => {\n\t\t\t\tlet attrName = attr.name;\n\n\t\t\t\t// We now allow some editing of system attributes as if they were regular attributes\n\t\t\t\t// turns out the server is not considering this data mandatory on their end\n\t\t\t\t// DAM-19292 - when this ticket is done we can remove this piece of code\n\t\t\t\tif ([-100, -101].includes(attr.attributeid)) {\n\t\t\t\t\tattr.mandatory = 1;\n\t\t\t\t\tattr.permission = currentUserMeetsUserLevel(UserLevel.MANAGER);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(attrName !== 'checksum' ||\n\t\t\t\t\t\tsession.getToken() ||\n\t\t\t\t\t\tchecksumEnabled()) &&\n\t\t\t\t\t(attrName !== 'expireDate' ||\n\t\t\t\t\t\tassetExpirationEnabled() ||\n\t\t\t\t\t\tsession.getToken()) &&\n\t\t\t\t\tattrName !== 'path' &&\n\t\t\t\t\tattrName !== 'modUser' &&\n\t\t\t\t\tattrName !== 'thumbPath'\n\t\t\t\t) {\n\t\t\t\t\tif (attr.system) {\n\t\t\t\t\t\tswitch (attrName) {\n\t\t\t\t\t\t\tcase 'fileSize':\n\t\t\t\t\t\t\t\tattrName = 'fileSize2';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'creationDate':\n\t\t\t\t\t\t\t\tattrName = 'creationdate';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'expireDate':\n\t\t\t\t\t\t\t\tattrName = 'expirationDate';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'fileType':\n\t\t\t\t\t\t\t\tattrName = 'filetypelabel';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'modDate':\n\t\t\t\t\t\t\t\tattrName = 'moddate';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn _.extend(attr, {\n\t\t\t\t\t\tname: attrName,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model =\n\t\t\topts.model ||\n\t\t\tfunction (attrs, opts) {\n\t\t\t\tconst typeName = types[attrs.type];\n\t\t\t\tconst modelClass = Models[typeName] || Models.base;\n\t\t\t\treturn new modelClass(attrs, opts);\n\t\t\t};\n\n\t\t// Circular\n\t\t//AssetAttributeDatumCollection = require('./assetAttributeDatum');\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * For use with `getAttributeTemplatesForCategoryContext`\n\t\t * Only respected when `permission.attributesEnabled` is true\n\t\t * @memberOf Netx.Collections.Attributes\n\t\t * @todo Andrew has noted that we will be eventually only allowing a single id here\n\t\t * We do not use more than one id as of yet and should not moving forward. The request\n\t\t * method will just send the first id and console log a warning if there is more than\n\t\t * one present in the mean time.\n\t\t * @alias categoryIds\n\t\t * @type {number}\n\t\t */\n\t\tthis.categoryIds =\n\t\t\t(getPreference('permission.attributesEnabled', true) &&\n\t\t\t\topts.categoryIds) ||\n\t\t\t[];\n\n\t\t/**\n\t\t * @memberof module:asset/collections/attributes\n\t\t * @alias keepAlphabetical\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.keepAlphabetical = getPreference(\n\t\t\t'metadata.keepListAlphabetical',\n\t\t\ttrue,\n\t\t);\n\n\t\t/**\n\t\t * @memberof module:asset/collections/attributes\n\t\t * @alias writableOnly\n\t\t * @type {boolean}\n\t\t */\n\t\tthis.writableOnly = opts.writableOnly === true;\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(this, 'sync', (collection, results, opts) => {\n\t\t\t// Models sync too\n\t\t\tif (this !== collection) return;\n\n\t\t\tthis.stopListening(this, 'add change remove');\n\t\t\tthis.listenTo(this, 'add', this.attributeAdded);\n\t\t\tthis.listenTo(this, 'change', this.attributeChanged);\n\t\t\tthis.listenTo(this, 'remove', this.attributeRemoved);\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {Netx.Models.Attribute} model Attribute template model\n\t * @fires module:asset#asset:attribute:added\n\t */\n\tattributeAdded(model) {\n\t\t// Dispatch event\n\t\t// TODO: fix this, no dispatching from models/collections\n\t\tdispatcher.trigger('asset:attribute:added', model);\n\t}\n\n\t/**\n\t * @method\n\t * @param {Netx.Models.Attribute} model Attribute template model\n\t * @fires module:asset#asset:attribute:changed\n\t */\n\tattributeChanged(model) {\n\t\t// Dispatch event\n\t\t// TODO: fix this, no dispatching from models/collections\n\t\tdispatcher.trigger('asset:attribute:changed', model);\n\t}\n\n\t/**\n\t * @method\n\t * @param {Netx.Models.Attribute} model Attribute template model\n\t * @fires module:asset#asset:attribute:removed\n\t */\n\tattributeRemoved(model) {\n\t\t// Dispatch event\n\t\t// TODO: fix this, no dispatching from models/collections\n\t\tdispatcher.trigger('asset:attribute:removed', model);\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} ids Array of attribute template ids\n\t */\n\tdeleteAttributes(ids) {\n\t\treturn this.deleteMultiple(ids);\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} objectType Object type (asset/clip)\n\t */\n\tfilterByObjectType(objectType) {\n\t\tconst filter = () => {\n\t\t\treturn this.filter((model) => model.isForObjectType(objectType));\n\t\t};\n\n\t\t// When we change, so should the filtered collection\n\t\tconst collection = new this.constructor(filter());\n\t\treturn collection\n\t\t\t.listenTo(this, 'add', (attributes, attribute) => {\n\t\t\t\tcollection.add(attribute);\n\t\t\t})\n\t\t\t.listenTo(this, 'remove', (attributes, attribute) => {\n\t\t\t\tcollection.remove(attribute);\n\t\t\t})\n\t\t\t.listenTo(this, 'reset', (attributes) => {\n\t\t\t\tcollection.reset(filter());\n\t\t\t})\n\t\t\t.listenTo(this, 'sync', (attributes, data, opts) => {\n\t\t\t\tif (attributes !== this) return;\n\t\t\t\tcollection.set(filter(), opts);\n\t\t\t\tcollection.trigger('sync', collection);\n\t\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} types Types of attributes to return\n\t * @param {boolean} editableOnly Only return editable attributes\n\t * @return {Netx.Collection.Attributes}\n\t */\n\tfilterByTypes(types, editableOnly) {\n\t\t// Wrap\n\t\tif (!_.isArray(types)) {\n\t\t\ttypes = [types];\n\t\t}\n\n\t\t// For now we need to be the holders of this data\n\t\t// In 8.12 we will have flags on the templates themselves for this\n\t\tconst editableSystemAttributes = ['description', 'name'];\n\n\t\t// Support the user passing strings instead of type ids\n\t\t// Convert them over to type ids before going forward\n\t\ttypes = _.map(types, (type) =>\n\t\t\t!_.isNumeric(type) ? typeIds[type] : parseInt(type),\n\t\t);\n\n\t\t// Return filtered collection\n\t\treturn new this.constructor(\n\t\t\tthis.filter(\n\t\t\t\t(attr) =>\n\t\t\t\t\t// If we want only editable attributes then we need to omit any system attributes that cannot be edited - all other attribute types are editable by default\n\t\t\t\t\t_.contains(types, attr.get('type')) &&\n\t\t\t\t\t(!editableOnly ||\n\t\t\t\t\t\t!attr.get('system') ||\n\t\t\t\t\t\t_.contains(editableSystemAttributes, attr.get('name'))),\n\t\t\t),\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @return {module:asset/collections/attributes} Attributes tracking history\n\t */\n\tfilterByHistory() {\n\t\treturn new this.constructor(this.where({trackHistory: true}));\n\t}\n\n\t/**\n\t * @method\n\t * @return {module:asset/collections/assetAttributeDatum} Asset attribute datum\n\t */\n\tgetAttributeDatum(defaultValues) {\n\t\tconst attributeDatum = new AssetAttributeDatumCollection([\n\t\t\t{\n\t\t\t\tassetId: 0,\n\t\t\t\tattributes: [],\n\t\t\t},\n\t\t]);\n\n\t\tconst record = attributeDatum.at(0);\n\n\t\tthis.each((model) => {\n\t\t\tlet value = defaultValues ? model.get('value') : null;\n\n\t\t\tif (isEmptyValue(value)) {\n\t\t\t\tvalue = [];\n\t\t\t} else if (!_.isArray(value)) {\n\t\t\t\tvalue = [value];\n\t\t\t}\n\n\t\t\trecord.addAttribute({\n\t\t\t\tassetId: 0,\n\t\t\t\tmultivalue: model.get('multivalue'),\n\t\t\t\tpermission: 'w',\n\t\t\t\tvalues: value,\n\t\t\t\ttypeName: model.getTypeName(),\n\t\t\t\ttemplateId: model.id,\n\t\t\t\tname: model.get('name'),\n\t\t\t});\n\t\t});\n\n\t\treturn attributeDatum;\n\t}\n\n\t/**\n\t * For attr storage purposes: get an id for a name\n\t * Unfortunately in a lot of the old interface, attribute names were used over ids (diplayed attributes, attribute field sets etc)\n\t * @method\n\t * @param {string} name Attribute name\n\t * @return {number} Attribute id\n\t */\n\tgetIdByName(name) {\n\t\tconst attr = this.findWhere({name: name});\n\t\treturn attr ? attr.get('attributeid') : undefined;\n\t}\n\n\t/**\n\t * @method\n\t * @param {boolean} withoutDefaultValues Only return attributes without default values\n\t * @return {module:asset/collections/attributes}\n\t */\n\tgetMandatory(withoutDefaultValues, withoutSystem) {\n\t\treturn new this.constructor(\n\t\t\tthis.filter(\n\t\t\t\t(m) =>\n\t\t\t\t\tm.isMandatory() &&\n\t\t\t\t\t(!withoutDefaultValues || !m.hasDefaultValue()) &&\n\t\t\t\t\t(!withoutSystem || !m.get('system')),\n\t\t\t),\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @return {Netx.Collections.Attributes} Collection of system attributes\n\t */\n\tgetSystemAttributes() {\n\t\treturn new this.constructor(this.filter((attr) => attr.get('system')));\n\t}\n\n\t/**\n\t * Are there mandatory attributes?\n\t * @method\n\t * @return {array} List of attribute models that are mandatory, or 'undefined' (instead of empty array) if there are none.\n\t */\n\thasMandatory() {\n\t\tconst list = this.filter((m) => m.get('mandatory') == 1);\n\t\treturn list.length ? list : undefined;\n\t}\n\n\t/**\n\t * For asset sorting purposes, return an object of names of known attributes.\n\t * @method\n\t * @param {boolean} system Include system attributes\n\t * @return {object} names\n\t */\n\tnames(system) {\n\t\tconst names = {};\n\t\tthis.each((attr) => {\n\t\t\tif (system && attr.get('system') === true) {\n\t\t\t\tnames[attr.get('code')] = attr.get('name');\n\t\t\t} else if (attr.get('system') !== true) {\n\t\t\t\tnames[attr.get('name')] = attr.get('name');\n\t\t\t}\n\t\t});\n\t\treturn names;\n\t}\n\n\t/**\n\t * Vocabulary has been updated\n\t * @param {number} vocabularyId Vocabulary ID\n\t */\n\tupdatedVocabulary(vocabularyId) {\n\t\t// Every attribute that uses this vocab needs to be refetched\n\t\tthis.each((model) => {\n\t\t\tif (!vocabularyAttributes.includes(model.get('type'))) return;\n\t\t\tmodel.get('spec1') === vocabularyId && model.fetch();\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Attributes';\n\t}\n}\n","/**\n * @class\n * @todo Documents defaults\n */\nimport Base from '@netx/core/lib/netx-model';\n\nexport default class PendingAsset extends Base {\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'assetId';\n\t}\n\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\t// assetId: undefined,\n\t\t\tcategoryIds: [],\n\t\t\tdirection: undefined, // 'coming' or 'going'\n\t\t\tstate: undefined, // 'uploading', 'importing', 'indexing', etc\n\t\t};\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'PendingAsset';\n\t}\n}\n","/**\n * the Pending Assets collection maintans a list of assets that are in a state of flux,\n * entering or leaving a category due to import, deletion or recategorization. We need\n * to do this parly because our main selection mechanism, searchAssetListObjects(), goes through\n * an indexed search layer that takes a moment to re-index after a change. This collection\n * maintains state about any changes that we have performed that the DAM is not yet finished with.\n * @class\n * @TODO This collection needs a lot of attention but right now it works\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/pendingAsset';\n\nexport default class PendingAssets extends Base {\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * Pending Assets collections react to various pre-existing system events that indicate\n\t\t * an asset is about to be added to, or removed from, a category.\n\t\t *\n\t\t * It creates an 'coming' record when a file import begins,\n\t\t */\n\t\tthis.listenTo(dispatcher, 'upload:import:imported', this.assetImporting);\n\t\t/**\n\t\t * and both 'coming' and 'going' records when assets are recategorized.\n\t\t */\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t'asset:category:added',\n\t\t\tthis.assetEnteringCategory,\n\t\t);\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t'asset:category:removed',\n\t\t\tthis.assetLeavingCategory,\n\t\t);\n\n\t\t/**\n\t\t * Asset deletion is almost instant, but this could be extended to that as well.\n\t\t */\n\t}\n\n\tassetImporting(plupload, file, asset) {\n\t\tconst categoryId = asset.get('categoryid');\n\n\t\tvar p = new Model({\n\t\t\tassetId: asset.id,\n\t\t\tcategoryIds: [categoryId],\n\t\t\tdirection: 'coming',\n\t\t\tstate: 'uploading',\n\t\t});\n\n\t\tvar events = {\n\t\t\tdone: 'asset:task:complete:',\n\t\t\tcancelled: 'asset:pending:import:cancelled:',\n\t\t};\n\n\t\tthis.add(p);\n\n\t\t/**\n\t\t * When an uploading asset finishes uploading, the pending list record state is switched from 'uploading' to 'pending'\n\t\t */\n\t\tdispatcher.once(\n\t\t\tevents.uploaded + p.id,\n\t\t\tfunction () {\n\t\t\t\tp.set({state: 'pending'});\n\t\t\t},\n\t\t\tp,\n\t\t);\n\n\t\t/**\n\t\t * When a 'tasks:done' event for an asset arrives, that asset is removed from the Pending list.\n\t\t */\n\t\tvar setupDoneListener = function () {\n\t\t\tdispatcher.once(\n\t\t\t\tevents.done + p.id,\n\t\t\t\tfunction () {\n\t\t\t\t\tif (p.collection) {\n\t\t\t\t\t\tp.collection.remove(p);\n\t\t\t\t\t}\n\t\t\t\t\tdispatcher.trigger('asset:pending:task:complete:' + p.id);\n\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t'category:asset:pending:task:complete',\n\t\t\t\t\t\tcategoryId,\n\t\t\t\t\t\tp.id,\n\t\t\t\t\t);\n\t\t\t\t\t// kill the cancel listener.\n\t\t\t\t\tdispatcher.off(events.cancelled + p.id, undefined, p);\n\t\t\t\t},\n\t\t\t\tp,\n\t\t\t);\n\t\t};\n\n\t\tsetupDoneListener();\n\n\t\t/**\n\t\t * In the case of import cancellation, that asset is also removed from the list.\n\t\t */\n\t\tdispatcher.once(\n\t\t\tevents.cancelled + p.id,\n\t\t\tfunction (model, newId) {\n\t\t\t\t// DAM-7713:\n\t\t\t\t// If there was a new ID issued, we want to track tasks on that ID,\n\t\t\t\t// instead of on the model's current ID.\n\t\t\t\t// (The model ought to update itself momentarily; this event is triggered right before that happens.)\n\t\t\t\tif (model && model.id !== newId) {\n\t\t\t\t\tvar oldId = model.id;\n\t\t\t\t\tp.set({\n\t\t\t\t\t\tassetId: newId,\n\t\t\t\t\t});\n\t\t\t\t\t// DEVNOTE: the decision to embed the asset id in the event name makes this part hella awkward.\n\t\t\t\t\t// It's nice elsewhere: in the case of asset models, every asset can listen for only its ID\n\t\t\t\t\t// (n performance), rather than all assets listening for all IDs (n^2), and we have a lot of asset models.\n\t\t\t\t\t// But in this context, it'd be better to have permanent listeners to events that don't have IDs in their names,\n\t\t\t\t\t// that don't need to be turned on and off all the time.\n\t\t\t\t\t//\n\t\t\t\t\t// I know that in some places we trigger two different events in order to have it both ways. That also feels yucky.\n\t\t\t\t\t//\n\t\t\t\t\t// Perhaps a single \"all\" listener could be in charge of spotting the form without the ID,\n\t\t\t\t\t// translating it to the form with the ID, and re-triggering,\n\t\t\t\t\t// for every event its useful to do that with.\n\t\t\t\t\t//\n\t\t\t\t\t// Until then, this sort of cruft is necessary:\n\t\t\t\t\tdispatcher.off(events.done + oldId); // that ID is dead, nobody should listen.\n\t\t\t\t\tsetupDoneListener();\n\t\t\t\t} else {\n\t\t\t\t\t// Some other cancellation ... just leave it alone\n\t\t\t\t\tif (p.collection) {\n\t\t\t\t\t\tp.collection.remove(p);\n\t\t\t\t\t}\n\t\t\t\t\t// Kill all listeners\n\t\t\t\t\tdispatcher.off(events.uploaded + p.id, undefined, p);\n\t\t\t\t\tdispatcher.off(events.done + p.id, undefined, p);\n\t\t\t\t}\n\t\t\t\t// TODO: all listeners off\n\t\t\t},\n\t\t\tp,\n\t\t);\n\n\t\tdispatcher.trigger(\n\t\t\t'asset:pending:import:start',\n\t\t\tplupload,\n\t\t\tfile,\n\t\t\tasset,\n\t\t\tcategoryId,\n\t\t);\n\t}\n\n\tassetEnteringCategory(assetId, categoryId, asset) {\n\t\tvar p = new Model({\n\t\t\tassetId: parseInt(assetId),\n\t\t\tcategoryIds: [parseInt(categoryId)],\n\t\t\tdirection: 'coming',\n\t\t\tstate: 'pending',\n\t\t});\n\n\t\tthis.add(p);\n\n\t\tdispatcher.once(\n\t\t\t'asset:task:complete:' + assetId,\n\t\t\tfunction (task) {\n\t\t\t\tif (p.collection) {\n\t\t\t\t\tp.collection.remove(p);\n\t\t\t\t}\n\t\t\t\tdispatcher.trigger('asset:pending:task:complete:' + assetId);\n\t\t\t},\n\t\t\tp,\n\t\t);\n\n\t\tdispatcher.trigger('asset:pending:category:coming', assetId, categoryId, p);\n\t}\n\n\tassetLeavingCategory(assetId, categoryId, asset) {\n\t\tvar p = new Model({\n\t\t\tassetId: parseInt(assetId),\n\t\t\tcategoryIds: [parseInt(categoryId)],\n\t\t\tdirection: 'going',\n\t\t\tstate: 'pending',\n\t\t});\n\n\t\tthis.add(p);\n\n\t\tdispatcher.once(\n\t\t\t'asset:task:complete:' + assetId,\n\t\t\tfunction (task) {\n\t\t\t\tif (p.collection) {\n\t\t\t\t\tp.collection.remove(p);\n\t\t\t\t}\n\t\t\t\tdispatcher.trigger('asset:pending:task:complete:' + assetId);\n\t\t\t},\n\t\t\tp,\n\t\t);\n\n\t\tdispatcher.trigger('asset:pending:category:going', assetId, categoryId, p);\n\t}\n\n\t/**\n\t * The methods findByAsset, filterByAsset, findByCategory and filterByCategory\n\t * take the appropriate ID as an argument, and return pendingAsset objects if they exist in the collection.\n\t * The find* methods return undefined if nothing is found; the filter* methods\n\t * return an empty array.\n\t */\n\n\t// TODO: every render of every assetListItemView now calls findByAsset, so\n\t// maybe measure its performance, possibly reorg the object to get better access.\n\n\tfindByAsset(assetId) {\n\t\treturn this.find(function (p) {\n\t\t\treturn parseInt(assetId) == parseInt(p.get('assetId'));\n\t\t});\n\t}\n\n\tfilterByAsset(assetId) {\n\t\treturn this.filter(function (p) {\n\t\t\treturn parseInt(assetId) == parseInt(p.get('assetId'));\n\t\t});\n\t}\n\n\tfindByCategory(catId) {\n\t\treturn this.find(function (p) {\n\t\t\treturn (\n\t\t\t\t_.indexOf(p.get('categoryIds'), parseInt(catId)) > -1 || // check for 37\n\t\t\t\t_.indexOf(p.get('categoryIds'), catId + '') > -1 // check for \"37\"\n\t\t\t);\n\t\t}); // TODO: refactor as array\n\t}\n\n\tfilterByCategory(catId) {\n\t\treturn this.filter(function (p) {\n\t\t\treturn (\n\t\t\t\t_.indexOf(p.get('categoryIds'), parseInt(catId)) > -1 || // check for 37\n\t\t\t\t_.indexOf(p.get('categoryIds'), catId + '') > -1 // check for \"37\"\n\t\t\t);\n\t\t}); // TODO: refactor as array\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'PendingAssets';\n\t}\n}\n","import PendingAssetsCollection from '../pendingAssets';\n\nexport const pendingAssets = new PendingAssetsCollection([]);\n\nexport default pendingAssets;\n\nimport {setGlobal} from '@netx/core-next/utils/setGlobal';\nif (process.env.NODE_ENV !== 'production') {\n\tsetGlobal({pendingAssets});\n}\n","export * from '@netx/core-asset-next/constants';\n\nexport const AudioFormatFamilyType = <const>{\n\tAUDIO: 'audio',\n};\nexport const AudioFormatFamilies = Object.values(AudioFormatFamilyType);\n\nexport const DocumentFormatFamilyType = <const>{\n\tDOCUMENT: 'document',\n\tLAYOUT: 'layout',\n};\nexport const DocumentFormatFamilies = Object.values(DocumentFormatFamilyType);\n\nexport const ImageFormatFamilyType = <const>{\n\tCAMERA_RAW: 'cameraRaw',\n\tIMAGE: 'image',\n\tRAW: 'raw',\n\tVECTOR: 'vector',\n};\nexport const ImageFormatFamilies = Object.values(ImageFormatFamilyType);\n\nexport const VideoFormatFamilyType = <const>{\n\tVIDEO: 'video',\n};\nexport const VideoFormatFamilies = Object.values(VideoFormatFamilyType);\n\nexport const MediaFormatFamilyType = <const>{\n\t...AudioFormatFamilyType,\n\t...VideoFormatFamilyType,\n};\nexport const MediaFormatFamilies = Object.values(MediaFormatFamilyType);\n","/**\n * For when you want to just deal with a single type of constituent (like doc viewer)\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\n\nexport default class AssetConstituents_ extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} methods - Collection RPC methods\n\t * @property {method} methods.read - Fetch constituents\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/** @method */\n\t\t\tread: ['getConstituentsForAsset', 'assetId'],\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Collection parsers\n\t * @property {function} parsers.read - Parse the results of fetch\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} data Data\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(data, opts) {\n\t\t\t\t// Where k could be\n\t\t\t\t// clips\n\t\t\t\t// keyframes\n\t\t\t\t// layers\n\t\t\t\t// pages\n\t\t\t\t_.each(data, (v, k) => {\n\t\t\t\t\tif (k === this.type) {\n\t\t\t\t\t\tthis.reset(v);\n\t\t\t\t\t\tthis['original' + _.ucfirst(k)] = v.slice();\n\t\t\t\t\t}\n\t\t\t\t\tdelete data[k];\n\t\t\t\t});\n\t\t\t\t// Return nothing - not doing so will result in rpc setting the return for us\n\t\t\t\treturn null;\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetConstituents_';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './assetConstituents_';\nimport Model from '../models/assetConstituent_clip';\n\nexport default class AssetConstituents_Clips extends Base {\n\t/** @type {string} */\n\tget type() {\n\t\treturn 'clips';\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetConstituents_Clips';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './assetConstituent';\n\nexport default class AssetConstituent_Keyframe extends Base {\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {number} defaults.type - Default type (1 = keyframe)\n\t */\n\tget defaults() {\n\t\treturn _.extend(super.defaults, {\n\t\t\ttype: 1,\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetConstituent_Keyframe';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './assetConstituents_';\nimport Model from '../models/assetConstituent_keyframe';\n\nexport default class AssetConstituents_Keyframes extends Base {\n\t/** @type {string} */\n\tget type() {\n\t\treturn 'keyframes';\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetConstituents_Keyframes';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './assetConstituent';\n\nexport default class AssetConstituent_Layer extends Base {\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {number} defaults.type - Default type (2 = layer)\n\t */\n\tget defaults() {\n\t\treturn _.extend(super.defaults, {\n\t\t\ttype: 2,\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetConstituent_Layer';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './assetConstituents_';\nimport Model from '../models/assetConstituent_layer';\n\nexport default class AssetConstituents_Layers extends Base {\n\t/** @type {string} */\n\tget type() {\n\t\treturn 'layers';\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetConstituents_Layers';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './assetConstituent';\n\nexport default class AssetConstituent_Page extends Base {\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {number} defaults.type - Default type (3 = page)\n\t * @property {number} defaults.pageNumber - The default page number (client side)\n\t */\n\tget defaults() {\n\t\treturn _.extend(super.defaults, {\n\t\t\ttype: 3,\n\t\t\t// Client attributes\n\t\t\tpageNumber: 0,\n\t\t});\n\t}\n\t/** @type {array} */\n\tget clientAttrs() {\n\t\treturn ['pageNumber'];\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attr Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts) {\n\t\tsuper(attrs, opts);\n\n\t\t// Internationalize the title for pages\n\t\tvar title = this.get('title');\n\t\tif (title) {\n\t\t\t// \"Page n\"\n\t\t\ttitle = title.split(' ');\n\t\t\tif (title.length > 1) {\n\t\t\t\tthis.attributes.title = i18n.t('i18n.pageAndNumber', {\n\t\t\t\t\tpage: title[1],\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetConstituent_Page';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './assetConstituents_';\nimport Model from '../models/assetConstituent_page';\n\nexport default class AssetConstituents_Pages extends Base {\n\t/** @type {string} */\n\tget type() {\n\t\treturn 'pages';\n\t}\n\n\t/**\n\t * @property {object} methods - Collection RPC methods\n\t * @property {method} methods.read - Search pages\n\t */\n\tget methods() {\n\t\treturn _.extend(super.methods, {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {string} str Search fragment\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsearchPDFPages(str, opts) {\n\t\t\t\tthis.filtered = true;\n\t\t\t\treturn ['searchPDFPages', this.assetId, str];\n\t\t\t},\n\t\t});\n\t}\n\n\t/*\n\t * @property {object} parsers - Collection parsers\n\t * @property {function} parsers.read - Parse the results of fetch\n\t * @property {function} parsers.searchPDFPages - Parse the results of search\n\t */\n\tget parsers() {\n\t\treturn _.extend(super.parsers, {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} data Data\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(data, opts) {\n\t\t\t\t// Set page number - cannot be certain of this with the ref/id\n\t\t\t\t_.each(data.pages, (page, idx) => {\n\t\t\t\t\tpage.pageNumber = idx + 1;\n\t\t\t\t});\n\t\t\t\tthis.originalPages = data.pages.slice();\n\t\t\t\treturn data.pages;\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} data Data\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsearchPDFPages(data, opts) {\n\t\t\t\tthis.reset(\n\t\t\t\t\t_.map(data, (d, idx) => {\n\t\t\t\t\t\td.pageNumber = idx + 1;\n\t\t\t\t\t\treturn d;\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t},\n\t\t});\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * Store original pages (for search results)\n\t\t * @memberOf Netx.Collections.Pages\n\t\t * @alias originalPages\n\t\t * @type {array}\n\t\t */\n\t\tthis.originalPages = this.originalPages || [];\n\t}\n\n\t/**\n\t * Clear search\n\t * @method\n\t */\n\tclearSearch() {\n\t\t// No longer filtered\n\t\tthis.filtered = false;\n\t\tthis.reset(this.originalPages);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetConstituents_Pages';\n\t}\n}\n","/**\n * AssetConstituents collection\n * We now get a return with objects - the key representing the constituent type.\n * There is currently no individual call to get the constituents of a type for an asset.\n * This collection makes the fetch and splits off the return into the appropriate constituent sub collection.\n * Each collection may need a different comparator and definitely needs its own model type (looking at you clips)\n * The alternative is that we get in a mess of declaring all these collections within a controller and then have a\n * specific call for each - why not just fetch here and get it all for free?\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/assetConstituent';\n\nimport Clips from './assetConstituents_clips';\nimport Keyframes from './assetConstituents_keyframes';\nimport Layers from './assetConstituents_layers';\nimport Pages from './assetConstituents_pages';\n\nimport {constituents as constituentProps} from '../properties/asset';\n\nconst ConsituentCollections = {\n\tclips: Clips,\n\tkeyframes: Keyframes,\n\tlayers: Layers,\n\tpages: Pages,\n};\n\nexport default class AssetConstituents extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} methods - Collection RPC methods\n\t * @property {method} methods.read - Fetch constituents\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tread: ['getConstituentsForAsset', 'assetId'],\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Collection parsers\n\t * @property {function} parsers.read - Parse the results of fetch\n\t */\n\tget parsers() {\n\t\treturn _.extend(super.parsers, {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} data Data\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(data, opts) {\n\t\t\t\t// Where k could be\n\t\t\t\t// clips\n\t\t\t\t// keyframes\n\t\t\t\t// layers\n\t\t\t\t// pages\n\t\t\t\t_.each(data, (v, k) => {\n\t\t\t\t\tconst subCollection = this[k];\n\n\t\t\t\t\t// Set models for sub colelction\n\t\t\t\t\tsubCollection.set(v);\n\n\t\t\t\t\t// Check for selected constituent and store it\n\t\t\t\t\tconst selected = subCollection.findWhere({display: 1});\n\t\t\t\t\tif (selected) {\n\t\t\t\t\t\tthis.displayed = selected;\n\t\t\t\t\t}\n\n\t\t\t\t\tdelete data[k];\n\t\t\t\t});\n\n\t\t\t\treturn data;\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * @override\n\t * @param {array} models An array of models or model attirbutes\n\t * @param {object} options Options\n\t */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * AssetId that the constituents reference\n\t\t * @type {Number}\n\t\t * @default\n\t\t */\n\t\tthis.assetId = opts.assetId || 0;\n\n\t\t/**\n\t\t * The currently selected constituent for display\n\t\t * @memberOf Netx.Collections.AssetConstituents\n\t\t * @alias displayed\n\t\t * @type {module:asset/models/assetConstituent}\n\t\t */\n\t\tthis.displayed = null;\n\n\t\t/**\n\t\t * @memberOf Netx.Collections.AssetConstituents\n\t\t * @alias properties\n\t\t * @type {object}\n\t\t */\n\t\tthis.properties = opts.properties || constituentProps;\n\n\t\t// Our clip types\n\t\t// this.clips = new Netx.Collections.AssetConstituents_clips\n\t\t// this.keyframes = new Netx.Collections.AssetConstituents_keyframes\n\t\t// this.layers = new Netx.Collections.AssetConstituents_layers\n\t\t// this.pages = new Netx.Collections.AssetConstituents_pages\n\t\t_.each(this.properties.types, (thing, id) => {\n\t\t\tconst things = new ConsituentCollections[`${thing}s`]([]);\n\n\t\t\tthings\n\t\t\t\t// The subcollections should mirror the read events of the parent collections, as they're all fetched as one:\n\t\t\t\t.listenTo(this, 'request:read', (collection, xhr, opts) => {\n\t\t\t\t\tif (collection !== this) return;\n\t\t\t\t\t!opts.silent && things.trigger('request:read', things, xhr, opts);\n\t\t\t\t})\n\t\t\t\t// When it syncs we sync\n\t\t\t\t.listenTo(this, 'sync', (collection, resp, opts) => {\n\t\t\t\t\tif (collection !== this) return;\n\t\t\t\t\t!opts.silent && things.trigger('sync', things, resp, opts);\n\t\t\t\t});\n\n\t\t\tthis.listenTo(things, 'sync', (collection) => {\n\t\t\t\tif (collection !== things) return;\n\t\t\t\tconst displayed = this.findWhere({display: 1});\n\t\t\t\tif (displayed) {\n\t\t\t\t\tthis.displayed = displayed;\n\t\t\t\t}\n\t\t\t}).listenTo(things, 'change:display', (model, display) => {\n\t\t\t\tif (display && this.displayed !== model) {\n\t\t\t\t\tthis.displayed && this.displayed.set('display', 0);\n\t\t\t\t\tthis.displayed = model;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis[thing + 's'] = things;\n\t\t\tthis.addSubCollection(things);\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetConstituents';\n\t}\n}\n","/**\n * Asset model.\n *\n * @classdesc This model is the client-side representation of the DAM 'assetBean' object, containing all DAM info on an asset.\n * It has a variety of RPC methods for operating on a single asset. The object is quite complete, and not all fields\n * are used for all assets.\n *\n * @class\n * @extends Netx.Model\n */\nimport ProgressModel from '@netx/core-app/models/progress';\nimport {userInputToExpirationTime} from '@netx/core-asset-expiration/utils/userInputToExpirationTime';\nimport {checksumEnabled} from '@netx/core-asset-next/enablers';\nimport {canZoomAsset} from '@netx/core-asset-next/enablers/canZoomAsset';\nimport {AssetVersionEvent} from '@netx/core-asset-version/actions/constants';\nimport {getAttribute, getAttributeId} from '@netx/core-attribute/singletons';\nimport {session} from '@netx/core-auth/collections/singleton/session';\nimport {dispatcher} from '@netx/core-next/instance';\nimport {getPrefixedLogger} from '@netx/core-next/instance/logger';\nimport {URL} from '@netx/core-next/url';\nimport {matrixNames} from '@netx/core-permissions/properties/assetPermissions';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {i18n} from '@netx/core/i18n';\nimport Base from '@netx/core/lib/netx-model';\nimport AssetConstituentsCollection from '../collections/assetConstituents';\nimport {importTasks} from '../properties/asset';\nimport {types as assetSetTypes} from '../properties/assetSets';\nimport AssetSetModel from './assetSet';\nimport AssetVersionModel from './assetVersion';\n\nconst logger = getPrefixedLogger('models/asset');\n\nexport default class Asset extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'assetId';\n\t}\n\n\tget titleAttribute() {\n\t\treturn 'name';\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {array} */\n\tget xhrExcludeProgress() {\n\t\treturn ['recordViewed'];\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {number} defaults.assetId - ID\n\t * @property {string} defaults.alphsChannel - Alpha channel\n\t * @property {array} defaults.attributeIds - Attribute IDs\n\t * @property {array} defaults.attributeNames - Attribute names\n\t * @property {array} defaults.attributeValues - Attribute values\n\t * @property {number} defaults.bitDepth - Bit depth\n\t * @property {array} defaults.categories - Category IDs\n\t * @property {number} defaults.categoryid - Primary category ID\n\t * @property {array} defaults.categoryPaths - Category paths\n\t * @property {number} defaults.checkout - If checked out, ID of user who checked it out\n\t * @property {string} defaults.checkoutUserLabel - Name of user that has this asset currently checked out\n\t * @property {string} defaults.colorProfile - Color profile\n\t * @property {array} defaults.constituentIds - Array of ids for all of the assets constituents\n\t * @property {string} defaults.constituentType - Type of constituent the asset has (keyframes, pages, layers)\n\t * @property {string} defaults.creationDate - Creation date (YYYY-MM-DD hh:mm:ss)\n\t * @property {string} defaults.description - Description\n\t * @property {number} defaults.dpi - DPI\n\t * @property {number} defaults.duration - Audio/video duration (seconds)\n\t * @property {number} defaults.expirationDate - Expiration date (Unix timestamp)\n\t * @property {string} defaults.file - Filename\n\t * @property {array} defaults.fileFormatFamily - File format families (types)\n\t * @property {number} defaults.fileheight - File height (pixels)\n\t * @property {number} defaults.filesize - Deprecated. See `fileSize2`\n\t * @property {number} defaults.fileSize2 - File size in bytes\n\t * @property {number} defaults.fileType - ID of file format type\n\t * @property {string} defaults.fileTypeLabel - File type name (usually the file extension)\n\t * @property {number} defaults.filewidth - File width (pixels)\n\t * @property {boolean} defaults.flvAvailable - FLV preview is available\n\t * @property {string} defaults.geoLocationLabel - Geo location label\n\t * @property {boolean} defaults.hasChildren - Deprecated\n\t * @property {number} defaults.hidden - Controls visibility of assets in search results if the asset is part of a group of related assets (this is a way to only show one asset from a group of related assets in search results)\n\t * @property {string} defaults.importDate - Import date (YYYY-MM-DD hh:mm:ss)\n\t * @property {string} defaults.importUserLabel - Name of user that imported this asset\n\t * @property {boolean} defaults.inCurrentCart - In current cart (selection)\n\t * @property {number} defaults.latitude - Latitude (gelocation)\n\t * @property {number} defaults.locationid - Storage location ID\n\t * @property {string} defaults.locationContext - Description of storage location\n\t * @property {number} defaults.longitude - Longitude (gelocation)\n\t * @property {string} defaults.moddate - Modification date (YYYY-MM-DD hh:mm:ss)\n\t * @property {number} defaults.moduserid - ID of last user to modify the asset\n\t * @property {string} defaults.moduserlabel - Name of last user to modify the asset\n\t * @property {string} defaults.name - Name\n\t * @property {string} defaults.path - Path and filename of the asset in the repository\n\t * @property {number} defaults.parentId - Deprecated\n\t * @property {array} defaults.permissionMatrix - Assets permission matrix -- see {module:permissions/properties/assetPermissions#matrixNames} for the 6 permission types\n\t * @property {number} defaults.previewHeight - Preview height (pixels)\n\t * @property {string} defaults.previewUrl - Relative URL of preview image\n\t * @property {number} defaults.previewWidth - Preview width (pixels)\n\t * @property {boolean} defaults.proofAvailable - Proofs available for the asset\n\t * @property {number} defaults.rating - Rating (range is 1 - 100)\n\t * @property {boolean} defaults.readOnly - Flag indicating whether the asset is read only\n\t * @property {boolean} defaults.relatedAvailable - Related assets are available\n\t * @property {number} defaults.repurposeAvailability - Repurpose availability flag\n\t * @property {boolean} defaults.reviewAvailable - Reviews available for the asset\n\t * @property {number} defaults.statDeliveries - Number of times asset has been downloaded (as defined in Statistics Module)\n\t * @property {number} defaults.statPreviews - Number of times asset has been viewed (as defined in Statistics Module)\n\t * @property {number} defaults.status - Indicates availability of asset file\n\t * @property {string} defaults.thumbUrl - Relative URL of thumbnail image\n\t * @property {number} defaults.timeScale - Frames per second\n\t * @property {array} defaults.versionIds - An array of version ids, for any/all versions of the asset\n\t * @property {array} defaults.viewIds - Array of ids for all of the views belonging to the asset\n\t * @property {array} defaults.viewNames - Array of names of all of the views belonging to the asset\n\t * @property {number} defaults.visible - Visibility flag (1 indicates visible). If set to 0, the asset will only be seen by admins, regardless of permissions\n\t * @property {boolean} defaults.zoomAvailable - Zoom image is available\n\t *\n\t * @property {boolean} defaults.activatingTemplate - Activating template (adBuilder)\n\t * @property {string} defaults.audioUrl - If asset is of type audio, this is the url to the audio (client only)\n\t * @property {boolean} defaults.deactivatingTemplate - Deactivating template (adBuilder)\n\t * @property {boolean} defaults.templatable\t\t\t\t\t\t - Indicates whether asset can be activated as a template\n\t * @property {boolean} defaults.template - adBuilder template\n\t * @property {boolean} defaults.templateCustomizable - adBuilder template customizable\n\t * @property {string} defaults.videoUrl - Video URL (client only)\n\t * @property {string} defaults.zoomUrl - Zoom image (not to be mistaken for zoom tiles) (client only)\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t// assetId: 0,\n\t\t\talphaChannel: '',\n\t\t\t// metadata is stored in these three parallel arrays\n\t\t\tattributeIds: [],\n\t\t\tattributeNames: [],\n\t\t\tattributeValues: [],\n\t\t\tbitDepth: 0,\n\t\t\tcategories: [],\n\t\t\tcategoryid: 0,\n\t\t\tcategoryPaths: [],\n\t\t\tcheckout: 0,\n\t\t\tcheckoutUserLabel: '',\n\t\t\tcolorProfile: '',\n\t\t\tconstituentIds: [],\n\t\t\tconstituentType: '',\n\t\t\tcreationdate: '',\n\t\t\tdescription: '',\n\t\t\tdpi: 0,\n\t\t\tduration: 0,\n\t\t\texpirationDate: 0,\n\t\t\tfile: '',\n\t\t\tfileFormatFamily: [],\n\t\t\tfileheight: 0,\n\t\t\tfileSize2: 0,\n\t\t\tfiletype: 0,\n\t\t\tfiletypelabel: '',\n\t\t\tfilewidth: 0,\n\t\t\tflvPreview: false,\n\t\t\tgeoLocationLabel: '',\n\t\t\timportDate: '',\n\t\t\timportUserLabel: '',\n\t\t\tinCurrentCart: false,\n\t\t\tlatitude: 0.0,\n\t\t\tlocationContext: '',\n\t\t\tlocationid: 0,\n\t\t\tlongitude: 0.0,\n\t\t\tmoddate: '',\n\t\t\tmoduserid: 0,\n\t\t\tmoduserlabel: '',\n\t\t\tname: '',\n\t\t\tpath: '',\n\t\t\tpermissionMatrix: [1, 1, 1, 1, 1, 1],\n\t\t\tpreviewHeight: 0,\n\t\t\tpreviewUrl: '',\n\t\t\tpreviewWidth: 0,\n\t\t\tproofAvailable: false,\n\t\t\trating: 0,\n\t\t\treadOnly: 0,\n\t\t\trelatedAvailable: false,\n\t\t\trepurposeAvailability: 0,\n\t\t\treviewAvailable: false,\n\t\t\tstatDeliveries: 0,\n\t\t\tstatPreviews: 0,\n\t\t\tstatus: 0,\n\t\t\ttemplatable: false,\n\t\t\ttemplateCustomizable: false,\n\t\t\tthumbUrl: '',\n\t\t\tversionIds: [],\n\t\t\tviewIds: [],\n\t\t\tviewNames: [],\n\t\t\tvisible: 1,\n\t\t\txmpPacketStatus: 300,\n\t\t\tzoomAvailable: false,\n\n\t\t\t// Deprecated fields -- do not use!\n\t\t\timageid: 0,\n\t\t\tmetadata: '',\n\t\t\tattribute1: '',\n\t\t\tattribute2: '',\n\t\t\tattribute3: '',\n\t\t\tattribute4: '',\n\t\t\tattribute5: '',\n\t\t\tattribute6: '',\n\t\t\tattribute7: '',\n\t\t\tattribute8: '',\n\t\t\tattribute9: '',\n\t\t\tattribute10: '',\n\t\t\tattribute11: '',\n\t\t\tattribute12: '',\n\t\t\tattribute13: '',\n\t\t\tattribute14: '',\n\t\t\tattribute15: '',\n\t\t\tattribute16: '',\n\t\t\thasChildren: false,\n\t\t\tparentId: 0,\n\n\t\t\t// Client attributes\n\t\t\tactivatingTemplate: false,\n\t\t\tdeactivatingTemplate: false,\n\t\t\taudioUrl: '',\n\t\t\tvideoUrl: '',\n\t\t\tzoomUrl: '',\n\t\t};\n\t}\n\t/**\n\t * @type {array}\n\t */\n\tget clientAttrs() {\n\t\treturn [\n\t\t\t'activatingTemplate',\n\t\t\t'audioUrl',\n\t\t\t'customThumbnailFile',\n\t\t\t'progress',\n\t\t\t'thumbnailUpdating',\n\t\t\t'videoUrl',\n\t\t\t'zoomUrl',\n\t\t];\n\t}\n\n\t/**\n\t * The following RPC methods cause the DAM to operate on the asset described in the model.\n\t * All manipulation takes place in the DAM; the browser does not directly manipulate image\n\t * data, files or the database.\n\t * @rpcs\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * fetch(): load the asset described by 'assetId' from the DAM\n\t\t\t * api method: getAssetBean\n\t\t\t * @method fetch\n\t\t\t */\n\t\t\tread: ['getAssetBean', 'assetId'],\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {Object} opts Backbone options object, passed to the internal persistence methods.\n\t\t\t */\n\t\t\tupdate(opts) {\n\t\t\t\treturn ['setAsset', this.self()];\n\t\t\t},\n\t\t\t/**\n\t\t\t * destroy(): delete this asset from the DAM.\n\t\t\t * api method: deleteAsset\n\t\t\t * @method destroy\n\t\t\t */\n\t\t\tremove: ['deleteAsset', 'assetId', 'deleteWait'],\n\t\t\t/**\n\t\t\t * This works for both expiring and unexpiring\n\t\t\t * Unexpireing just means setting 0 on expirationDate\n\t\t\t * @method\n\t\t\t */\n\t\t\texpireAsset: ['expireAsset', 'assetId', 'expirationDate'],\n\t\t\t/**\n\t\t\t * Import a previously uploaded asset to the DAM\n\t\t\t * @method\n\t\t\t */\n\t\t\timportAsset: [\n\t\t\t\t'importAsset2',\n\t\t\t\t'file',\n\t\t\t\t'categoryid',\n\t\t\t\t'locationid',\n\t\t\t\t'importAttributes',\n\t\t\t],\n\t\t\t/*\n\t\t\t * reserve: reserve an asset ID from the DAM for an asset to be imported.\n\t\t\t * api method: reserveAssetIds\n\t\t\t * NOTE: not tested. Use Netx.Collections.Assets.reserve() instead, to reserve N asset IDs at a time.\n\t\t\t * @private\n\t\t\t * @method\n\t\t\t */\n\t\t\treserve: ['reserveAssetIds', 1],\n\t\t\t/**\n\t\t\t * addCategory: add this asset to a DAM category.\n\t\t\t * api method: setAssetCategoryLink\n\t\t\t * @method\n\t\t\t * @todo We do not get back an error response, just a boolean\n\t\t\t */\n\t\t\taddCategory(opts) {\n\t\t\t\tconst d = new $.Deferred();\n\t\t\t\tthis.setAssetCategoryLink(_.extend({}, opts, {link: true})).then(\n\t\t\t\t\t(response) => {\n\t\t\t\t\t\tresponse\n\t\t\t\t\t\t\t? d.resolveWith(this, [response])\n\t\t\t\t\t\t\t: d.reject(new Error(i18n.t('assetAddToCategoryError')));\n\t\t\t\t\t},\n\t\t\t\t\td.reject,\n\t\t\t\t);\n\t\t\t\treturn d.promise();\n\t\t\t},\n\t\t\t/**\n\t\t\t * removeCategory: remove this asset from a DAM category.\n\t\t\t * api method: setAssetCategoryLink\n\t\t\t * @method\n\t\t\t * @todo We do not get back an error response, just a boolean\n\t\t\t */\n\t\t\tremoveCategory(opts) {\n\t\t\t\tconst d = new $.Deferred();\n\t\t\t\tthis.setAssetCategoryLink(_.extend({}, opts, {link: false})).then(\n\t\t\t\t\t(response) => {\n\t\t\t\t\t\tresponse\n\t\t\t\t\t\t\t? d.resolveWith(this, [response])\n\t\t\t\t\t\t\t: d.reject(new Error(i18n.t('assetRemoveFromCategoryError')));\n\t\t\t\t\t},\n\t\t\t\t\td.reject,\n\t\t\t\t);\n\t\t\t\treturn d.promise();\n\t\t\t},\n\t\t\t/**\n\t\t\t * setAssetCategoryLink: add/remove this asset to/from a DAM category.\n\t\t\t * api method: setAssetCategoryLink\n\t\t\t * @method\n\t\t\t * @todo determine & describe the default collision strategy here.\n\t\t\t * @todo explain what happens when you remove the last category from an asset\n\t\t\t * @todo We do not get back an error response, just a boolean\n\t\t\t */\n\t\t\tsetAssetCategoryLink(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'setAssetCategoryLink',\n\t\t\t\t\tthis.id,\n\t\t\t\t\tthis.linkCategory,\n\t\t\t\t\topts.link || false,\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * setCategory: place the asset in exactly one (specified) category, removing it from all others. (Alias of setCategories())\n\t\t\t * api method: setAssetCategories\n\t\t\t * @method\n\t\t\t */\n\t\t\tsetCategory(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'setAssetCategories',\n\t\t\t\t\tthis.id,\n\t\t\t\t\t[this.linkCategory],\n\t\t\t\t\t'collisionStrategy.rename',\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * setCategories: place the asset in exactly the specified list of categories, removing it from all others.\n\t\t\t * api method: setAssetCategories\n\t\t\t * @method\n\t\t\t */\n\t\t\tsetCategories: [\n\t\t\t\t'setAssetCategories',\n\t\t\t\t'assetId',\n\t\t\t\t'linkCategories',\n\t\t\t\t'collisionStrategy.rename',\n\t\t\t],\n\t\t\t/**\n\t\t\t * repurpose: run a preset repurposing algorithm on this asset. (When finished, use the Sharing architecture to get the result.)\n\t\t\t * api method: repurposeAssetsWithPresetProcess\n\t\t\t * @method\n\t\t\t */\n\t\t\trepurpose(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'repurposeAssetsWithPresetProcess',\n\t\t\t\t\t[this.id],\n\t\t\t\t\t'repurposeOtherIds',\n\t\t\t\t\t'repurposeId',\n\t\t\t\t\t'repurposeDownloadOverride',\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t */\n\t\t\tmanualRepurpose(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'repurposeAssets',\n\t\t\t\t\t[this.id],\n\t\t\t\t\tthis.repurposeOtherIds,\n\t\t\t\t\tthis.repurposeMethods,\n\t\t\t\t\tthis.repurposeValues,\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * resync: resync this asset in the DAM\n\t\t\t * DAM-5726\n\t\t\t * api method: batchResyncAssets\n\t\t\t * @method resync\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tresync(opts) {\n\t\t\t\t//rpc needs an *array* of ids (single in this case)\n\t\t\t\treturn ['batchResyncAssets', [this.id], 'all'];\n\t\t\t},\n\t\t\t/*\n\t\t\t * @deprecated\n\t\t\t * assetInCurrentCart: tests if this asset is in the current cart.\n\t\t\t * api method: assetsInCurrentCart\n\t\t\t * @method\n\t\t\t * @private\n\t\t\t *\n\t\t\t * @todo this method has no parser and appears unused, perhaps untested ... deprecate?\n\t\t\t * miniAssets have an inCurrentCart attribute from the DAM, which we use instead of this method.\n\t\t\t * We also flip it manually when adding items to the cart (or we should).\n\t\t\t * This method might actually have some purpose on a miniAsset, but it's here instead ... my bad, I'm sure ...\n\t\t\t */\n\t\t\tassetInCurrentCart(opts) {\n\t\t\t\treturn ['assetsInCurrentCart', [this.id]];\n\t\t\t},\n\t\t\t/**\n\t\t\t * getCarts: returns a set of savedCart objects representing the saved carts in the DAM which\n\t\t\t * contain this asset.\n\t\t\t * api method: getCartsForAsset\n\t\t\t * @deprecated\n\t\t\t * @method\n\t\t\t */\n\t\t\t_getCarts: ['getCartsForAsset', 'assetId'],\n\t\t\t/**\n\t\t\t * checkout: 'checks out' the asset, manipulating its state in various ways, and prepares a download of the asset file.\n\t\t\t * api method: checkoutAsset\n\t\t\t * @method\n\t\t\t */\n\t\t\tcheckout: ['checkoutAsset', 'assetId'],\n\t\t\t/**\n\t\t\t * cancelCheckout: checks-in without file\n\t\t\t * api method: checkinAsset\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tcancelCheckout(opts) {\n\t\t\t\treturn ['checkinAsset', this.id, this.get('file'), '', true];\n\t\t\t},\n\t\t\t/**\n\t\t\t * checkPendingTasks: track the DAM tasks that fire on asset import\n\t\t\t * @method\n\t\t\t */\n\t\t\tcheckPendingTasks: ['getImportPendingTasks', 'assetId'],\n\t\t\t/**\n\t\t\t * checkStatus: check the status of various import tasks.\n\t\t\t */\n\t\t\tcheckStatus: ['getMessage', 'messageType', 'assetId', 'objectContext'],\n\n\t\t\t/** @todo this method does nothing, because it has no parser. Remove? The constituents are normally fetched by Netx.asset.current.constituents ... */\n\t\t\tgetConstituents: ['getConstituentObjectsForAsset', 'assetId'],\n\t\t\t/**\n\t\t\t * Gets the process list (repurpose) for this asset\n\t\t\t */\n\t\t\tgetProcessListForUser: ['getProcessListForUser', 'assetId'],\n\t\t\t/**\n\t\t\t * recordViewed: tell the DAM statistics package that this asset was viewed once.\n\t\t\t * api method: recordAssetView\n\t\t\t * @method\n\t\t\t */\n\t\t\trecordViewed: ['recordAssetView', 'assetId'],\n\t\t\t/**\n\t\t\t * makeZoomTiles: tell the DAM to begin making the set of image tiles needed by the asset zoom view.\n\t\t\t * Once begun, progress on the tile generation is reported by getProgressReport().\n\t\t\t * api method: generateZoomifyTiles\n\t\t\t * @method\n\t\t\t */\n\t\t\tmakeZoomTiles: ['generateZoomifyTiles', 'assetId'],\n\n\t\t\t/**\n\t\t\t * adBuilder template methods:\n\t\t\t * ingest a 'template' asset (an .indd file with specific script labels configured)\n\t\t\t * to become the framework of an adBuilder template.\n\t\t\t * @method\n\t\t\t */\n\t\t\tactivateAdBuilderTemplate: ['activateAdBuilderTemplate', 'id'],\n\t\t\tdeactivateAdBuilderTemplate: ['deactivateAdBuilderTemplate', 'id'],\n\t\t};\n\t}\n\t/** @type {object} */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @deprecated\n\t\t\t * @param {boolean} response Response\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tassetInCurrentCart(response, opts) {\n\t\t\t\tif (this.inCurrentCart !== response[0]) {\n\t\t\t\t\tthis.inCurrentCart = response[0];\n\t\t\t\t\tthis.set('inCurrentCart', this.inCurrentCart, opts);\n\t\t\t\t\t!opts.silent && this.trigger('sync', this, opts);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {string} uuid UUID\n\t\t\t * @param {object} opts Request options\n\t\t\t * @todo We get back a UUID because technically we call checkinAsset and pass `true` to\n\t\t\t * checkin without a file. The checkin is immediate in this case and we should probably get\n\t\t\t * a call specifically for cancelling checkout so that we get back the updated bean instead\n\t\t\t * of tracking a UUID that is finished immediately.\n\t\t\t * Also, the fact we have to pass more than just our asset id to cancel a checkout is messy\n\t\t\t */\n\t\t\tcancelCheckout(uuid, opts) {\n\t\t\t\tif (!uuid) return false;\n\n\t\t\t\t// Custom events for resyncing\n\t\t\t\tthis.trigger('cancellingCheckOut', this);\n\n\t\t\t\t// Poll\n\t\t\t\tconst batchJob = this.trackBatchJob(uuid, undefined, 500);\n\n\t\t\t\t// When completed\n\t\t\t\tbatchJob.completed.then(() => {\n\t\t\t\t\tthis.trigger('cancelledCheckedOut', this);\n\t\t\t\t\tthis.fetch();\n\t\t\t\t});\n\n\t\t\t\treturn batchJob;\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {string} uuid Response (we need to get full beans back as we refactor things)\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tcheckout(uuid, opts) {\n\t\t\t\tif (!uuid) return false;\n\n\t\t\t\t// Custom events for resyncing\n\t\t\t\tthis.trigger('checkingOut', this);\n\n\t\t\t\t// Poll\n\t\t\t\tconst batchJob = this.trackBatchJob(uuid, undefined, 500);\n\n\t\t\t\t// When completed\n\t\t\t\tbatchJob.completed.then(() => {\n\t\t\t\t\tthis.trigger('checkedOut', this);\n\t\t\t\t\tthis.fetch();\n\t\t\t\t});\n\n\t\t\t\treturn batchJob;\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {number} assetId Asset id\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\timportAsset(assetId, opts) {\n\t\t\t\tif (!assetId) {\n\t\t\t\t\t// NOTE: there is an outstanding bug with this returning zero, which is never right.\n\t\t\t\t\tconsole.warn('importReservedAsset returned ' + assetId); // DEBUG;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.set({assetId: assetId});\n\t\t\t\t// Tell category system that we added an asset.\n\t\t\t\t// TODO: the category system could just as easily respond to an 'asset:imported' event, which would be more generic & meaningful.\n\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t'asset:category:added',\n\t\t\t\t\tthis.id,\n\t\t\t\t\tthis.get('categoryid'),\n\t\t\t\t\tthis,\n\t\t\t\t\t'import',\n\t\t\t\t);\n\n\t\t\t\treturn assetId;\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {boolean} response Response\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetAssetCategoryLink(response, opts) {\n\t\t\t\tif (response != true) return;\n\n\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t'asset:category:added',\n\t\t\t\t\tthis.id,\n\t\t\t\t\tthis.linkCategory,\n\t\t\t\t\tthis,\n\t\t\t\t\t'setLink',\n\t\t\t\t);\n\t\t\t\t// Track index tasks.\n\t\t\t\t// DAM-21440?: if just linking, no need to track (hopefully)\n\t\t\t\topts?.link == null && dispatcher.trigger('asset:tasks:track', this);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {boolean} response Response\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tremoveCategory(response, opts) {\n\t\t\t\tconst cat = this.linkCategory;\n\t\t\t\tdispatcher.trigger('asset:category:removed', this.id, cat, this);\n\t\t\t\tdispatcher.trigger('asset:tasks:track', this);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} cats Category IDs\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetCategories(cats, opts) {\n\t\t\t\t// server should have given us back the list of ids we gave it\n\t\t\t\tif (cats.join('') != this.linkCategories.join('')) {\n\t\t\t\t\tlogger.warn(\n\t\t\t\t\t\t'`setCategories` failed to set categories >',\n\t\t\t\t\t\tcats.join(', '),\n\t\t\t\t\t\tthis.linkCategories.join(', '),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} ids Asset IDs\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\treserve(ids, opts) {\n\t\t\t\tthis.set('assetId', ids[0]);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {string} uuid UUID\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tresync(uuid, opts) {\n\t\t\t\tif (!uuid) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Custom events for resyncing\n\t\t\t\tthis.trigger('resyncing', this);\n\n\t\t\t\t// Poll\n\t\t\t\tconst batchJob = this.trackBatchJob(uuid);\n\n\t\t\t\t// When completed\n\t\t\t\tbatchJob.completed.then(() => {\n\t\t\t\t\tthis.trigger('resynced', this);\n\t\t\t\t});\n\n\t\t\t\treturn batchJob;\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Internally, the Asset model uses another model, 'metadata', to store DAM metadata attributes.\n\t * (Backbone.Model uses the key 'attributes' in this object to store all other model data.)\n\t * We override the constructor to add that object when the model is created.\n\t * @override\n\t */\n\tconstructor(attr, opts = {}) {\n\t\tsuper(attr, opts);\n\n\t\t/**\n\t\t * Seperate from the asset model's attributes (which describe DAM data) are the following asset model properties\n\t\t * which inform the various RPC methods of this model.\n\t\t *\n\t\t * For remove():\n\t\t * deleteWait determines if deleteAsset() method will block until the DAM is done deleting.\n\t\t * @type {boolean}\n\t\t * @todo No we wont\n\t\t */\n\t\tthis.deleteWait = opts.deleteWait !== true;\n\n\t\t/**\n\t\t * importAttributes: an array of LabelValue objects to set as asset metadata attributes upon import\n\t\t * @type {Array}\n\t\t */\n\t\tthis.importAttributes = opts.importAttributes || [];\n\n\t\t/*\n\t\t * cache of our cart state; 'undefined' means we know nothing.\n\t\t *\n\t\t * @todo As of 7.6.0 assetBeans have inCurrentCart as a property\n\t\t * we need to deprecate all usage of the model property inCurrentCart\n\t\t * in favor of the model attribute inCurrentCart\n\t\t */\n\t\tthis.inCurrentCart = undefined;\n\n\t\t/**\n\t\t * For addCategory, removeCategory, setCategory:\n\t\t * linkCategory is the category ID these calls operate on.\n\t\t * @type {number}\n\t\t */\n\t\tthis.linkCategory = opts.linkCategory || 0;\n\n\t\t/**\n\t\t * for setAssetCategories:\n\t\t * linkCategories is a list of category Ids to set on the asset.\n\t\t * @type {array}\n\t\t */\n\t\tthis.linkCategories = opts.linkCategories || [];\n\t\t/*\n\t\t * collisionStrategy defines ways setAssetCategories can handle a filename collision.\n\t\t * Filenames must be unique within categories. A collision occurs when\n\t\t * we try to move an asset into a category where the asset's filename is already in use.\n\t\t * (Multiple uploads of the same asset are the most common example.) This integer argument to the\n\t\t * setCategoryAssets() API call specifies how to handle that. This object maps those\n\t\t * integers to meaningful labels, but we don't allow API users to change the default strategy,\n\t\t * which is collisionStrategy.rename .\n\t\t * @private\n\t\t */\n\t\tthis.collisionStrategy = _.extend(\n\t\t\t{\n\t\t\t\tfail: 0, // block the category change; leave the asset in its current category.\n\t\t\t\trename: 1, // rename the file we're recategorizing\n\t\t\t},\n\t\t\topts.collisionStrategy,\n\t\t);\n\n\t\t//\n\t\t// for getMessage, a nearly-but-not-quite-deprecated API call which we use to track reimports:\n\t\t// messageType: 4 = messages about asset reimport. Other values unknown.\n\t\t// objectContext: always null for us.\n\t\t// @private\n\t\t//\n\t\tthis.messageType = opts.messageType != null ? opts.messageType : 4;\n\t\t/** @type {string} */\n\t\tthis.objectContext = opts.objectContext || '';\n\n\t\t/**\n\t\t * for repurpose():\n\t\t * repurposeId is the ID of the preset repurposing process to apply with 'repurpose' method. (Netx.asset.processes contains the complete set of those processes, and is indexed by ID.)\n\t\t * @type {number}\n\t\t */\n\t\tthis.repurposeId = opts.repurposeId || 0;\n\n\t\t/**\n\t\t * repurposeOtherIds: meaning varies by process.\n\t\t * @type {array}\n\t\t */\n\t\tthis.repurposeOtherIds = opts.repurposeOtherIds || [];\n\t\tthis.repurposeMethods = opts.repurposeMethods || [];\n\t\tthis.repurposeValues = opts.repurposeValues || [];\n\n\t\t// according to FlexService.java, this field is 100% ignored.\n\t\tthis.repurposeDownloadOverride = opts.repurposeDownloadOverride || '';\n\n\t\t// Keep a model of the current version\n\t\tthis.version = new AssetVersionModel();\n\t\tthis.addSubModel(this.version);\n\n\t\tthis.setMediaUrls();\n\t\tthis.setChecksum();\n\n\t\t/**\n\t\t * @memberof module:asset/models/asset\n\t\t * @alias progress\n\t\t * @type {module:app/models/progress}\n\t\t */\n\t\tthis.progress = new ProgressModel();\n\t\tthis.addSubModel(this.progress);\n\n\t\t/**\n\t\t * @memberof module:asset/models/asset\n\t\t * @alias constituents\n\t\t * @type {module:asset/collections/assetConstituents}\n\t\t */\n\t\tthis.constituents = new AssetConstituentsCollection([]);\n\t\tthis.addSubCollection(this.constituents);\n\n\t\t// Hey, listen!\n\t\tthis\n\t\t\t// Make necessary updates when the id changes\n\t\t\t.listenTo(this, 'change:assetId', (model, assetId, options) => {\n\t\t\t\t// Update this.version when the asset changes id - sync doesn't work in most of our cases as the data is being\n\t\t\t\t// set by the cursor change in the controller with data from an asset collection\n\t\t\t\t// TODO: the asset mimics a sync now when we put it on the cursor - see if this is all still necessary\n\t\t\t\t// and if there may be a better place to put it\n\t\t\t\tthis.version.clear();\n\t\t\t\tif (this.id) {\n\t\t\t\t\tconst versions = this.get('versionIds');\n\t\t\t\t\tif (versions && versions.length > 1) {\n\t\t\t\t\t\tthis.version.set('versionId', versions[0]);\n\t\t\t\t\t\tthis.version.fetch();\n\t\t\t\t\t} else if (versions) {\n\t\t\t\t\t\t// Fake it 'til they make it\n\t\t\t\t\t\tthis.version.set({\n\t\t\t\t\t\t\tcreationDate: this.get('creationdate'),\n\t\t\t\t\t\t\tfileSize: this.get('fileSize2'),\n\t\t\t\t\t\t\tfileTypeId: this.get('filetype'),\n\t\t\t\t\t\t\tfileTypeLabel: this.get('filetypelabel'),\n\t\t\t\t\t\t\tassetId: this.get('imageid'),\n\t\t\t\t\t\t\tuserId: this.get('moduserid'),\n\t\t\t\t\t\t\tuserLabel: this.get('moduserlabel'),\n\t\t\t\t\t\t});\n\t\t\t\t\t\t// Mimic a sync\n\t\t\t\t\t\tthis.version.trigger('sync', this.version);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Custom thumbnail progress listeners\n\t\t\t\tconst oldAssetId = this._previousAttributes.assetId;\n\t\t\t\tthis.setupCustomThumbnailListeners(oldAssetId);\n\t\t\t\tthis.setupAssetTaskListeners(oldAssetId);\n\t\t\t\tthis.setMediaUrls();\n\t\t\t\tthis.setChecksum();\n\t\t\t})\n\t\t\t////////////////////////////\n\t\t\t// ADBUILDER\n\t\t\t////////////////////////////\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'adBuilder:activate:asset:error',\n\t\t\t\t(error, asset) => {\n\t\t\t\t\tasset &&\n\t\t\t\t\t\tasset.id === this.id &&\n\t\t\t\t\t\tthis.set({\n\t\t\t\t\t\t\tactivatingTemplate: false,\n\t\t\t\t\t\t\ttemplate: false,\n\t\t\t\t\t\t\ttemplateCustomizable: false,\n\t\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t)\n\t\t\t.listenTo(dispatcher, 'adBuilder:activate:asset:start', (asset) => {\n\t\t\t\tasset &&\n\t\t\t\t\tasset.id === this.id &&\n\t\t\t\t\tthis.set({\n\t\t\t\t\t\tactivatingTemplate: true,\n\t\t\t\t\t\tdeactivatingTemplate: false,\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t.listenTo(dispatcher, 'adBuilder:activate:asset:succeeded', (asset) => {\n\t\t\t\tasset &&\n\t\t\t\t\tasset.id === this.id &&\n\t\t\t\t\tthis.set({\n\t\t\t\t\t\tactivatingTemplate: false,\n\t\t\t\t\t\ttemplate: true,\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'adBuilder:deactivate:asset:error',\n\t\t\t\t(error, asset) => {\n\t\t\t\t\tasset &&\n\t\t\t\t\t\tasset.id === this.id &&\n\t\t\t\t\t\tthis.set({\n\t\t\t\t\t\t\tdeactivatingTemplate: false,\n\t\t\t\t\t\t\ttemplate: true,\n\t\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t)\n\t\t\t.listenTo(dispatcher, 'adBuilder:deactivate:asset:start', (asset) => {\n\t\t\t\tasset &&\n\t\t\t\t\tasset.id === this.id &&\n\t\t\t\t\tthis.set({\n\t\t\t\t\t\tactivatingTemplate: false,\n\t\t\t\t\t\tdeactivatingTemplate: true,\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t.listenTo(dispatcher, 'adBuilder:deactivate:asset:succeeded', (asset) => {\n\t\t\t\tasset &&\n\t\t\t\t\tasset.id === this.id &&\n\t\t\t\t\tthis.set({\n\t\t\t\t\t\tdeactivatingTemplate: false,\n\t\t\t\t\t\ttemplate: false,\n\t\t\t\t\t\ttemplateCustomizable: false,\n\t\t\t\t\t});\n\t\t\t})\n\t\t\t////////////////////////////\n\t\t\t// !ADBUILDER\n\t\t\t////////////////////////////\n\n\t\t\t////////////////////////////\n\t\t\t// ATTRIBUTES (METADATA)\n\t\t\t////////////////////////////\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:submit:save asset:info:edit:success asset:attributes:submit:success',\n\t\t\t\t(m) => {\n\t\t\t\t\tif (m.cid !== this.cid && m.id === this.id) {\n\t\t\t\t\t\tthis.set(m.attributes);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t)\n\t\t\t////////////////////////////\n\t\t\t// !ATTRIBUTES (METADATA)\n\t\t\t////////////////////////////\n\n\t\t\t////////////////////////////////\n\t\t\t// CART STATUS\n\t\t\t////////////////////////////////\n\t\t\t// Tracking whether we're in the current cart:\n\t\t\t// If we are added to the cart, we know we're in it\n\t\t\t.listenTo(dispatcher, 'cart:added', (ids) => {\n\t\t\t\tif (ids.indexOf(this.id) < 0) return;\n\n\t\t\t\tif (this.has('inCurrentCart')) {\n\t\t\t\t\tthis.set('inCurrentCart', true);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.inCurrentCart = true;\n\t\t\t\tthis.trigger('change');\n\t\t\t})\n\t\t\t// If we are removed, we know we're not in it\n\t\t\t.listenTo(dispatcher, 'cart:removed', (ids) => {\n\t\t\t\tif (ids.indexOf(this.id) < 0) return;\n\n\t\t\t\tif (this.has('inCurrentCart')) {\n\t\t\t\t\tthis.set('inCurrentCart', false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.inCurrentCart = false;\n\t\t\t\tthis.trigger('change');\n\t\t\t})\n\t\t\t// If the cart is cleared, we know we're not in it.\n\t\t\t.listenTo(dispatcher, 'cart:cleared', () => {\n\t\t\t\tif (this.has('inCurrentCart')) {\n\t\t\t\t\tthis.set('inCurrentCart', false);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.inCurrentCart = false;\n\t\t\t\tthis.trigger('change');\n\t\t\t})\n\t\t\t////////////////////////////////\n\t\t\t// !CART STATUS\n\t\t\t////////////////////////////////\n\n\t\t\t// When a checkout & checkin happens, update our status & checked-out-ness\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:checkout:success asset:checkout:cancel:success',\n\t\t\t\t(asset) => {\n\t\t\t\t\t// we are us!\n\t\t\t\t\t// we are not a duplicate model for the same DAM asset\n\t\t\t\t\tif (asset === this || asset.id !== this.id) return;\n\n\t\t\t\t\tthis.set({\n\t\t\t\t\t\tstatus: asset.get('status'),\n\t\t\t\t\t\tcheckout: asset.get('checkout'),\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t)\n\t\t\t// Batch jobs\n\t\t\t.listenTo(this, 'progress', (model, batchJob, progress) => {\n\t\t\t\tconst progressMessage = (batchJob && batchJob.get('details')) || '';\n\t\t\t\tthis.progress.update(progress, progressMessage);\n\t\t\t})\n\t\t\t.listenTo(this, 'complete', (model, batchJob) => {\n\t\t\t\tthis.progress.complete();\n\t\t\t})\n\t\t\t// When asset sybcs\n\t\t\t.listenTo(this, 'sync', (model) => {\n\t\t\t\tif (model !== this) return;\n\t\t\t\tthis.progress.reset();\n\t\t\t})\n\t\t\t// When a clip is created/updated\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:constituent:clip:edit:success',\n\t\t\t\t(asset, clip, isNew) => {\n\t\t\t\t\tif (asset.id !== this.id) return;\n\n\t\t\t\t\tthis.constituents.clips.add(clip);\n\t\t\t\t},\n\t\t\t);\n\n\t\t// Custom thumbnail progress listeners\n\t\tthis.setupCustomThumbnailListeners();\n\t\tthis.setupAssetTaskListeners();\n\t\tthis.setupAssetCheckinListeners();\n\t}\n\n\t/**\n\t * The parse() method converts the contents of the AssetBean's attributeNames & attributeValues arrays\n\t * into the internal metadata model.\n\t * @override\n\t * @param {object} resp Asset bean\n\t * @param {object} opts Request options\n\t * @return {object} the unmodified attributes. (The internal attribute* arrays will still be updated from this data.)\n\t */\n\tparse(resp, opts) {\n\t\t// Set media urls\n\t\treturn _.extend(_.omit(resp, 'validationData', 'id'), {\n\t\t\taudioUrl: this.hasAudio(resp) || '',\n\t\t\tvideoUrl: this.hasVideo(resp) || '',\n\t\t\tzoomUrl: this.hasZoom(resp) || '',\n\t\t});\n\t}\n\n\t/**\n\t * the self() method translates the metadata object back into arrays,\n\t * being careful to preserve the same order as the attributeNames array.\n\t * @override\n\t * @return {object}\n\t */\n\tself() {\n\t\treturn _.omit.apply(\n\t\t\t_,\n\t\t\t[\n\t\t\t\tthis.attributes,\n\t\t\t\t'attributeValues',\n\t\t\t\t'attributeNames',\n\t\t\t\t'attributeIds',\n\t\t\t].concat(this.clientAttrs),\n\t\t);\n\t}\n\n\t/** @method */\n\tvalidate(attrs) {\n\t\tif (!_.isNumber(attrs.assetId)) {\n\t\t\treturn 'Must pass a number';\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean} Can zoom\n\t */\n\tcanZoom() {\n\t\treturn canZoomAsset(this.attributes);\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} dateStr Date (yyyy-mm-dd)\n\t */\n\texpire(dateStr) {\n\t\ttry {\n\t\t\tconst expirationTime = userInputToExpirationTime(dateStr);\n\t\t\treturn this.set('expirationDate', expirationTime).expireAsset();\n\t\t} catch (ex) {\n\t\t\treturn new $.Deferred().reject(ex);\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Request options\n\t */\n\tfetchConstituents(opts) {\n\t\tvar constituents = this.constituents;\n\n\t\tif (constituents.assetId === this.id) {\n\t\t\treturn new $.Deferred().resolveWith(constituents);\n\t\t}\n\n\t\tconstituents.assetId = this.id;\n\t\treturn constituents.fetch(\n\t\t\t_.extend(\n\t\t\t\t{\n\t\t\t\t\tduplicateQueryPolicy: 'abort',\n\t\t\t\t\treset: true,\n\t\t\t\t},\n\t\t\t\topts,\n\t\t\t),\n\t\t);\n\t}\n\n\tgarbageCollect() {\n\t\tsuper.garbageCollect();\n\t\tdelete this.progress;\n\t\tdelete this.version;\n\t\tdelete this.constituents;\n\t}\n\n\t/**\n\t * getAttribute() and setAttribute() are the preferred interface to the DAM's internal representation of asset attributes.\n\t * @method\n\t * @param {number} templateId Template id\n\t * @param {string} name Template name\n\t * @param {object} opts Options\n\t * @return {mixed}\n\t */\n\tgetAttribute(templateId, name, opts = {}) {\n\t\tconst attrModel = getAttribute(templateId, name);\n\t\tlet value;\n\n\t\tif (attrModel) {\n\t\t\tvalue =\n\t\t\t\tattrModel.get('system') &&\n\t\t\t\tattrModel.id !== -119 && // Smart labels\n\t\t\t\tattrModel.id !== -120 // dimensions\n\t\t\t\t\t? this.getSystemAttribute(attrModel.id)\n\t\t\t\t\t: this.get('attributeValues')[\n\t\t\t\t\t\t\t_.indexOf(this.get('attributeIds'), attrModel.id)\n\t\t\t\t\t ];\n\n\t\t\tvalue = opts.format\n\t\t\t\t? attrModel.format(value, opts)\n\t\t\t\t: attrModel.parseInValue(value);\n\t\t}\n\n\t\treturn value != null ? value : '';\n\t}\n\n\t/**\n\t * Get attribute template id by name\n\t * @param {string} name Attribute name\n\t * @return {number}\n\t */\n\tgetAttributeId(name) {\n\t\treturn getAttributeId(name);\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} templateId Template id\n\t * @param {object} opts Options\n\t * @return {mixed}\n\t * @deprecated see `this.getAttribute`\n\t */\n\tgetAttributeValue(templateId, opts) {\n\t\treturn this.getAttribute(templateId, null, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} templateId Attribute template id\n\t * @return {mixed}\n\t */\n\tgetSystemAttribute(templateId, name) {\n\t\tconst attrModel = getAttribute(templateId, name);\n\t\tlet value;\n\t\tif (attrModel) {\n\t\t\tvar attrName = attrModel.get('name');\n\t\t\t// Normalize\n\t\t\tswitch (attrModel.get('name')) {\n\t\t\t\tcase 'creationDate':\n\t\t\t\t\tattrName = 'creationdate';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'expireDate':\n\t\t\t\t\tattrName = 'expirationDate';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'fileSize':\n\t\t\t\t\tattrName = 'fileSize2';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'fileType':\n\t\t\t\t\tattrName = 'filetypelabel';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'folderPath':\n\t\t\t\t\tattrName = 'categoryPaths';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'height':\n\t\t\t\t\tattrName = 'fileheight';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'modDate':\n\t\t\t\t\tattrName = 'moddate';\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'width':\n\t\t\t\t\tattrName = 'filewidth';\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvalue = this.get(attrName);\n\t\t\tif (_.isArray(value)) {\n\t\t\t\tvalue.join(', ');\n\t\t\t}\n\t\t}\n\n\t\treturn value != null ? value : '';\n\t}\n\n\t/**\n\t * @method\n\t * @return {string} Token string if it exists\n\t */\n\tgetTokenString() {\n\t\tconst token = session.getToken();\n\t\treturn token ? '?token=' + token : '';\n\t}\n\n\t/**\n\t * @method\n\t * @return {array} Waveform JSON\n\t */\n\tgetWaveformJSON() {\n\t\treturn $.getJSON(\n\t\t\t`/file/asset/${this.id}/view/previewWaveformJSON${this.getTokenString()}`,\n\t\t).then((json) => {\n\t\t\treturn json.data;\n\t\t});\n\t}\n\n\t/**\n\t * Does asset have audio, get the audio url\n\t * @method\n\t * @param {object} attrs Attributes to use (rather than `this.get`)\n\t * @return {boolean}\n\t */\n\thasAudio(attrs = {}) {\n\t\tconst id = attrs.assetId || this.id;\n\t\tif (\n\t\t\t_.indexOf(\n\t\t\t\tattrs.fileFormatFamily || this.get('fileFormatFamily'),\n\t\t\t\t'audio',\n\t\t\t) < 0\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet url = false;\n\t\tconst tokenStr = this.getTokenString();\n\t\t// Check in view names\n\t\tif (\n\t\t\t_.indexOf(attrs.viewNames || this.get('viewNames'), 'previewMp3') > -1\n\t\t) {\n\t\t\turl = [\n\t\t\t\t'/file/asset/',\n\t\t\t\tid,\n\t\t\t\t'/view/previewMp3/a_',\n\t\t\t\tid,\n\t\t\t\t'.mp3',\n\t\t\t\ttokenStr,\n\t\t\t].join('');\n\t\t}\n\t\t// Check in file type label\n\t\telse if ((attrs.filetypelabel || this.get('filetypelabel')) === 'mp3') {\n\t\t\turl = ['/file/asset/', id, '/original/a_', id, '.mp3', tokenStr].join('');\n\t\t}\n\n\t\treturn url;\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} format Format\n\t * @return {boolean} Has format family\n\t */\n\thasFormatFamily(format) {\n\t\treturn _.contains(this.get('fileFormatFamily'), format);\n\t}\n\n\t/**\n\t * Does asset have any multimedia (audio/video)\n\t * @method\n\t * @return {boolean|string} Audio url or false\n\t */\n\thasMultimedia() {\n\t\treturn this.hasAudio() || this.hasVideo();\n\t}\n\n\t/**\n\t * Does asset have video, get the video url\n\t * @method\n\t * @param {object} attrs Attributes to use (rather than `this.get`)\n\t * @return {boolean|string} Video url or false\n\t */\n\thasVideo(attrs = {}) {\n\t\tconst id = attrs.assetId || this.id;\n\t\tconst tokenStr = this.getTokenString();\n\n\t\tif (\n\t\t\t_.indexOf(\n\t\t\t\tattrs.fileFormatFamily || this.get('fileFormatFamily'),\n\t\t\t\t'video',\n\t\t\t) < 0\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tlet url = false;\n\t\tif (\n\t\t\t_.indexOf(attrs.viewNames || this.get('viewNames'), 'previewH264') !== -1\n\t\t) {\n\t\t\turl = [\n\t\t\t\t'/file/asset/',\n\t\t\t\tid,\n\t\t\t\t'/view/previewH264/v_',\n\t\t\t\tid,\n\t\t\t\t'.mp4',\n\t\t\t\ttokenStr,\n\t\t\t].join('');\n\t\t}\n\t\t// Check in file type label\n\t\telse if ((attrs.filetypelabel || this.get('filetypelabel')) === 'mp4') {\n\t\t\turl = ['/file/asset/', id, '/original/v_', id, '.mp4', tokenStr].join('');\n\t\t}\n\n\t\treturn url;\n\t}\n\n\t/**\n\t * Does asset have a zoom view (Longest side is 1000), get the zoom url\n\t * @method\n\t * @param {object} attrs Attributes to use (rather than `this.get`)\n\t * @return {boolean|string} Zoom url or false\n\t */\n\thasZoom(attrs = {}) {\n\t\tconst id = attrs.assetId || this.id;\n\t\tconst filetypelabel = attrs.filetypelabel || this.get('filetypelabel');\n\t\treturn `/file/asset/${id}/zoom/${id}.${filetypelabel}`;\n\t}\n\n\t/**\n\t * Only for use in updating attribute values locally (like after a change from elsewhere)\n\t * Once we get websockets this will be deprecated\n\t * @method\n\t * @param {number|string} templateId Attribute template id\n\t * @param {string} val Value of the attribute to set\n\t */\n\tsetAttribute(templateId, val, opts) {\n\t\tconst id = _.isString(templateId) ? null : templateId;\n\t\tconst name = _.isString(templateId) ? templateId : null;\n\t\tconst attrModel = getAttribute(id, name);\n\n\t\tif (!attrModel) return this;\n\n\t\tconst idx = _.indexOf(this.get('attributeIds'), attrModel.id);\n\n\t\tif (attrModel.isCSV || attrModel.isTrueMultivalue()) {\n\t\t\tval = _.arrayToCsv(val);\n\t\t}\n\n\t\tif (idx > -1) {\n\t\t\tconst attributeValues = _.clone(this.get('attributeValues'));\n\t\t\tattributeValues[idx] = val;\n\t\t\treturn this.set(\n\t\t\t\t{\n\t\t\t\t\tattributeValues: attributeValues,\n\t\t\t\t},\n\t\t\t\topts,\n\t\t\t);\n\t\t}\n\n\t\treturn this.set(\n\t\t\t{\n\t\t\t\tattributeIds: this.get('attributeIds').concat([attrModel.id]),\n\t\t\t\tattributeNames: this.get('attributeNames').concat([attrModel.name]),\n\t\t\t\tattributePermissions: this.get('attributePermissions').concat(['r']),\n\t\t\t\tattributeValues: this.get('attributeValues').concat([val]),\n\t\t\t},\n\t\t\topts,\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t */\n\tsetupAssetCheckinListeners() {\n\t\tthis.stopListening(dispatcher, `${AssetVersionEvent.UPLOAD}:progress`)\n\t\t\t.stopListening(dispatcher, `${AssetVersionEvent.UPLOAD}:complete`)\n\t\t\t.stopListening(dispatcher, `${AssetVersionEvent.UPLOAD}:error`)\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t`${AssetVersionEvent.UPLOAD}:progress`,\n\t\t\t\t(progress, assetId, batchJob) => {\n\t\t\t\t\tif (assetId !== this.id) return;\n\n\t\t\t\t\tthis.trigger('checkingIn', this);\n\t\t\t\t\tthis.progress.update(progress, batchJob.get('details'));\n\t\t\t\t},\n\t\t\t)\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t`${AssetVersionEvent.UPLOAD}:succeeded`,\n\t\t\t\t(assetId, batchJob) => {\n\t\t\t\t\tif (assetId !== this.id) return;\n\n\t\t\t\t\tthis.trigger('checkedIn', this);\n\t\t\t\t\tthis.progress.complete();\n\t\t\t\t\t// Delay slightly so the progress removal does not seem so abrupt\n\t\t\t\t\t_.delay(_.bind(this.fetch, this), 1000);\n\t\t\t\t},\n\t\t\t)\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t`${AssetVersionEvent.UPLOAD}:error`,\n\t\t\t\t(error, assetId) => {\n\t\t\t\t\tthis.trigger('checkedIn', this);\n\t\t\t\t\tthis.progress.complete();\n\t\t\t\t},\n\t\t\t)\n\t\t\t.stopListening(dispatcher, 'asset:versions:reactivate:progress')\n\t\t\t.stopListening(dispatcher, 'asset:versions:reactivate:succeeded')\n\t\t\t.stopListening(dispatcher, 'asset:versions:reactivate:error')\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:versions:reactivate:progress',\n\t\t\t\t(assetId, progress, progressMessage) => {\n\t\t\t\t\tif (assetId !== this.id) return;\n\t\t\t\t\tthis.progress.update(progress, progressMessage);\n\t\t\t\t},\n\t\t\t)\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:versions:reactivate:succeeded',\n\t\t\t\t(newVersion) => {\n\t\t\t\t\tif (newVersion.get('assetId') !== this.id) return;\n\t\t\t\t\tthis.progress.complete();\n\t\t\t\t},\n\t\t\t)\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:versions:reactivate:error',\n\t\t\t\t(error, newVersion) => {\n\t\t\t\t\tif (newVersion.get('assetId') !== this.id) return;\n\t\t\t\t\tthis.progress.complete();\n\t\t\t\t},\n\t\t\t);\n\t}\n\n\t/**\n\t * Setup asset task listeners (cleans up any old listeners as well)\n\t * @method\n\t * @param {number} oldAssetId Old asset id\n\t */\n\tsetupAssetTaskListeners(oldAssetId) {\n\t\tif (oldAssetId) {\n\t\t\t// asset:task:complete:<assetId>\n\t\t\tthis.stopListening(dispatcher, 'asset:task:complete:' + oldAssetId);\n\t\t\tthis.stopListening(dispatcher, 'asset:task:' + oldAssetId + ':status');\n\t\t}\n\n\t\tif (!this.id) return;\n\n\t\t// Task completion\n\t\tthis.listenTo(dispatcher, 'asset:task:complete:' + this.id, (task) => {\n\t\t\t// HACKETY-HACK-SMACK-HACK for EIGHT-549:\n\t\t\tconst tempIconPattern = /\\/icons\\/.*\\.png$/;\n\t\t\tlet previewNow = this.get('previewUrl');\n\n\t\t\t// If we currently have no previewUrl, or a temporary icon preview ...\n\t\t\tif (!previewNow || previewNow.match(tempIconPattern)) {\n\t\t\t\t// ... then poll until the DAM generates a proper preview, or we run out of patience.\n\t\t\t\tconst patienceExhausted = 4; // only try this many times.\n\t\t\t\tlet timesPolled = 0;\n\t\t\t\tthis.pollUntil(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tpreviewNow = this.get('previewUrl'); // possibly updated?\n\t\t\t\t\t\ttimesPolled++;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t(previewNow && !previewNow.match(tempIconPattern)) ||\n\t\t\t\t\t\t\ttimesPolled >= patienceExhausted\n\t\t\t\t\t\t);\n\t\t\t\t\t},\n\t\t\t\t\tundefined,\n\t\t\t\t\tundefined,\n\t\t\t\t\t2000,\n\t\t\t\t);\n\t\t\t}\n\t\t\tthis.progress.complete();\n\t\t\tthis.trigger('taskComplete', this, task);\n\t\t})\n\t\t\t// Task status\n\t\t\t.listenTo(dispatcher, 'asset:task:' + this.id + ':status', (task) => {\n\t\t\t\t// Shows our import tasks percentage as the second half of our total import progress;\n\t\t\t\t// therefore, we divide by 2 and add 50.\n\t\t\t\tconst realProgress = task.get('percentComplete') / 2 + 50;\n\t\t\t\tconst tasks = task.get('tasks') || [];\n\t\t\t\tthis.progress.update(\n\t\t\t\t\trealProgress,\n\t\t\t\t\timportTasks[tasks[0]] || i18n.t('i18n.processing'),\n\t\t\t\t);\n\t\t\t\tthis.trigger('taskStatus', this, task);\n\t\t\t});\n\t}\n\n\t/**\n\t * Cleans up old listeners (if any) and adds new listeners for all your custom thumbnail needs\n\t * @method\n\t * @param {number} oldAssetId Old asset id\n\t */\n\tsetupCustomThumbnailListeners(oldAssetId) {\n\t\t// NOTE: normalized the 'error' event as we have many a use for a good 'ol lower cased error event\n\t\t// Its return will not be the same as pluploads - it will return an error message and an assetId (if it can get itoff the details)\n\t\tlet eventPrefix;\n\t\t// Clean up any old listeners (really only an issue with Netx.asset.current)\n\t\tif (oldAssetId) {\n\t\t\teventPrefix = 'upload:asset:customThumbnail:' + oldAssetId;\n\t\t\t// asset:customThumbnail:upload:<assetId>:error\n\t\t\t// asset:customThumbnail:upload:<assetId>:FilesAdded\n\t\t\t// asset:customThumbnail:upload:<assetId>:UploadProgress\n\t\t\t// asset:customThumbnail:upload:<assetId>:polling\n\t\t\t// asset:customThumbnail:upload:<assetId>:success\n\t\t\tthis.stopListening(dispatcher, eventPrefix + ':error');\n\t\t\tthis.stopListening(dispatcher, eventPrefix + ':FilesAdded');\n\t\t\tthis.stopListening(dispatcher, eventPrefix + ':UploadProgress');\n\t\t\tthis.stopListening(dispatcher, eventPrefix + ':progress');\n\t\t\tthis.stopListening(dispatcher, eventPrefix + ':success');\n\t\t}\n\n\t\tif (!this.id) return;\n\n\t\t// Events for custom thumbnail\n\t\teventPrefix = 'upload:asset:customThumbnail:' + this.id;\n\n\t\tthis\n\t\t\t// Listen for error\n\t\t\t// asset:customThumbnail:upload:<assetId>:error\n\t\t\t.listenTo(dispatcher, eventPrefix + ':error', (error) => {\n\t\t\t\tthis.set({\n\t\t\t\t\tprogress: 0,\n\t\t\t\t\tupdating: false,\n\t\t\t\t});\n\t\t\t})\n\t\t\t// Listen for FilesAdded\n\t\t\t// This basically means that a new custom thumbnail is being uploaded\n\t\t\t// asset:customThumbnail:upload:<assetId>:FilesAdded\n\t\t\t.listenTo(dispatcher, eventPrefix + ':FilesAdded', (pluploader, file) => {\n\t\t\t\tthis.progress.update(0, i18n.t('i18n.addingCustomThumbnail'));\n\t\t\t})\n\t\t\t// Listen for polling\n\t\t\t// Thumbnail has been uploaded and the job is running on the server\n\t\t\t// Half the progress and add 50 (two part process and we are the second part)\n\t\t\t// asset:customThumbnail:upload:<assetId>:polling\n\t\t\t.listenTo(dispatcher, eventPrefix + ':progress', (batchJob, progress) => {\n\t\t\t\tthis.progress.update(\n\t\t\t\t\tparseInt(progress),\n\t\t\t\t\ti18n.t('i18n.settingCustomThumbnail'),\n\t\t\t\t);\n\t\t\t})\n\t\t\t// Listen for suceess\n\t\t\t// Thumbnail uploaded and job complete\n\t\t\t// asset:customThumbnail:upload:<assetId>:success\n\t\t\t.listenTo(dispatcher, eventPrefix + ':succeeded', (file) => {\n\t\t\t\tthis.progress.complete();\n\t\t\t\t// If we did not have a thumbUrl at all, just ignore as we are some sort of dummy asset model\n\t\t\t\tif (!this.get('thumbUrl')) return;\n\n\t\t\t\t// Delay slightly since this could have gone way too fast (avoid janky progress)\n\t\t\t\t_.delay(() => {\n\t\t\t\t\tthis.fetch().then(() => {\n\t\t\t\t\t\t// TODO: Need to discuss the DAM updating the moddate when a custom thumbnail is selected\n\t\t\t\t\t\tthis.trigger('thumbnailUpdated', file);\n\t\t\t\t\t});\n\t\t\t\t}, 1000);\n\t\t\t});\n\t}\n\n\t/**\n\t * Deduces the url required to access asset media (video, audio, zoom)\n\t * You know, so we are not repeating this logic all over the place in views etc\n\t * This makes the change silently as nothing abotu the asset has actually changed or needed to come from the server\n\t * These attributes are defined in clientAttrs and cleaned up when this.self is called\n\t * @method\n\t */\n\tsetMediaUrls(attrs) {\n\t\tif (!this.id) return;\n\n\t\t// Check and see if we are video, audio etc and set proper urls\n\t\tthis.set('audioUrl', this.hasAudio(attrs) || '');\n\t\tthis.set('videoUrl', this.hasVideo(attrs) || '');\n\t\tthis.set('zoomUrl', this.hasZoom(attrs) || '');\n\t}\n\n\t/**\n\t * Pretend this is a thing\n\t * @method\n\t */\n\tsetChecksum() {\n\t\tif (checksumEnabled()) {\n\t\t\tthis.set('checksum', this.get('attribute4'));\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t */\n\tunexpire() {\n\t\treturn this.set('expirationDate', 0).expireAsset();\n\t}\n\n\t/**\n\t * @deprecated\n\t * setCombo() and getCombo() interface with the DAM's internal representation of a choice list, aka a Pulldown,\n\t * as used for attributes of type 'select', 'multiselect' and 'tags'.\n\t *\n\t * setCombo: Encode a combo attribute as CSV before setting. A subsequent save() will write changes to the DAM.\n\t * @method\n\t * @param {String} name Name of the attribute to set choices for.\n\t * @param {Array} vals An array of strings: new values for the attribute. This can be empty, to clear the list.\n\t */\n\tsetCombo(name, vals) {\n\t\tthis.setAttribute(name, _.arrayToCsv(vals));\n\t}\n\n\t/**\n\t * @deprecated\n\t * Decode a combo attribute from CSV before getting\n\t * @method\n\t * @param {String} name Name of the attribute to get choices for.\n\t * @return {Array} a list of strings.\n\t */\n\tgetCombo(name) {\n\t\treturn _.csvToArray(this.getAttribute(null, name));\n\t}\n\n\t/**\n\t * moveCategory: Move an asset from one category to another, triggering events 'asset:category:removed', 'asset:category:added' and 'asset:category:moved'.\n\t * This method calls setAssetCategories(), so other categories may be removed in the process.\n\t * @param {number} from ID of category to leave (if not provided, will remove from all other categories)\n\t * @param {number} to ID of category to enter\n\t *\n\t * @todo this is too sloppy. We need these events in order to do proper UI feedback for recategorization.\n\t * Both 'from' and 'to' should be arrays ... but really 'from' should go away & we should look at asset.categories instead.\n\t * We should then trigger asset:category:removed for every one of those that's not in 'to' .\n\t */\n\tmoveCategory(from, to) {\n\t\tif (from == to) {\n\t\t\t// no-op!\n\t\t\treturn new $.Deferred().resolve();\n\t\t}\n\n\t\tif (from == null || isNaN(from)) from = this.get('categories');\n\t\tif (!Array.isArray(from)) from = [from];\n\t\tthis.linkCategories = _.without\n\t\t\t.apply(_, [this.get('categories')].concat(from))\n\t\t\t.concat([to]);\n\n\t\treturn this.setCategories().then(() => {\n\t\t\treturn this.fetch().then(() => {\n\t\t\t\t// Success\n\t\t\t\tfrom.forEach((catId) => {\n\t\t\t\t\tdispatcher.trigger('asset:category:removed', this.id, catId, this);\n\t\t\t\t\tdispatcher.trigger('asset:category:moved', this.id, catId, to, this);\n\t\t\t\t});\n\t\t\t\tdispatcher.trigger('asset:category:added', this.id, to, this);\n\n\t\t\t\t// DAM-21440: What tasks are there to track on a single asset move?\n\t\t\t\t// this _defer is a hack around a DAM bug ...\n\t\t\t\t// but which one?\n\t\t\t\t// _.defer(() => {\n\t\t\t\t// \tdispatcher.trigger('asset:tasks:track', this.id);\n\t\t\t\t// });\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean} Is document\n\t */\n\tisDocument() {\n\t\treturn (\n\t\t\t(this.get('constituentIds').length > 0 && this.isPDF()) ||\n\t\t\tthis.get('fileFormatFamily').includes('document')\n\t\t);\n\t}\n\t/**\n\t * Check if we are an image\n\t * @method\n\t * @return {boolean}\n\t */\n\tisImage() {\n\t\tconst fileFormatFamily = this.get('fileFormatFamily');\n\t\treturn (\n\t\t\tfileFormatFamily.includes('image') ||\n\t\t\tfileFormatFamily.includes('raw') ||\n\t\t\tfileFormatFamily.includes('cameraRaw')\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean} Is locked\n\t */\n\tisLocked() {\n\t\treturn this.get('readOnly') === 1;\n\t}\n\n\t/**\n\t * Check if we are a PDF\n\t * @method\n\t * @return {boolean}\n\t */\n\tisPDF() {\n\t\treturn (\n\t\t\t_.indexOf(this.get('viewNames'), 'previewPDF') !== -1 ||\n\t\t\tthis.get('filetypelabel') === 'pdf'\n\t\t);\n\t}\n\n\t/**\n\t * Lock an asset (previously set asset to \"read-only\")\n\t * @method\n\t */\n\tlock(opts) {\n\t\t// Why we need the bean returned on updates\n\t\t// Fetching to get the appropriate permission matrix\n\t\treturn this.save({readOnly: 1}, {wait: true, ...opts}).then(() => {\n\t\t\treturn this.fetch(opts);\n\t\t});\n\t}\n\n\t/**\n\t * Return an assetSet object defining the set that contains just this asset.\n\t * @method\n\t * @return {module:asset/models/assetSet} AssetSet model\n\t */\n\ttoAssetSet() {\n\t\treturn new AssetSetModel({\n\t\t\ttype: assetSetTypes.asset,\n\t\t\tids: [this.id],\n\t\t\tmodels: [this],\n\t\t\tlabel: this.get('name'),\n\t\t});\n\t}\n\n\t/**\n\t * Unlock an asset (previously unset asset from \"read-only\")\n\t * @method\n\t */\n\tunlock(opts) {\n\t\t// Why we need the bean returned on updates\n\t\t// Fetching to get the appropriate permission matrix\n\t\treturn this.save({readOnly: 0}, {wait: true, ...opts}).then(() => {\n\t\t\treturn this.fetch(opts);\n\t\t});\n\t}\n\n\t/**\n\t * return a cache-busting string for the asset preview; this string should change every time the asset preview changes.\n\t * @method\n\t * @return string\n\t */\n\tcacheBuster(prefix) {\n\t\t// If this model doesn't have moddate set, use the current time.\n\t\tconst timeStr = this.get('moddate')\n\t\t\t? _.dateFromAsset(this.get('moddate')).getTime()\n\t\t\t: new Date().getTime();\n\n\t\t// A new checkin will change the preview image without modifying the moddate.\n\t\t// Therefore, encode both versionIds and moddate in the buster-string\n\t\treturn (\n\t\t\t'?' +\n\t\t\t(prefix ? prefix + '&' : '') +\n\t\t\t't=' +\n\t\t\ttimeStr +\n\t\t\t'&v=' +\n\t\t\tthis.get('versionIds')\n\t\t);\n\t}\n\n\t/**\n\t * @deprecated\n\t * Force a local update of the asset's moddate property, so that this.cacheBuster() will return a new string,\n\t * and so that any change listeners for moddate will be jingled.\n\t * Moddate is a read-only property, so any future fetch will reset it to the DAM's value.\n\t * But this method is useful in situations where the client already knows a change has happened,\n\t * and doesn't want to re-fetch.\n\t *\n\t * @method\n\t * @param {Date} date A date object specifying the time to stamp (if undefined, we use the current moment)\n\t */\n\tbumpModdate(date) {\n\t\tdate = date || new Date();\n\t\tthis.set({moddate: _.dateToAsset(date)});\n\t}\n\n\t/**\n\t * Check our permissionMatrix for whether a particular named bit is set.\n\t * @param {string} perm One of the permissions in {module:permissions/properties/assetPermissions#matrixNames}\n\t * @returns {mixed} returns true or false, or undefined (which is falsy) if the argument is undefined.\n\t * @method\n\t */\n\t// DEVNOTE: module:asset/models/asset & Netx.Models.Category use the same method. Change it here, change it there.\n\t// Until we have a better include/export scheme we won't know whether asset or category module inits first,\n\t// so we can't define one of these in terms of the other.\n\t//\n\t//allows: module:asset/models/asset.prototype.allows\n\tallows(perm) {\n\t\tif (perm == null) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst matrixIndex = matrixNames.indexOf(perm);\n\n\t\tif (matrixIndex < 0) {\n\t\t\tthrow new Error(\"Unknown permission '\" + perm + \"'\");\n\t\t}\n\n\t\t// We need the DAM to return appropriate permissions for readOnly assets (even for admins)\n\t\tif (this.get('readOnly') === 1) {\n\t\t\tswitch (perm) {\n\t\t\t\tcase 'delete':\n\t\t\t\tcase 'modify':\n\t\t\t\tcase 'all':\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\t// The actual test of the actual value in the actual matrix (cast to bool):\n\t\treturn this.get('permissionMatrix')[matrixIndex] ? true : false;\n\t}\n\n\t/**\n\t * Methods for MediaRich zoom feature (if enabled):\n\t *\n\t * This non-standard API call is proxied from the DAM to a connected MediaRich server,\n\t * and tells the MR server to cache the asset from the DAM.\n\t *\n\t * @method\n\t * @returns {promise} resolves/rejects when complete.\n\t */\n\tcacheInMediaRich() {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst mediarichCacheUrl =\n\t\t\t\t// server target (proxied to MS server):\n\t\t\t\t'/mgen/NetX.ms?f=LoadAndCache&assetPath=' +\n\t\t\t\t// URL to original asset, with sessionKey added for authentication:\n\t\t\t\tencodeURIComponent(\n\t\t\t\t\tURL.asset +\n\t\t\t\t\t\t'/' +\n\t\t\t\t\t\tthis.id +\n\t\t\t\t\t\t'/original/' +\n\t\t\t\t\t\tthis.get('file') +\n\t\t\t\t\t\t'?sessionKey=' +\n\t\t\t\t\t\tsession.get('sessionKey'),\n\t\t\t\t) +\n\t\t\t\t// Session key again, because sessions are key:\n\t\t\t\t'&sessionKey=' +\n\t\t\t\tsession.get('sessionKey');\n\n\t\t\t$.ajax(mediarichCacheUrl).then((responseJSON, responseText, jqXHR) => {\n\t\t\t\t// response must be 200 (ok)\n\t\t\t\tif (jqXHR && jqXHR.status != 200) {\n\t\t\t\t\treturn reject(`Bad response from MediaRich server: ${responseText}`);\n\t\t\t\t} else if (\n\t\t\t\t\ttypeof responseJSON === 'string' &&\n\t\t\t\t\tresponseJSON.includes('not found on NetX')\n\t\t\t\t) {\n\t\t\t\t\treturn reject(responseJSON);\n\t\t\t\t}\n\t\t\t\tresolve(responseJSON);\n\t\t\t}, reject);\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Asset';\n\t}\n}\n","/**\n * Asset constituent model\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport AssetSetModel from './assetSet';\nimport {types as assetSetTypes} from '../properties/assetSets';\n\nexport default class AssetConstituent extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * The unique ID for this model is \"id\"\n\t * @type {string}\n\t */\n\tget idAttribute() {\n\t\treturn 'constituentId';\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {number} defaults.constituentId - Constituent id (Never set the id in defaults)\n\t * @property {number} defaults.display - Display constituent (boolean as number)\n\t * @property {number} defaults.assetId - Asset id (the asset I am a constituent of)\n\t * @property {string} defaults.lowresUrl - Low resolution image (unused?)\n\t * @property {string} defaults.modDate - Modification date string\n\t * @property {string} defaults.previewUrl - Preview image\n\t * @property {number} defaults.rebuildCount - ??? Rebuild count\n\t * @property {number} defaults.rebuildType - ??? Rebuild type\n\t * @property {number} defaults.ref - ???\n\t * @property {string} defaults.thumbUrl - Thumbnail image\n\t * @property {string} defaults.title - Title\n\t * @property {number} defaults.type - 1 = time (keyframe), 2 = layer, 3 = page, 4 = clips\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t// constituentId : 0,\n\t\t\tattributes: [],\n\t\t\tdisplay: 0,\n\t\t\tassetId: 0,\n\t\t\tlowresUrl: '',\n\t\t\tmodDate: '',\n\t\t\tpreviewUrl: '',\n\t\t\trebuildType: 0,\n\t\t\trebuildCount: 0,\n\t\t\tref: 1,\n\t\t\tthumbUrl: '',\n\t\t\ttitle: '',\n\t\t\ttype: 0,\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} methods - Model RPC methods\n\t * @property {function|array} methods.read - Fetch constituent\n\t * @property {function|array} methods.setDisplay - Tell the dam to use this constituent as the image thumbnail/preview\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tread: ['getConstituentObject', 'constituentId'],\n\t\t\tsetDisplay: ['setConstituentDisplay', 'constituentId'],\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Model parsers\n\t * @property {function} parsers.setDisplay - Parse the return of our fetch, it is an array with a single record\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {null} result Result (returns `null` - very helpful)\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetDisplay(result, opts) {\n\t\t\t\tthis.set({display: 1});\n\t\t\t\treturn result;\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * @memberof module:asset/models/assetConstituent\n\t\t * @alias clipAttributes\n\t\t * @type {module:asset/collections/attributes}\n\t\t */\n\t\tthis.clipAttributes = opts.clipAttributes;\n\t}\n\n\t/**\n\t * Check our permissionMatrix for whether a particular named bit is set.\n\t * Pipes through the asset we belong to\n\t * @method\n\t * @param {string} perm One of the permissions in {module:permissions/properties/assetPermissions#matrixNames}\n\t * @returns {mixed} returns true or false, or undefined (which is falsy) if the argument is undefined.\n\t */\n\tallows(perm) {\n\t\t// TODO: better way to handle the contituents having access to the asset bean they belong to\n\t\t// Maybe, rather than passing an assetId to constituents we passa full on bean - that way when it updates\n\t\t// we update and have proper permission matrix rather than relying that the constituent's asset will always\n\t\t// be Netx.currentAsset\n\t\treturn Netx.currentAsset.allows.apply(Netx.currentAsset, arguments);\n\t}\n\n\t/**\n\t * Return an assetSet object defining the set that contains just this constituent.\n\t * @method\n\t * @return {module:asset/models/assetSet} AssetSet model\n\t */\n\ttoAssetSet() {\n\t\treturn new AssetSetModel({\n\t\t\ttype: assetSetTypes.asset,\n\t\t\tids: [this.get('assetId')],\n\t\t\tmodels: [this],\n\t\t\tlabel: this.get('title'),\n\t\t\tcanCreateLink: false,\n\t\t\tcanEmail: false,\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetConstituent';\n\t}\n}\n","/**\n * @class\n */\nimport Base from './assetConstituent';\n\nimport ProgressModel from '@netx/core-app/models/progress';\n\nimport {pad} from '@netx/core/lib/underscore-netx';\n\nexport default class AssetConstituent_Clip extends Base {\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {string} defaults.endTime - Clip end time string\n\t * @property {string} defaults.startTime - Clip start time string\n\t * @property {string} defaults.title - Default title\n\t * @property {number} defaults.type - Default type (4 = clip)\n\t *\n\t * @property {boolean} defaults.keyframeReady - Default keyframe ready state (client)\n\t * @property {string} defaults.uuid - Default uuid for tracking creation/update progress\n\t */\n\tget defaults() {\n\t\treturn _.extend(super.defaults, {\n\t\t\tendTime: 0,\n\t\t\tstartTime: 0,\n\t\t\ttitle: '',\n\t\t\ttype: 4,\n\t\t\t// Client attrs\n\t\t\tkeyframeReady: true,\n\t\t\tuuid: '',\n\t\t});\n\t}\n\n\t/** @type {array} */\n\tget clientAttrs() {\n\t\treturn super.clientAttrs.concat(['keyframeReady', 'uuid']);\n\t}\n\n\t/**\n\t * Right now, the only constituents that can be created by the client are clips\n\t * @property {object} methods - Model RPC methods\n\t * @property {function|array} methods.create - Create clip\n\t * @property {function|array} methods.remove - Delete clip\n\t * @property {function|array} methods.updated - Update clip\n\t */\n\tget methods() {\n\t\treturn _.extend(super.methods, {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tcreate(opts) {\n\t\t\t\treturn ['setClip', this.self()];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tremove(opts) {\n\t\t\t\treturn ['deleteClip', this.id];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tupdate(opts) {\n\t\t\t\treturn ['setClip', this.self()];\n\t\t\t},\n\t\t\t_prepareDownload: [\n\t\t\t\t'prepareDownload',\n\t\t\t\t'downloadOptions.assets',\n\t\t\t\t'downloadOptions.processes',\n\t\t\t\t'downloadOptions.arg1',\n\t\t\t\t'downloadOptions.arg2',\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * @property {object} parsers - Model parsers\n\t * @property {function} parsers.create - Parse the return of create clip\n\t * @property {function} parsers.create - Parse the return of update clip\n\t */\n\tget parsers() {\n\t\treturn _.extend(super.parsers, {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} data Clip data (constituent and keyframe uuid)\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tcreate(data, opts) {\n\t\t\t\treturn _.extend(data.constituent, {\n\t\t\t\t\tkeyframeReady: false,\n\t\t\t\t\tuuid: data.progressUuid,\n\t\t\t\t});\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} data Clip data (constituent and [possibly] keyframe uuid)\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tupdate(data) {\n\t\t\t\tlet _data = {};\n\t\t\t\tif (data.progressUuid) {\n\t\t\t\t\t_data = {\n\t\t\t\t\t\tkeyframeReady: false,\n\t\t\t\t\t\tuuid: data.progressUuid,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn _.extend(data.constituent, _data);\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attr Model attributes\n\t * @param {object} opts Model options\n\t * @fires module:app#app:pollBatchJob\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * @memberOf module:asset/models/assetConstituent_clip\n\t\t * @alias downloadOptions\n\t\t * @type {object}\n\t\t */\n\t\tthis.downloadOptions = opts.downloadOptions || {};\n\n\t\t/**\n\t\t * @memberof module:asset/models/assetConstituent_clip\n\t\t * @alias progress\n\t\t * @type {module:app/models/progress}\n\t\t */\n\t\tthis.progress = new ProgressModel();\n\n\t\t// Hey, listen!\n\t\t// When a clip is beign created/updated on the server - track the progress\n\t\tthis.listenTo(this, 'change:uuid', () => {\n\t\t\tthis.trackBatchJob(this.get('uuid'));\n\t\t})\n\t\t\t.listenTo(this, 'progress', (model, batchJob, progress) => {\n\t\t\t\tconst progressMessage = (batchJob && batchJob.get('details')) || '';\n\t\t\t\tthis.progress.update(progress, progressMessage);\n\t\t\t})\n\t\t\t.listenTo(this, 'complete', (model, batchJob) => {\n\t\t\t\tthis.fetch().then(() => {\n\t\t\t\t\tthis.set({\n\t\t\t\t\t\tkeyframeReady: true,\n\t\t\t\t\t});\n\t\t\t\t\tthis.progress.complete();\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t/**\n\t * return a cache-busting string for the asset preview; this string should change every time the asset preview changes.\n\t * @method\n\t * @return string\n\t */\n\tcacheBuster(prefix) {\n\t\t// If this model doesn't have moddate set, use the current time.\n\t\tconst timeStr = this.get('moddate')\n\t\t\t? _.dateFromAsset(this.get('moddate')).getTime()\n\t\t\t: _.now();\n\n\t\treturn '?' + (prefix ? prefix + '&' : '') + 't=' + timeStr;\n\t}\n\t/**\n\t * @method\n\t * @return {object} Duration\n\t */\n\tgetDuration() {\n\t\tconst start = parseFloat(this.get('startTime'));\n\t\tconst end = parseFloat(this.get('endTime'));\n\t\tconst floor = Math.floor;\n\t\tconst duration = end - start;\n\n\t\tlet hour, minute, second, millisecond, time;\n\n\t\ttime = duration;\n\t\thour = floor(time / 3600);\n\t\ttime -= hour * 3600;\n\t\tminute = floor(time / 60);\n\t\ttime -= floor(minute * 60);\n\t\tsecond = floor(time);\n\t\tmillisecond = Math.round((time - second) * 1000);\n\n\t\treturn {\n\t\t\tseconds: duration,\n\t\t\tpretty: [\n\t\t\t\tpad(hour, 2),\n\t\t\t\t':',\n\t\t\t\tpad(minute, 2),\n\t\t\t\t':',\n\t\t\t\tpad(second, 2),\n\t\t\t\t'.',\n\t\t\t\tpad(millisecond, 3),\n\t\t\t].join(''),\n\t\t};\n\t}\n\t/**\n\t * Get the manual repurpose options for clip downloading\n\t * @method\n\t * @param {module:asset/models/assetProcess} process (Video) preset process data\n\t * @returns {array} Manual repurpose options\n\t */\n\tgetManualRepurposeOptions(process) {\n\t\treturn [\n\t\t\t{\n\t\t\t\tlabel: 'trim',\n\t\t\t\tvalue: [this.get('startTime'), this.get('endTime')].join('-'),\n\t\t\t},\n\t\t\t{label: 'codec', value: process.get('videoCodec')},\n\t\t\t{label: 'videoBitrate', value: process.get('videoBitrate')},\n\t\t\t{label: 'audioBitrate', value: process.get('audioBitrate')},\n\t\t\t{label: 'audioChannels', value: process.get('audioChannels')},\n\t\t\t{\n\t\t\t\tlabel: 'resize',\n\t\t\t\tvalue: [process.get('width'), process.get('height')].join(),\n\t\t\t},\n\t\t\t{label: 'format', value: process.get('format')},\n\t\t];\n\t}\n\t/**\n\t * @method\n\t * @return {object} Pretty range\n\t */\n\tgetPrettyRange() {\n\t\tconst floor = Math.floor;\n\t\tconst round = Math.round;\n\t\tconst prettyRange = {};\n\n\t\t// Loops over start, end, duration\n\t\t_.each(['startTime', 'endTime'], (r) => {\n\t\t\tlet hour, minute, second, millisecond, time;\n\n\t\t\ttime = parseFloat(this.get(r)) || 0;\n\t\t\thour = floor(time / 3600);\n\t\t\ttime -= hour * 3600;\n\t\t\tminute = floor(time / 60);\n\t\t\ttime -= floor(minute * 60);\n\t\t\tsecond = floor(time);\n\t\t\tmillisecond = round((time - second) * 1000);\n\n\t\t\tprettyRange[r] = [\n\t\t\t\tpad(hour, 2),\n\t\t\t\t':',\n\t\t\t\tpad(minute, 2),\n\t\t\t\t':',\n\t\t\t\tpad(second, 2),\n\t\t\t\t'.',\n\t\t\t\tpad(millisecond, 3),\n\t\t\t].join('');\n\t\t});\n\n\t\treturn prettyRange;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetConstituent_Clip';\n\t}\n}\n","/**\n * This object allows us to specify assets in one of the four Asset Set types\n * we know how to download: a cart, a search, a category or some bare assets.\n * (Other types may be added in the future.)\n * @class\n * @extends Netx.Model\n * @todo Finish documentation of defaults, methods and parsers\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport DownloadOptionsCollection from '@netx/core-share/collections/downloadOptions';\nimport ShareableModel from '@netx/core-share/models/shareable';\n\nimport Rpc from 'core-libs/backbone.rpc';\n\nimport {i18n} from '@netx/core/i18n';\n\nimport {types as assetSetTypes} from '../properties/assetSets';\nimport {types as downloadOptionTypes} from '@netx/core-share/properties/downloadOptions';\nimport {allSavedSearches} from '@netx/core-search/collections/singleton/savedSearch';\n\nexport default class AssetSet extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {array} defaults.ids - The default ids\n\t * @property {boolean} defaults.recursive - The default recursiveness. For completeness, the `category` type needs this extra info. Other types ignore this property.\n\t * @property {string} defaults.type - The default type. See assetSetProps.types\n\t *\n\t * @property {array} defaults.assetIds - The default asset ids belonging to set (client side)\n\t * @property {string} defaults.label - The default label. It's useful to set a label for the set when it's created, since it feeds into a generic system (client side)\n\t * @property {array} defaults.models - The default models. Handy to attach the original models/collections, if we had them (client side)\n\t * @property {boolean} defaults.canCreateLink - The default description (client side)\n\t * @property {boolean} defaults.canEmail - The default description (client side)\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tids: [],\n\t\t\trecursive: false,\n\t\t\ttype: '',\n\n\t\t\t// Client\n\t\t\tassetCount: 0,\n\t\t\tassetIds: [],\n\t\t\tcanCreateLink: null,\n\t\t\tcanEmail: null,\n\t\t\tlabel: '',\n\t\t\tmodels: [],\n\t\t};\n\t}\n\n\t/** @type {array} */\n\tget clientAttrs() {\n\t\treturn [\n\t\t\t'assetIds',\n\t\t\t'assetCount',\n\t\t\t'label',\n\t\t\t'models',\n\t\t\t'canCreateLink',\n\t\t\t'canEmail',\n\t\t];\n\t}\n\n\t/**\n\t * @property {object} methods - Model RPC methods\n\t * @property {method} methods.getAssetIdsInSets - Get all asset ids in asset set\n\t * @property {method} methods.getDownloadWarnings - Get any download warnings for asset set\n\t * @property {method} methods.getDownloadOptions - Get any download options for asset set\n\t * @property {method} methods.prepareDownload - Prepare asset set download\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetAssetIdsInSets(opts) {\n\t\t\t\treturn ['getAssetIdsInSets', [this.self()]];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetDownloadWarnings(opts) {\n\t\t\t\treturn ['getDownloadWarnings', [this.self()]];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetDownloadOptions(opts) {\n\t\t\t\treturn ['getDownloadOptions', [this.self()]];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Request the DAM prepare a set of assets (asset lists, categories, saved searches, carts) in any of several formats (as originals, proxies, views or preset processes).\n\t\t\t * If download is authorized, this returns a progress UUID for tracking the progress of this request.\n\t\t\t * If download is prohibited due to a missing justification, this throws an exception that becomes a JSON-RPC error object.\n\t\t\t * If download is prohibited due to approval, this triggers the server-side asset approval processes for the requested assets\n\t\t\t * (sending email, creating categories, etc -- all the things that requestDownloadApproval does),\n\t\t\t * then throws an exception that becomes a JSON-RPC error object.\n\t\t\t * @function\n\t\t\t * @param {*} assets -- an AssetSets collection, a single AssetSet model, or raw object/array data to instantiate one of those\n\t\t\t * @param {*} options -- a DownloadOptions collection, a single DownloadOption model, or raw object/array data to instantiate one of those\n\t\t\t * @param {String} archiveName -- String of archive name to create\n\t\t\t * @param {String} justification -- Download justification data. Can be null or empty if no justification is needed.\n\t\t\t * @param {Object} syncOptions -- any options for Backbone.Sync\n\t\t\t * @throws JustificationRequired -- if a justification data is required for this download, and none was provided\n\t\t\t * @throws ApprovalRequired -- if approval is required for this download.\n\t\t\t * @return {String} It returns a promise that resolves to a Progress UUID (as String)\n\t\t\t * @todo: the API call works with an array of assetSets. The AssetSets collection should have this method, and then the model\n\t\t\t * method can use the collection version (since we're creating a collection anyway (for some reason).)\n\t\t\t */\n\t\t\tprepareDownload(downloadOptions, archiveName, justification, opts) {\n\t\t\t\tconst assetSets = [this.self()];\n\t\t\t\tdownloadOptions = _.toCollection(\n\t\t\t\t\tdownloadOptions,\n\t\t\t\t\tDownloadOptionsCollection,\n\t\t\t\t);\n\t\t\t\tjustification = justification || '';\n\n\t\t\t\treturn [\n\t\t\t\t\t'prepareDownload',\n\t\t\t\t\tassetSets,\n\t\t\t\t\tdownloadOptions,\n\t\t\t\t\tarchiveName,\n\t\t\t\t\tjustification,\n\t\t\t\t];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Model parsers\n\t * @property {function} parsers.getAssetIdsInSets - Parse the return of asset ids\n\t * @property {function} parsers.getDownloadOptions - Parse the return of download options\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @functon\n\t\t\t * @param {array} results Asset ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetAssetIdsInSets(results, opts) {\n\t\t\t\tif (!_.isArray(results)) {\n\t\t\t\t\tthrow new Rpc.ParseError('getAssetIdsInSets() returned non-array');\n\t\t\t\t}\n\t\t\t\tthis.set({assetIds: results});\n\t\t\t},\n\t\t\t/**\n\t\t\t * Filters the download options to only include the ones in displayedDownloadOptionTypes and turns the results into a collection\n\t\t\t * @function\n\t\t\t * @param {array} downloadOptions array of download options\n\t\t\t * @param {object} opts Request options\n\t\t\t * @return {Netx.Collections.DownloadOptions} Download options collection\n\t\t\t */\n\t\t\tgetDownloadOptions(downloadOptions, opts) {\n\t\t\t\t// this should never be a null array.\n\t\t\t\tif (downloadOptions == null || !downloadOptions.length) {\n\t\t\t\t\tthrow new Rpc.ParseError('bad response from getDownloadOptions');\n\t\t\t\t}\n\t\t\t\t// Filter returned download options by the array of options types we want to show the user\n\t\t\t\t// TODO: Currently \"manualRepurpose\" is not in this list - though we may not want to show it, it still counts as a downloadOption\n\t\t\t\t// I am forcing it into `displayedDownloadOptionTypes` when the `assetSet` is created for the image being repurposed\n\t\t\t\t// I think that `displayedDownloadOptionTypes` should be taken into consideration in the controller or view and not be causing\n\t\t\t\t// data to not get back from the server that is needed. The model should not be concerned with what is displayed in the UI\n\t\t\t\t// Maybe it is the wrong name for the property - maybe it should be `supportedDownloadOptionTypes`?\n\t\t\t\tdownloadOptions = _.filter(downloadOptions, (downloadOption) =>\n\t\t\t\t\t_.contains(this.displayedDownloadOptionTypes, downloadOption.type),\n\t\t\t\t);\n\t\t\t\t// Turn into a proper collection\n\t\t\t\tthis.downloadOptions.set(downloadOptions);\n\t\t\t\treturn this.downloadOptions;\n\t\t\t},\n\t\t\t/**\n\t\t\t * Check that we have any assets left to download/create a link with\n\t\t\t * @function\n\t\t\t * @param {object} warnings Warnings\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetDownloadWarnings(warnings, opts) {\n\t\t\t\tif (!warnings.messageCount) return warnings;\n\n\t\t\t\tconst assetsUnavailableCount = _.unique(\n\t\t\t\t\t_.map(warnings.progressMessages, (message) => message.objectId),\n\t\t\t\t).length;\n\n\t\t\t\t// TODO: we need to be passing the thing that made the assetSet\n\t\t\t\t// as a target arguments\n\t\t\t\t// Then we can pass some logic off to the collection/model that\n\t\t\t\t// the asset set spawned from\n\t\t\t\tif (assetsUnavailableCount) {\n\t\t\t\t\tlet abort = false;\n\t\t\t\t\tconst assetCount = this.get('assetCount') || 0;\n\t\t\t\t\tconst ids = this.get('ids') || [];\n\t\t\t\t\tconst type = this.get('type');\n\t\t\t\t\tconst types = assetSetTypes;\n\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase types.cart: {\n\t\t\t\t\t\t\tabort =\n\t\t\t\t\t\t\t\tNetx.getCurrentCart().getTotal() <= assetsUnavailableCount;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase types.category:\n\t\t\t\t\t\t\tabort = assetCount <= assetsUnavailableCount;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase types.savedCart: {\n\t\t\t\t\t\t\tconst cart = Netx.cart.saved.all.get(ids[0]);\n\t\t\t\t\t\t\tabort =\n\t\t\t\t\t\t\t\tcart && cart.get('contentCount') <= assetsUnavailableCount;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase types.savedSearch: {\n\t\t\t\t\t\t\tconst search = allSavedSearches.get(ids[0]);\n\t\t\t\t\t\t\tabort =\n\t\t\t\t\t\t\t\tsearch && search.get('contentCount') <= assetsUnavailableCount;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tabort = ids.length <= assetsUnavailableCount;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (abort) {\n\t\t\t\t\t\twarnings.abort = new Error(\n\t\t\t\t\t\t\ti18n.t('i18n.noAssetsAvailableForDownload'),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn warnings;\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * Contains the downloadOptions returned by getDownloadOptions\n\t\t * @memberOf module:asset/models/assetSet\n\t\t * @alias downloadOptions\n\t\t * @type {Netx.Collections.DownloadOptions}\n\t\t */\n\t\tthis.downloadOptions =\n\t\t\topts.downloadOptions || new DownloadOptionsCollection([]);\n\t\t/**\n\t\t * All of the download option types to filter by after getting download options. Set to all by default(but will only show what the user has permission for).\n\t\t * @memberOf module:asset/models/assetSet\n\t\t * @type {Array}\n\t\t */\n\t\tthis.displayedDownloadOptionTypes =\n\t\t\topts.displayedDownloadOptionTypes || _.values(downloadOptionTypes);\n\t}\n\t/**\n\t * @override\n\t * @return {object}\n\t */\n\tself() {\n\t\tconst attrs = super.self();\n\n\t\t// getDownloadOptions does not work with type assetSet however it does work with asset and will accept multiple ids.\n\t\tif (attrs.type === 'assetSet') {\n\t\t\tattrs.type = 'asset';\n\t\t}\n\t\treturn attrs;\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} type Option type\n\t * @return {boolean} Has option\n\t */\n\thasOption(type) {\n\t\treturn !!this.downloadOptions.findWhere({type: type});\n\t}\n\n\t/**\n\t * For backwards compatibility with the shareways system, this method returns a new Shareable model\n\t * based on the content of this assetSet model.\n\t * @method\n\t * @returns {Netx.Models.Shareable}\n\t */\n\ttoShareable() {\n\t\tlet sType;\n\t\tswitch (this.get('type')) {\n\t\t\tcase 'cart':\n\t\t\t\tsType = 'current cart';\n\t\t\t\tbreak;\n\t\t\tcase 'savedCart':\n\t\t\t\tsType = 'saved cart';\n\t\t\t\tbreak;\n\t\t\tcase 'savedSearch':\n\t\t\t\tsType = 'saved search';\n\t\t\t\tbreak;\n\t\t\tcase 'asset':\n\t\t\t\tsType = 'assets';\n\t\t\t\tbreak;\n\t\t\tcase 'category':\n\t\t\t\t// No shareable for catagory!\n\t\t\t\treturn undefined;\n\t\t}\n\n\t\treturn new ShareableModel({\n\t\t\tids: this.get('ids'),\n\t\t\tmodel: this.get('models')[0],\n\t\t\tmodels: this.get('models'),\n\t\t\tlabel: this.get('label'),\n\t\t\ttype: sType,\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetSet';\n\t}\n}\n","/**\n * AssetVersion Model\n * @class\n * @todo Should you be allowed to remove a top version?\n */\nimport Base from '@netx/core/lib/netx-model';\n\nexport default class AssetVersion extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'versionId';\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {number} defaults.versionId - The default id (do not set this in defaults)\n\t * @property {number} defaults.active - The default active status (number as boolean)\n\t * @property {number} defaults.assetId - The default asset id version belongs to\n\t * @property {string} defaults.creationDate - The default creation date (as string)\n\t * @property {number} defaults.fileSize - The default file size\n\t * @property {number} defaults.fileTypeId - The default file type id\n\t * @property {string} defaults.fileTypeLabel - The default file type label\n\t * @property {number} defaults.memoId - The default memoId (unused as far as I can tell - always comes back 0)\n\t * @property {string} defaults.memoText - The default memo text\n\t * @property {number} defaults.original - The default original status (number as boolean)\n\t * @property {string} defaults.previewUrl - The default preview url\n\t * @property {string} defaults.shortMemoText - The default short memo text (truncated memo text)\n\t * @property {string} defaults.thumbUrl - The default thumbnail url\n\t * @property {number} defaults.userId - The default user id\n\t * @property {string} defaults.userLabel - The default user label\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t// versionId: 0\n\t\t\tactive: 0,\n\t\t\tassetId: 0,\n\t\t\tcreationDate: '',\n\t\t\tfileSize: 0,\n\t\t\tfileTypeId: 0,\n\t\t\tfileTypeLabel: '',\n\t\t\tmemoId: 0,\n\t\t\tmemoText: '',\n\t\t\toriginal: 0,\n\t\t\tpreviewUrl: '',\n\t\t\tshortMemoText: '',\n\t\t\tthumbUrl: '',\n\t\t\tuserId: 0,\n\t\t\tuserLabel: '',\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} methods - Model RPC methods\n\t * @property {array} methods.read - Fetch version\n\t * @property {array} methods.remove - Destroy version\n\t * @property {array} methods.reactivateAssetVersion - Reactivate version\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\treturn ['getVersionObjects', [this.get('versionId')]];\n\t\t\t},\n\t\t\t/** @method */\n\t\t\tremove: ['deleteAssetVersion', 'versionId'],\n\t\t\t// Reactivate version\n\t\t\t// Deprecated - use new uuid call `reactivateAssetVersion`\n\t\t\t// reactivateVersion: ['reactivateVersion', 'versionId', 'memoText'],\n\t\t\t/** @method */\n\t\t\treactivateAssetVersion: [\n\t\t\t\t'reactivateAssetVersion',\n\t\t\t\t'versionId',\n\t\t\t\t'memoText',\n\t\t\t],\n\t\t};\n\t}\n\t/** @type {object} */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function reactivateAssetVersion\n\t\t\t * @param {boolean} response Response\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\treactivateAssetVersion(uuid, opts) {\n\t\t\t\tthis.trackBatchJob(uuid);\n\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t'asset:versions:reactivate:progress',\n\t\t\t\t\tthis.get('assetId'),\n\t\t\t\t\t1,\n\t\t\t\t\ti18n.t('i18n.reactivatingVersion'),\n\t\t\t\t);\n\t\t\t\treturn uuid;\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\tthis.on('progress', (assetVersion, batchJob, progress) => {\n\t\t\tdispatcher.trigger(\n\t\t\t\t'asset:versions:reactivate:progress',\n\t\t\t\tthis.get('assetId'),\n\t\t\t\tprogress,\n\t\t\t\ti18n.t('i18n.reactivatingVersion'),\n\t\t\t);\n\t\t});\n\t\tthis.on('complete', (assetVersion, batchJob, progress) => {\n\t\t\tdispatcher.trigger('asset:versions:reactivate:succeeded', this);\n\t\t});\n\t\tthis.on('error', (assetVersion, error) => {\n\t\t\tdispatcher.trigger('asset:versions:reactivate:error', error, this);\n\t\t});\n\t}\n\n\t/**\n\t * Unwrap the one-object array returned by `getVersionObjects`\n\t * @method\n\t * @param {object} attrs Model attributes\n\t */\n\tparse(attrs) {\n\t\treturn _.isArray(attrs) ? attrs[0] : attrs;\n\t}\n\n\t/**\n\t * Cache-busting string for asset version objects: encode the versionID and creation date as query args\n\t * @method\n\t * @param {string} prefix Prefix for cachbuster string\n\t * @return {string}\n\t */\n\tcacheBuster(prefix = '') {\n\t\treturn (\n\t\t\tprefix +\n\t\t\t'?t=' +\n\t\t\t_.dateFromAsset(this.get('creationDate')).getTime() +\n\t\t\t'&v=' +\n\t\t\tthis.get('versionId')\n\t\t);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AssetVersion';\n\t}\n}\n","/**\n * @classdesc\n * Attribute template model\n *\n * @property {reference} attributeTypes - Available search types\n * @property {number} attributeTypes.UNKNOWN - 0\n * @property {number} attributeTypes.TEXT - 1\n * @property {number} attributeTypes.TEXTAREA - 2\n * @property {number} attributeTypes.PULLDOWN - 3 (select)\n * @property {number} attributeTypes.DATE - 4\n * @property {number} attributeTypes.COMBO - 5 (multiselect)\n * @property {number} attributeTypes.TAGS - 6\n * @property {number} attributeTypes.NUMERIC - 7\n * @property {number} attributeTypes.HIERARCHICAL - 8 (deprecated)\n * @property {number} attributeTypes.TAGSET - 9 (deprecated)\n * @property {number} attributeTypes.AUTOCOMPLETE - 10 (deprecated)\n * @property {number} attributeTypes.DATALOOKUP - 11 (deprecated)\n * @property {number} attributeTypes.SEMANTIC - 12 (deprecated)\n *\n * @class\n * @extends Netx.Models.PermissionResource\n */\nimport {attributeHistoryEnabled} from '@netx/core-attribute-history/enablers';\nimport {\n\tATTRIBUTE_EDITABLE_TYPES,\n\tATTRIBUTE_FACET_TYPES,\n\tATTRIBUTE_MULTIPLE_VALUE_DEPRECATED_TYPES,\n\tAttributeType,\n} from '@netx/core-attribute/constants';\nimport {getLabel} from '@netx/core-attribute/utils/getLabel';\nimport {getTypeLabel} from '@netx/core-attribute/utils/getTypeLabel';\nimport {getTypeName} from '@netx/core-attribute/utils/getTypeName';\nimport Base from '@netx/core-permissions/models/permissionResource';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {escapeAttributeName} from '@netx/core/lib/underscore-netx';\n\nexport default class Attribute extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tget idAttribute() {\n\t\t// DEVNOTE: the capitalization of 'id' is particularly haphazard in this object.\n\t\t// groupIds is capital I, the others are all lowercase i. This is mirroring the\n\t\t// object on the server ... which should be fixed!\n\t\t// TODO: could we regularize that on the client side, or would be there be trouble?\n\t\treturn 'attributeid';\n\t}\n\t/** @override */\n\tget titleAttribute() {\n\t\treturn 'name';\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {number} defaults.attributeid - ID (someone has explicitely set this to 0 without any reasoning - the `isNew` method has been adjusted accordingly. https://confluence.netx.net/display/DEV/Avoid+setting+default+IDs+in+X7+models)\n\t * @property {array} defaults.groupIds - Group ids (Unknown use - possibly permission oriented, and should be deprecated with the new permission system)\n\t * @property {boolean} defaults.facet - Is this attribute a faceted attribute\n\t * @property {boolean} defaults.hasPermissions - Does this attribute have permission records?\n\t * @property {number} defaults.imageid - Image id (Unknown use)\n\t * @property {array} defaults.keyDatasets - Datasets attribute is tied to\n\t * @property {number} defaults.mandatory - Mandatory value (boolean as number)\n\t * @property {string} defaults.modDate - Modification date\n\t * @property {boolean} defaults.multivalue - Multivalue attribute\n\t * @property {string} defaults.name - Attribute name\n\t * @property {array} defaults.objectTypes - Object types (asset/clip)\n\t * @property {number} defaults.orderby - Order by (auto-increments when attribute is added - currently we do not respect this, we order the collection by `name`)\n\t * @property {boolean} default.permissioned\t\t\t - New permission system enabled\n\t * @property {array} defaults.pulldownOptions - Pulldown options (for select/multiselect)\n\t * @property {number} defaults.restrictedUserLevel - Restricted user level (Should be deprecated with the new permission system)\n\t * @property {number} defaults.semanticTypeId - Semantic type id (only used if `type` is 12 - semantic)\n\t * @property {number} defaults.spec1 - Use dependent on the attribute type ( number - format, tag - dateSet id )\n\t * @property {number} defaults.spec2 - Use dependent on the attribute type\n\t * @property {array} defaults.targetDatasets - Ids of datasets that use this attribute as the key for a metadata lookup\n\t * @property {number} defaults.templateid - Attribute template id (the exact same as the `attributeid` - must be legacy code)\n\t * @property {number} defaults.type - Attribute type (as defined in module:asset/properties/attributes#types)\n\t * @property {boolean} defaults.trackHistory - Track attribute history (must have `metadata.history.enabled`)\n\t * @property {number} defaults.userid - ID of creating user\n\t * @property {mixed} defaults.value - Default attribute value\n\t *\n\t * @property {object} defaults.attributeOptions - Attribute options for fields\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tattributeid: 0,\n\t\t\tgroupIds: [],\n\t\t\tfacet: false,\n\t\t\thasPermissions: true,\n\t\t\timageid: 0,\n\t\t\tkeyDatasets: [],\n\t\t\tobjectTypes: ['asset'],\n\t\t\tmandatory: 0,\n\t\t\tmodDate: '',\n\t\t\tmultivalue: false,\n\t\t\tname: '',\n\t\t\torderby: 0,\n\t\t\tpermissioned: false,\n\t\t\tpulldownOptions: [],\n\t\t\trestrictedUserLevel: 0,\n\t\t\tsemanticTypeId: 0,\n\t\t\tspec1: 0,\n\t\t\tspec2: 0,\n\t\t\ttargetDatasets: [],\n\t\t\ttemplateid: 0,\n\t\t\ttrackHistory: false,\n\t\t\ttype: 1,\n\t\t\tuserid: 0,\n\t\t\tvalue: '',\n\n\t\t\t// Client attributes\n\t\t\t// For things like upload asset request to get their custom labels/placeholders/captions to the view\n\t\t\t// rendering the attribute field\n\t\t\tattributeOptions: {},\n\t\t\tvocabulary: null,\n\t\t};\n\t}\n\n\t/** @type {array} */\n\tget clientAttrs() {\n\t\treturn ['attributeOptions', 'vocabulary'];\n\t}\n\n\t/**\n\t * @property {object} methods - Methods for this model\n\t * @property {method} methods.metadataDatasetLookup - Metadata dataset lookup\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tremove: ['deleteAttribute', 'attributeid'],\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tcreate(opts) {\n\t\t\t\treturn ['setAttributeObject', this.self()];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tupdate(opts) {\n\t\t\t\treturn ['setAttributeObject', this.self()];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\treturn ['getAttributeObjects', [this.get('attributeid')]];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetAttributeVocabulary: (opts) => {\n\t\t\t\treturn ['getAttributeVocabulary', this.get('spec1')];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {string} val Value\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tmetadataDatasetLookup(val, opts) {\n\t\t\t\treturn ['metadataDatasetLookup', this.get('name'), val];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Parsers for this model\n\t * @property {method} parsers.metadataDatasetLookup - Parse response of metadata dataset lookup\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * We do not have a call specifically to fetch a single record\n\t\t\t * But we can pass ids and get a single record back wrapped in an array\n\t\t\t * @function\n\t\t\t * @param {array} data Attribute data\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(data, opts) {\n\t\t\t\treturn _.isArray(data) && data.length ? data[0] : null;\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} data Vocabulary\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetAttributeVocabulary(data, opts) {\n\t\t\t\tif (!data) return;\n\t\t\t\tthis.set('vocabulary', data);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} match Matches\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tmetadataDatasetLookup(matches, opts) {\n\t\t\t\t// This API call sometimes returns nulls\n\t\t\t\t// Some csvs can contain empty label/values as well\n\t\t\t\treturn _.filter(matches, (match) => match && match.label !== '');\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\t/**\n\t\t * Shared resource type name\n\t\t * @type {string}\n\t\t */\n\t\topts.resourceName = 'attribute';\n\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * Though multiselects/tags/semantics are multivalue, they are not dealt with the same\n\t\t * @memberof Netx.Models.Attribute\n\t\t * @alias multivalueTypes\n\t\t * @type {array}\n\t\t */\n\t\tthis.multivalueTypes = [1, 2, 3, 4, 7];\n\n\t\t/**\n\t\t * multiselects/tags/semantics arenative multivalues, but they are not dealt with the same as other mutlivalues\n\t\t * @memberof Netx.Models.Attribute\n\t\t * @alias multivalueTypes\n\t\t * @type {array}\n\t\t */\n\t\tthis.nativeMultivalueTypes = [5, 6, 12, 13];\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(dispatcher, 'system:attribute:edit:success', (model) => {\n\t\t\t// See Netx.Models.AttributeData for the reasoning behind the `templateId` check\n\t\t\tif (\n\t\t\t\t(model.id === this.id || model.id === this.get('templateId')) &&\n\t\t\t\tmodel !== this\n\t\t\t) {\n\t\t\t\tthis.set(\n\t\t\t\t\t_.clone(_.omit(model.attributes, 'attributeid', 'templateid')),\n\t\t\t\t);\n\t\t\t}\n\t\t})\n\t\t\t// Listen for permission changes and refetch the attribute model\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'permissions:permission:edit:success permissions:permission:delete:success',\n\t\t\t\t(permission) => {\n\t\t\t\t\tconst resource = permission.get('resource');\n\t\t\t\t\tif (resource.type === 'attribute' && resource.id === this.id) {\n\t\t\t\t\t\tthis.fetch();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\t}\n\n\t/**\n\t * Add object type to attribute\n\t * @method\n\t * @param {string} objectType Object type (asset/clip)\n\t * @type {object} opts Request options\n\t */\n\taddObjectType(objectType, opts) {\n\t\tconst objectTypes = this.get('objectTypes');\n\n\t\tif (_.contains(objectTypes, objectType)) {\n\t\t\treturn new $.Deferred().resolve();\n\t\t}\n\n\t\treturn this.save(\n\t\t\t{objectTypes: objectTypes.concat([objectType])},\n\t\t\t_.extend({wait: true}, opts),\n\t\t);\n\t}\n\n\t/**\n\t * For when an attribute template model has been amalgamated with an attribute data model\n\t * @method\n\t * @return {boolean}\n\t * @see Netx.Models.AttributeData\n\t */\n\tallows(perm) {\n\t\tif (perm == null) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!this.has('permission')) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst permission = this.get('permission');\n\t\tswitch (perm) {\n\t\t\tcase 'delete':\n\t\t\t\treturn permission === 'd';\n\t\t\tcase 'edit':\n\t\t\tcase 'write':\n\t\t\t\treturn permission === 'd' || permission === 'w';\n\t\t\tcase 'read':\n\t\t\t\treturn permission === 'd' || permission === 'w' || permission === 'r';\n\t\t\tdefault:\n\t\t\t\treturn undefined;\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @param {mixed} value Value\n\t * @param {number} truncateAt Truncate at index\n\t * @return {mixed}\n\t */\n\tformat(value, truncateAt) {\n\t\tvalue = this.parseInValue(value);\n\n\t\tif (_.isArray(value)) {\n\t\t\tvalue = value.join(', ');\n\t\t}\n\n\t\tif (typeof value === 'string') {\n\t\t\tvalue = value.replace(/</g, '<');\n\t\t\tvalue = value.replace(/>/g, '>');\n\t\t}\n\n\t\tif (value != null && truncateAt && value.length > truncateAt) {\n\t\t\tvalue = value.substr(0, truncateAt) + '...';\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * @method\n\t * @return {object} Attribute options\n\t */\n\tgetAttributeOptions() {\n\t\tconst attrOptions = {...(this.get('attributeOptions') || {})};\n\t\tif (attrOptions.required != null) {\n\t\t\tattrOptions.required = attrOptions.required === true;\n\t\t}\n\n\t\tif (!attrOptions.caption) delete attrOptions.caption;\n\t\tif (!attrOptions.placeholder) delete attrOptions.placeholder;\n\n\t\treturn attrOptions;\n\t}\n\n\t/** @override */\n\tgetLabel(dontEscape = false) {\n\t\treturn getLabel(this.attributes, dontEscape === false);\n\t}\n\n\t/**\n\t * Return the option values of an attribute pulldown\n\t * @method\n\t * @return {array} Pulldown values\n\t */\n\tgetOptions() {\n\t\treturn this.get('pulldownOptions');\n\t}\n\n\t/**\n\t * @method\n\t * @return camelCased name without special characters\n\t */\n\tgetSafeName() {\n\t\treturn _.toCamelCase(this.get('name'));\n\t}\n\n\t/**\n\t * Get attribute sort field name\n\t * User defined attributes are passed as they are named but system attributes are different\n\t * ie: Modification Date -> moddate\n\t * @method\n\t * @param {boolean} escape Escape attribute name (makes it safe for data attrs etc)\n\t * @return {string}\n\t */\n\tgetSortFieldName(escape) {\n\t\tconst name = this.get('name');\n\t\treturn escape ? escapeAttributeName(name) : name;\n\t}\n\n\t/**\n\t * Get attribute english name from attribute type id\n\t * @method\n\t * @param {number}\n\t * @return {string} Attribute type english name\n\t * @todo Rename to getEnglis\n\t */\n\tgetTypeLabel(type) {\n\t\treturn getTypeLabel(type ?? this.get('type'));\n\t}\n\n\t/**\n\t * Get attribute type name from number\n\t * @method\n\t * @param {number} type Type id (if not provided this.attributes.type will be used)\n\t * @return {string} Attribute name\n\t */\n\tgetTypeName(type) {\n\t\treturn getTypeName(type ?? this.get('type'));\n\t}\n\n\t/**\n\t * For when an attribute template model has been amalgamated with an attribute data model\n\t * @method\n\t * @return {array|mixed} Value(s)\n\t * @see Netx.Models.AttributeData\n\t */\n\tgetValue() {\n\t\tif (!this.has('values')) return;\n\n\t\t// Is not a multivalue type attribute\n\t\tif (!this.get('multivalue')) return this.get('values')[0] || '';\n\n\t\treturn this.get('values');\n\t}\n\n\t/**\n\t * History enabled\n\t * @method\n\t * @return {boolean}\n\t */\n\thistoryEnabled() {\n\t\treturn attributeHistoryEnabled();\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean} Has default value\n\t */\n\thasDefaultValue() {\n\t\treturn this.get('value') != null && this.get('value') !== '';\n\t}\n\n\t/**\n\t * @method\n\t * @param {mixed} value Value\n\t * @return {boolean} Invalid\n\t */\n\tinvalid(value) {\n\t\treturn this.validator(value) !== true;\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean} Value is appendable\n\t */\n\tisAppendable() {\n\t\treturn false;\n\t}\n\n\t/**\n\t * isFlexible() returns true if this attribute is defined as having 'folksonomy'\n\t * and will therefore allow users to add terms via the select2 tagging system.\n\t * @method\n\t * @return {boolean} Is flexible\n\t */\n\tisFlexible() {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Test whether this attribute can be valid for a given object type, by\n\t * checking the objectTypes array\n\t * @method\n\t * @param {string} objectType\n\t * @return {boolean}\n\t */\n\tisForObjectType(objectType) {\n\t\treturn this.get('objectTypes').includes(objectType);\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean}\n\t */\n\tisMandatory() {\n\t\treturn this.get('mandatory') === 1;\n\t}\n\n\t/**\n\t * We set the default id to 0\n\t * @override\n\t * @return {boolean} Is new\n\t * @todo Someone explain why we have to set attributeid to 0 by default?\n\t */\n\tisNew() {\n\t\treturn !this.has(this.idAttribute) || this.id === 0;\n\t}\n\n\t/**\n\t * Are we a native multivalue attribute (see `this.nativeMultivalueTypes`)\n\t * @method\n\t * @param {number} type Type\n\t * @return {boolean}\n\t */\n\tisNativeMultivalue(type) {\n\t\ttype = (type && parseInt(type)) || this.get('type');\n\t\treturn this.nativeMultivalueTypes.includes(type);\n\t}\n\n\t/**\n\t * Are we a true multivalue attribute (see `this.multivalueTypes`)\n\t * @method\n\t * @return {boolean}\n\t */\n\tisTrueMultivalue() {\n\t\treturn (\n\t\t\tthis.get('multivalue') &&\n\t\t\tATTRIBUTE_MULTIPLE_VALUE_DEPRECATED_TYPES.includes(this.get('type'))\n\t\t);\n\t}\n\n\t/**\n\t * Can values be written to for this attribute template\n\t * @method\n\t * @return {boolean}\n\t */\n\tisValueWritable() {\n\t\treturn !(\n\t\t\tthis.get('system') ||\n\t\t\tthis.get('readOnly') ||\n\t\t\t!ATTRIBUTE_EDITABLE_TYPES.includes(this.get('type'))\n\t\t);\n\t}\n\n\t/**\n\t * Try to perform an auto-complete of attributes (DAM-6749)\n\t * @method\n\t */\n\tmetadataLookup(value) {\n\t\tif (!this.get('keyDatasets').length) return new $.Deferred().resolve([]);\n\n\t\treturn this.metadataDatasetLookup(value, {\n\t\t\tduplicateQueryPolicy: 'abort',\n\t\t}).then((matches) => {\n\t\t\treturn _.compact(matches);\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} data Data\n\t * @param {object} opts Request options\n\t */\n\tparseAndSave(data, opts) {\n\t\t// these should all be numbers, not strings.\n\t\t_.each(\n\t\t\t[\n\t\t\t\t'restrictedUserLevel',\n\t\t\t\t'spec1-number',\n\t\t\t\t'spec2-number',\n\t\t\t\t'spec1-tag',\n\t\t\t\t'spec1-vocab',\n\t\t\t\t'type',\n\t\t\t],\n\t\t\t(a) => {\n\t\t\t\tdata[a] = parseInt(data[a]);\n\t\t\t\t// Save some grief\n\t\t\t\tif (isNaN(data[a])) {\n\t\t\t\t\tdata[a] = 0;\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\n\t\t// Set attribute object type\n\t\tlet objectTypes = _.csvToArray(data.objectTypes);\n\t\t// Defaults to `asset`\n\t\tif (!objectTypes || !objectTypes.length) {\n\t\t\tobjectTypes = ['asset'];\n\t\t}\n\n\t\t// Clip only attributes are not mandatory\n\t\tif (!_.contains(objectTypes, 'asset')) {\n\t\t\tdata.mandatory = false;\n\t\t}\n\n\t\t// These fields are applied the same way for all types:\n\t\tlet parsed = _.extend({}, _.pick(data, 'type', 'restrictedUserLevel'), {\n\t\t\tname: data.name.trim(),\n\t\t\tfacet: data.facet && this.supportsFacets(data.type),\n\t\t\tmandatory: data.mandatory ? 1 : 0,\n\t\t\tmultivalue: data.multivalue,\n\t\t\tobjectTypes: objectTypes,\n\t\t\ttrackHistory: data.trackHistory && this.historyEnabled(),\n\t\t});\n\n\t\t// Adjust depending on type\n\t\tswitch (data.type) {\n\t\t\tcase AttributeType.TEXT:\n\t\t\t\tparsed.value = data['value-text'];\n\t\t\t\tbreak;\n\n\t\t\tcase AttributeType.TEXTAREA:\n\t\t\t\tparsed.value = data['value-textarea'];\n\t\t\t\tbreak;\n\n\t\t\tcase AttributeType.SELECT:\n\t\t\t\tparsed.spec1 = data['spec1-vocab'];\n\t\t\t\tbreak;\n\n\t\t\tcase AttributeType.DATE:\n\t\t\t\tparsed.value = data['value-date'];\n\t\t\t\tbreak;\n\n\t\t\tcase AttributeType.NUMBER:\n\t\t\t\t_.extend(parsed, {\n\t\t\t\t\tvalue: data['value-number'],\n\t\t\t\t\tspec1: data['spec1-number'],\n\t\t\t\t\tspec2: data['spec2-number'],\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase AttributeType.SEMANTIC:\n\t\t\t\tparsed.semanticTypeId = parseInt(data.semanticTypeId);\n\t\t\t\tbreak;\n\t\t\tcase AttributeType.TAG:\n\t\t\t\tparsed.spec1 = data['spec1-vocab'];\n\t\t\t\t// Intentionally piggy backing off of regular tag spec2 here\n\t\t\t\tparsed.spec2 = data['spec2-tag'] === true ? 1 : 0;\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// We only allow certain edits to existing attributes\n\t\tif (!this.isNew()) {\n\t\t\tconst updatableFields = [\n\t\t\t\t'name',\n\t\t\t\t'facet',\n\t\t\t\t'mandatory',\n\t\t\t\t'pulldownOptions',\n\t\t\t\t'restrictedUserLevel',\n\t\t\t\t'trackHistory',\n\t\t\t\t'value',\n\t\t\t];\n\n\t\t\tif ([AttributeType.TAG].includes(data.type)) {\n\t\t\t\tupdatableFields.push('spec2');\n\t\t\t}\n\n\t\t\tparsed = _.pick.apply(_, [parsed].concat(updatableFields));\n\t\t}\n\n\t\t// Set and save\n\t\treturn this.save(parsed, _.extend({wait: true}, opts));\n\t}\n\n\t/**\n\t * Parse in value for this attribute\n\t * @method\n\t * @param {mixed} value Value\n\t * @return {mixed}\n\t */\n\tparseInValue(value) {\n\t\t// Our asset beans still use csv\n\t\t// So gross\n\t\tif (\n\t\t\tthis.isTrueMultivalue() &&\n\t\t\tvalue != null &&\n\t\t\t!_.isArray(value) &&\n\t\t\tvalue.includes('\"')\n\t\t) {\n\t\t\treturn _.csvToArray(value);\n\t\t}\n\t\treturn value;\n\t}\n\n\t/**\n\t * Parse out value for this attribute\n\t * @method\n\t * @param {mixed} value Value\n\t * @return {mixed}\n\t */\n\tparseOutValue(value) {\n\t\t// Not worth the effort\n\t\tif (_.isUndefined(value) || _.isNull(value) || value === '') {\n\t\t\treturn value;\n\t\t}\n\n\t\t// True multivalue\n\t\tif (this.isTrueMultivalue()) {\n\t\t\tif (_.isObject(value)) {\n\t\t\t\t// Strip out any empty/null/undefined values\n\t\t\t\t// Cannot use _.compact since it strips `false` and `0`\n\t\t\t\tvalue = _.filter(\n\t\t\t\t\t_.values(value),\n\t\t\t\t\t(v) => v !== '' && !_.isNull(v) && !_.isUndefined(v),\n\t\t\t\t);\n\t\t\t} else if (_.isString(value)) {\n\t\t\t\tvalue = _.csvToArray(value);\n\t\t\t}\n\t\t} else if (this.isCSV && _.isString(value)) {\n\t\t\tvalue = _.csvToArray(value);\n\t\t}\n\n\t\treturn value;\n\t}\n\n\t/**\n\t * Are permissions for this resource enabled\n\t * @override\n\t * @return {boolean}\n\t */\n\tpermissionsEnabled() {\n\t\treturn getPreference('permission.attributesEnabled', true);\n\t}\n\n\t/**\n\t * Remove object type from attribute\n\t * @method\n\t * @param {string} objectType Object type (asset/clip)\n\t * @type {object} opts Request options\n\t */\n\tremoveObjectType(objectType, opts) {\n\t\tconst objectTypes = this.get('objectTypes');\n\n\t\tif (!_.contains(objectTypes, objectType)) {\n\t\t\treturn new $.Deferred().resolve();\n\t\t}\n\n\t\treturn this.save(\n\t\t\t{objectTypes: _.without(objectTypes, objectType)},\n\t\t\t{wait: true, ...opts},\n\t\t);\n\t}\n\n\t/**\n\t * Test whether this attribute supports facets\n\t * @method\n\t * @param {number} type Attribute type\n\t * @return {boolean} Supports facets\n\t */\n\tsupportsFacets(type) {\n\t\treturn ATTRIBUTE_FACET_TYPES.includes(type ?? this.get('type'));\n\t}\n\n\t/**\n\t * @method\n\t * @param {boolean} on Toggle facet on\n\t * @param {object} opts Options\n\t */\n\ttoggleMandatory(on, opts) {\n\t\t// Clip only attributes cannot be mandatory\n\t\tif (!this.isForObjectType('asset')) {\n\t\t\ton = false;\n\t\t}\n\n\t\ton = on != null ? on === true : !this.get('mandatory');\n\n\t\t// If it is the same there is nothing to do\n\t\tif (on === this.get('mandatory')) {\n\t\t\treturn new $.Deferred().resolve();\n\t\t}\n\n\t\treturn this.save({mandatory: on ? 1 : 0}, _.extend({wait: true}, opts));\n\t}\n\n\t/**\n\t * @method\n\t * @param {boolean} on Toggle facet on\n\t * @param {object} opts Options\n\t */\n\ttoggleFacet(on, opts) {\n\t\tif (!ATTRIBUTE_FACET_TYPES.includes(this.get('type'))) {\n\t\t\ton = false;\n\t\t}\n\n\t\ton = on != null ? on === true : !this.get('facet');\n\n\t\t// If it is the same there is nothing to do\n\t\tif (on === this.get('facet')) {\n\t\t\treturn new $.Deferred().resolve();\n\t\t}\n\n\t\treturn this.save({facet: on}, _.extend({wait: true}, opts));\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean}\n\t */\n\ttrackingHistory() {\n\t\treturn this.historyEnabled() && this.get('trackHistory');\n\t}\n\n\t/**\n\t * @method\n\t * @param {mixed} value Value\n\t * @return {boolean} Valid\n\t */\n\tvalidator(value) {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Attribute';\n\t}\n}\n","/**\n * Asset attribute data\n * This model represents a single record of an asset's attribute datum\n * If the attribute data is for a true multivalue attribute, `this.valuesCollection` will be populated with a record for each value in the `values` array\n * `this.valuesCollection` is just an attributes collection with amlagamated attribute models (read: monster)\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport AttributesCollection from '../collections/attributes';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\n\nexport default class AttributeData extends Base {\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'templateId';\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {string} defaults.templateId - ID\n\t * @property {number} defaults.assetId - Asset id (redundant)\n\t * @property {string} defaults.permission - Permission (d/r/w)\n\t * @property {array} defaults.values - Attribute values\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\ttemplateId: 0,\n\t\t\tassetId: 0,\n\t\t\tpermission: 'r',\n\t\t\tvalues: [],\n\n\t\t\t// Client\n\t\t\tautofilled: false,\n\t\t};\n\t}\n\n\t/** @type {array} */\n\tget clientAttrs() {\n\t\treturn ['autofilled'];\n\t}\n\n\t/**\n\t * @override\n\t * @param {array} models An array of models or model attributes\n\t * @param {object} opts Collection options\n\t * @listens module:system#system:attribute:edit:success\n\t */\n\tconstructor(models, opts = {}) {\n\t\t// Circular reference fix\n\t\t// attributes collection requires asset attribute datum collection which\n\t\t// is the top level parent of this model\n\t\t// const AttributesCollection = require('../collections/attributes').default;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * @memberof Netx.Models.AttributeData\n\t\t * @alias assetAttributes\n\t\t * @type {module:asset/collections/attributes}\n\t\t */\n\t\tthis.assetAttributes = opts.assetAttributes || Netx.attributes;\n\n\t\t/**\n\t\t * Will be used as a one off for our multivalue childViews and data\n\t\t * @memberof Netx.Models.AttributeData\n\t\t * @alias valuesCollection\n\t\t * @type {Netx.Collections.AssetAttributes}\n\t\t */\n\t\tthis.valuesCollection = new AttributesCollection([]);\n\n\t\tthis.metadataLookupEnabled = getPreference(\n\t\t\t'category.metadataDatasetLookupEnabled',\n\t\t\ttrue,\n\t\t);\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(this, 'change:values', () => {\n\t\t\tthis.populateValuesCollection();\n\t\t});\n\n\t\t// Wait for initialize to fully complete\n\t\t_.defer(_.bind(this.populateValuesCollection, this));\n\n\t\t/**\n\t\t * Store original value\n\t\t * @memberof module:asset/models/attributeData\n\t\t * @type {mixed}\n\t\t */\n\t\tthis.originalValue = this.getValue();\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(dispatcher, 'system:attribute:edit:success', (model) => {\n\t\t\tif (model.id === this.id && model !== this) {\n\t\t\t\tthis.set(\n\t\t\t\t\t_.clone(_.omit(model.attributes, 'attributeid', 'templateid')),\n\t\t\t\t);\n\t\t\t}\n\t\t})\n\t\t\t// Always have one empty value in last place\n\t\t\t.listenTo(\n\t\t\t\tthis.valuesCollection,\n\t\t\t\t'change',\n\t\t\t\t_.debounce(() => {\n\t\t\t\t\tconst lastModel = _.last(this.valuesCollection.models);\n\t\t\t\t\tconst value = (lastModel && lastModel.getValue()) || [];\n\n\t\t\t\t\tif (!lastModel || (value.length && value[0] !== '')) {\n\t\t\t\t\t\tthis.addValue();\n\t\t\t\t\t}\n\t\t\t\t}, 50),\n\t\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {mixed} value Value to add\n\t */\n\taddValue(value) {\n\t\tif (!this.get('multivalue')) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make a safe copy so we do not pollute original data\n\t\tconst data = this.createValueModelAttributes(value);\n\n\t\t// Always set to an empty value in this.attributes.values (and quietly so we do not trigger repopulation)\n\t\t// since the values collection models will cache their current values\n\t\tthis.set('values', this.get('values').concat(''), {silent: true});\n\n\t\tthis.valuesCollection.add(data);\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} perm Permission string ( \"delete\", \"write/(edit)\", \"share\", etc )\n\t * @return {boolean} Allowed\n\t */\n\tallows(perm) {\n\t\tif (perm == null) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst template = this.getTemplate();\n\t\tif (!template.isValueWritable()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tswitch (perm) {\n\t\t\tcase 'delete':\n\t\t\t\treturn this.canManage();\n\t\t\tcase 'edit':\n\t\t\tcase 'write':\n\t\t\t\treturn this.canEdit();\n\t\t\tdefault:\n\t\t\t\treturn undefined;\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean}\n\t */\n\tcanEdit() {\n\t\treturn (\n\t\t\tthis.get('readOnly') !== true &&\n\t\t\t(this.get('permission') === 'w' || this.canManage())\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean}\n\t */\n\tcanManage() {\n\t\treturn !this.has('permission') || this.get('permission') === 'd';\n\t}\n\n\t/**\n\t * @method\n\t */\n\tclearChanges() {\n\t\tthis.changed = {};\n\t\tthis.originalValue = this.getValue();\n\t\treturn this;\n\t}\n\n\t/**\n\t * @method\n\t * @param {mixed} value Value\n\t * @return {object}\n\t */\n\tcreateValueModelAttributes(value) {\n\t\tif (_.isUndefined(value) || _.isNull(value)) {\n\t\t\tvalue = [''];\n\t\t}\n\t\tif (!_.isArray(value)) {\n\t\t\tvalue = [value];\n\t\t}\n\t\treturn _.extend({}, _.clone(this.self()), {\n\t\t\t// This is purely for the sake of having a unique id, this will not be used in any other way\n\t\t\tattributeid: _.uniqueId('attribute-value-'),\n\t\t\tvalues: value,\n\t\t});\n\t}\n\n\t/** @override */\n\tgetLabel() {\n\t\tconst template = this.getTemplate();\n\t\treturn template && template.getLabel();\n\t}\n\n\t/**\n\t * @method\n\t * @return {module:asset/models/assetAttribute}\n\t */\n\tgetTemplate() {\n\t\treturn this.assetAttributes.get(this.id);\n\t}\n\n\t/**\n\t * @method\n\t * @return {string}\n\t */\n\tgetTypeName() {\n\t\tconst template = this.getTemplate();\n\t\treturn template && template.getTypeName();\n\t}\n\n\t/**\n\t * @method\n\t * @return {array|mixed} Value(s)\n\t */\n\tgetValue() {\n\t\t// Is not a multivalue type attribute\n\t\tif (!this.get('multivalue')) {\n\t\t\treturn this.get('values')[0] || '';\n\t\t}\n\n\t\treturn this.get('values');\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean}\n\t */\n\thasValue() {\n\t\tconst valuesCollection = this.valuesCollection;\n\n\t\tfor (let i = 0, c = valuesCollection.length, vals; i < c; i++) {\n\t\t\tvals = valuesCollection.at(i).get('values');\n\t\t\tif (vals.length && vals[0] !== '') {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * @method\n\t * @param {mixed} value Value\n\t * @return {boolean}\n\t */\n\thasValueChanged(value) {\n\t\tvalue = value != null ? value : this.get('values');\n\n\t\tlet originalValue = this.get('multiple') ? '' : this.originalValue;\n\n\t\tif (!_.isArray(originalValue)) {\n\t\t\tvalue = value !== '' ? [value] : [];\n\t\t}\n\n\t\tif (!_.isArray(originalValue)) {\n\t\t\toriginalValue = originalValue !== '' ? [originalValue] : [];\n\t\t}\n\t\treturn value.join() !== originalValue.join();\n\t}\n\n\t/**\n\t * Try to perform an auto-complete of attributes (DAM-6749)\n\t * @method\n\t */\n\tmetadataLookup() {\n\t\tconst attrTemplate = this.getTemplate();\n\t\tif (!attrTemplate.get('keyDatasets').length) return;\n\n\t\tattrTemplate\n\t\t\t.metadataDatasetLookup(this.getValue(), {\n\t\t\t\tduplicateQueryPolicy: 'abort',\n\t\t\t})\n\t\t\t.then((matches) => {\n\t\t\t\tthis.trigger('metadataLookup:complete', this, _.compact(matches));\n\t\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {boolean} useOriginalValues Use original values\n\t * @param {boolean} dontMerge Do not merge the models\n\t */\n\tpopulateValuesCollection(useOriginalValues, dontMerge) {\n\t\tconst values = useOriginalValues ? this.originalValue : this.get('values');\n\t\t// Map out our `values` array to objects for model creation\n\t\tconst data = _.map(values, (value) =>\n\t\t\tthis.createValueModelAttributes(value),\n\t\t);\n\n\t\t// Always have at least one empty at the end\n\t\tdata.push(this.createValueModelAttributes());\n\n\t\tthis.valuesCollection.set(data, {merge: dontMerge !== true});\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} id Value id\n\t */\n\tremoveValue(id) {\n\t\tif (!this.get('multivalue')) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst valuesCollection = this.valuesCollection;\n\t\tconst valueModel = valuesCollection.get(id);\n\t\tconst values = this.get('values');\n\n\t\tif (valueModel) {\n\t\t\tconst idx = _.indexOf(values, valueModel.get('value')[0]);\n\t\t\tif (idx > -1) {\n\t\t\t\tvalues.splice(idx, 1, '');\n\t\t\t\t// Remove quietly so we do not trigger repopulation\n\t\t\t\tthis.set('value', values, {silent: true});\n\t\t\t}\n\t\t}\n\n\t\tvaluesCollection.remove(id);\n\n\t\t// Always have at least one empty field\n\t\tconst count = valuesCollection.length;\n\t\tif (!count) {\n\t\t\tthis.addValue();\n\t\t} else {\n\t\t\tconst vals = valuesCollection.at(count - 1).get('values');\n\t\t\tif (!vals.length || vals[0] !== '') {\n\t\t\t\tthis.addValue();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Options\n\t */\n\tresetValues(opts) {\n\t\tconst values = this.originalValue;\n\t\tthis.setValue(values, opts);\n\t\tthis.clearChanges();\n\t}\n\n\t/**\n\t * @method\n\t * @param {mixed} value Value\n\t * @param {object} opts Options\n\t */\n\tsetValue(value, opts = {}) {\n\t\t// Must already exist and have permission to edit\n\t\tif (!this.canEdit()) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Undefined/null/empty string are all considered an empty array\n\t\tif (_.isUndefined(value) || _.isNull(value) || value === '') {\n\t\t\tvalue = [];\n\t\t}\n\n\t\t// Regardless of \"multivalue\" value array - all values are dealt with as arrays\n\t\t// Not already an array\n\t\t// Is an array but is a multivalue value attribute, so there must be at least one value in the array and that value must also be an array\n\t\tif (!_.isArray(value)) {\n\t\t\tvalue = [value];\n\t\t}\n\n\t\t// Set asset attribute value(s)\n\t\tthis.set(\n\t\t\t{\n\t\t\t\tvalues: value,\n\t\t\t\tautofilled: opts.autofilled === true,\n\t\t\t},\n\t\t\topts,\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @static\n\t * @param {module:asset/models/attribute} attrModel Attribute template\n\t * @param {object} opts Options\n\t */\n\tstatic CreateFromTemplate(attrModel, opts = {}) {\n\t\tif (!attrModel) {\n\t\t\tthrow new Error('Attribute template required');\n\t\t}\n\n\t\treturn new this(\n\t\t\t_.extend(\n\t\t\t\t_.omit(\n\t\t\t\t\tattrModel.attributes,\n\t\t\t\t\t'attributeid',\n\t\t\t\t\t'objectTypes',\n\t\t\t\t\t'templateid',\n\t\t\t\t\t'value',\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\ttemplateId: attrModel.id,\n\t\t\t\t\tpermission: 'r',\n\t\t\t\t},\n\t\t\t\topts,\n\t\t\t),\n\t\t);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'AttributeData';\n\t}\n}\n","import {i18n} from '@netx/core/i18n';\nimport {notMobile} from '@netx/core/lib/netx-enablers';\n\nexport let constituents = {\n\ttypes: {\n\t\t1: 'keyframe',\n\t\t2: 'layer',\n\t\t3: 'page',\n\t\t4: 'clip',\n\t},\n\ttypeNames: {\n\t\t1: 'i18n.consituentsKeyframes',\n\t\t2: 'i18n.consituentsLayers',\n\t\t3: 'i18n.consituentsPages',\n\t\t4: 'i18n.consituentsClips',\n\t},\n};\n\nexport let dragUserLevel = 8;\n\n// Tasks that run on assets at import\nexport let importTasks = {\n\tAudioTask: i18n.t('i18n.performingTaskAudio'),\n\tFFFViewTask: i18n.t('i18n.performingTaskFFFView'),\n\tINDDPageTask: i18n.t('i18n.performingTaskINDDPage'),\n\tIWorkPageTask: i18n.t('i18n.performingTaskIWorkPage'),\n\tKeyframesTask: i18n.t('i18n.performingTaskKeyframes'),\n\tMetadataTask: i18n.t('i18n.performingTaskMetadata'),\n\tOfficePageTask: i18n.t('i18n.performingTaskOfficePage'),\n\tPDFPageTask: i18n.t('i18n.performingTaskPDFPage'),\n\tPostImportTask: i18n.t('i18n.performingTaskPostImport'),\n\tPreviewTask: i18n.t('i18n.performingTaskPreview'),\n\tRelatedAssetTask: i18n.t('i18n.performingTaskRelatedAssets'),\n\tSWFTask: i18n.t('i18n.performingTaskSWF'),\n\tThumbnailTask: i18n.t('i18n.performingTaskThumbnail'),\n\tVideoPreviewTask: i18n.t('i18n.performingTaskVideoPeview'),\n\tWatermarkTask: i18n.t('i18n.performingTaskWatermark'),\n\tZoomTask: i18n.t('i18n.performingTaskZoom'),\n};\n\nexport let renderableChanges = [\n\t'attributeIds',\n\t'attributeNames',\n\t'attributeValues',\n\t'checkout',\n\t'creationdate',\n\t'expirationDate',\n\t'file',\n\t'fileSize2',\n\t'fileheight',\n\t'filesize',\n\t'filetype',\n\t'filetypelabel',\n\t'filewidth',\n\t'geoLocationLabel',\n\t'imageid',\n\t'importDate',\n\t'locationContext',\n\t'locationid',\n\t'moddate',\n\t'moduserid',\n\t'moduserlabel',\n\t'name',\n\t'path',\n\t'permissionMatrix',\n\t'previewHeight',\n\t'previewUrl',\n\t'previewWidth',\n\t'readOnly',\n\t'repurposeAvailability',\n\t'status',\n\t'thumb',\n\t'thumbUrl',\n\t'versionIds',\n\t'viewIds',\n\t'viewNames',\n\t'zoomAvailable',\n];\n\nexport let status = {\n\tUNKNOWN: 0,\n\tONLINE: 1,\n\tNEARLINE: 2,\n\tOFFLINE: 3,\n\tTEMP: 4,\n\tCHECKOUT: 5,\n\tIMPORT_IN_PROGRESS: 6,\n};\n\nexport let things = {\n\tattributeHistory: {\n\t\tlabel: i18n.t('i18n.attributeHistory'),\n\t\tuserLevel: 4,\n\t\tenableTest: notMobile,\n\t},\n\tattributes: {\n\t\tlabel: i18n.t('i18n.attributes'),\n\t\tuserLevel: 1,\n\t},\n\tcategories: {\n\t\tlabel: i18n.t('i18n.categories'),\n\t\tuserLevel: 2,\n\t},\n\tclips: {\n\t\tlabel: i18n.t('i18n.constituentsClips'),\n\t\tuserLevel: 2,\n\t},\n\tconstituents_keyframes: {\n\t\tlabel: i18n.t('i18n.constituentsKeyframes'),\n\t\tuserLevel: 7,\n\t},\n\tconstituents_layers: {\n\t\tlabel: i18n.t('i18n.constituentsLayers'),\n\t\tuserLevel: 7,\n\t},\n\tconstituents_pages: {\n\t\tlabel: i18n.t('i18n.constituentsPages'),\n\t\tuserLevel: 7,\n\t},\n\tdetail: {\n\t\tlabel: i18n.t('i18n.detail'),\n\t\tmatrix: 'read',\n\t\tuserLevel: 2,\n\t},\n\tfileinfo: {\n\t\tlabel: i18n.t('i18n.fileinfo'),\n\t\tuserLevel: 1,\n\t},\n\tindex: {\n\t\tlabel: i18n.t('i18n.index'),\n\t\tuserLevel: 9,\n\t},\n\tlinks: {\n\t\tlabel: i18n.t('i18n.links'),\n\t\tuserLevel: 2,\n\t},\n\tmetadata: {\n\t\tlabel: i18n.t('i18n.metadata'),\n\t\tuserLevel: 2,\n\t},\n\toverview: {\n\t\tlabel: i18n.t('i18n.overview'),\n\t\tuserLevel: 2,\n\t},\n\tpermissions: {\n\t\tlabel: i18n.t('i18n.permissions'),\n\t\tuserLevel: 8,\n\t},\n\tpreview: {\n\t\tlabel: i18n.t('i18n.preview'),\n\t\tuserLevel: 1,\n\t},\n\tprojects: {\n\t\tlabel: i18n.t('i18n.projects'),\n\t\tuserLevel: 1,\n\t\tenableTest: notMobile,\n\t},\n\tpublicLinks: {\n\t\tlabel: i18n.t('i18n.publicLinks'),\n\t\tuserLevel: 7,\n\t},\n\treviews: {\n\t\tlabel: i18n.t('i18n.reviews'),\n\t\tuserLevel: 1,\n\t\tenableTest: notMobile,\n\t},\n\tusage: {\n\t\tlabel: i18n.t('i18n.usage'),\n\t\tuserLevel: 7,\n\t},\n\tversions: {\n\t\tlabel: i18n.t('i18n.versions'),\n\t\tuserLevel: 4,\n\t},\n\tviews: {\n\t\tlabel: i18n.t('i18n.views'),\n\t\tuserLevel: 2,\n\t},\n};\n\nexport default {\n\tconstituents,\n\tdragUserLevel,\n\timportTasks,\n\trenderableChanges,\n\tstatus,\n\tthings,\n};\n","import {i18n} from '@netx/core/i18n';\n\nexport let types = {\n\tasset: 'asset',\n\tattributeSet: 'attributeSet',\n\tcart: 'cart',\n\tsavedCart: 'savedCart',\n\tcategory: 'category',\n\tconstituent: 'constituent',\n\t//search: 'search'\n\tsavedSearch: 'savedSearch',\n\t// NOTE: this got changed to 'assets' but these are not strings to i18n, these are DAM symbols. Use i18n.asssetSet or similar instead.\n\tassetSet: 'assetSet',\n};\n\nexport let organizeByTypes = {\n\tnone: {\n\t\tvalue: 0,\n\t\tlabel: i18n.t('i18n.noOrganization'),\n\t},\n\tfileType: {\n\t\tvalue: -105,\n\t\tlabel: i18n.t('i18n.fileType'),\n\t},\n\tfileFormatFamily: {\n\t\tvalue: -106,\n\t\tlabel: i18n.t('i18n.fileFormatFamily'),\n\t},\n\tfolderPath: {\n\t\tvalue: -108,\n\t\tlabel: i18n.t('i18n.categoryPath'),\n\t},\n};\n\nexport default {organizeByTypes, types};\n","import _ from 'underscore';\nimport {consituentClipsEnabled} from '@netx/core-constituents/enablers';\nimport {i18n} from '@netx/core/i18n';\n\nexport const ids = {\n\ttext: 1,\n\ttextarea: 2,\n\tselect: 3, // these often have spec1 = 4\n\tdate: 4,\n\tmultiselect: 5,\n\tnumber: 7,\n\thierarchical: 8, // Stupid terrible beast\n\tsemantic: 12,\n\ttag: 13,\n};\n\nexport let defaultAttributeColumns = [\n\t{code: 'name', name: i18n.t('i18n.name')},\n\t{code: 'filetypelabel', name: i18n.t('i18n.fileType')},\n\t{code: null, name: i18n.t('i18n.fileInfo')},\n\t{code: 'fileSize2', name: i18n.t('i18n.fileSize')},\n\t{code: 'creationdate', name: i18n.t('i18n.creationDate')},\n\t{code: null, name: i18n.t('i18n.status')},\n];\n\nexport const systemAttributes = [\n\t{code: 'name', key: 'name', id: -100, name: i18n.t('i18n.name')},\n\t{code: 'file', key: 'file', id: -101, name: i18n.t('i18n.file')},\n\t{code: 'assetId', key: 'assetId', id: -102, name: i18n.t('i18n.assetId')},\n\t{\n\t\tcode: 'fileSize2',\n\t\tkey: 'fileSize2',\n\t\tid: -104,\n\t\tname: i18n.t('i18n.fileSize'),\n\t},\n\t{\n\t\tcode: 'filetypelabel',\n\t\tkey: 'filetypelabel',\n\t\tid: -105,\n\t\tname: i18n.t('i18n.fileType'),\n\t},\n\t{\n\t\tcode: 'fileFormatFamily',\n\t\tkey: 'fileFormatFamily',\n\t\tid: -106,\n\t\tname: i18n.t('i18n.fileFormatFamily'),\n\t},\n\t{\n\t\tcode: 'categoryPaths',\n\t\tkey: 'folderPath',\n\t\tid: -108,\n\t\tname: i18n.t('i18n.folderPath'),\n\t},\n\t{code: 'moddate', key: 'moddate', id: -110, name: i18n.t('i18n.modDate')},\n\t{\n\t\tcode: 'creationdate',\n\t\tkey: 'creationdate',\n\t\tid: -111,\n\t\tname: i18n.t('i18n.creationDate'),\n\t},\n\t{\n\t\tcode: 'importDate',\n\t\tkey: 'importDate',\n\t\tid: -112,\n\t\tname: i18n.t('i18n.importDate'),\n\t},\n\t{\n\t\tcode: 'smart labels',\n\t\tkey: 'smart labels',\n\t\tid: -119,\n\t\tname: i18n.t('i18n.smartLabels'),\n\t},\n];\n\n// !!! hierarchical is not supported for edit !!!\n// !!! I REPEAT: hierarchical is not editable !!!\nexport let editable = [\n\t1, // text\n\t2, // textarea\n\t3, // select\n\t4, // date\n\t7, // number\n\t12, // semantic\n\t13, // tag\n];\n\n// Attribute types that are allowed to be facets\nexport let facetAttributeSupport = [\n\t3, // Select\n\t13, // Tag\n];\n\n// Attribute types that use vocabularies\nexport let vocabularyAttributes = [\n\t3, // Select\n\t13, // Tag\n];\n\nexport let numberTypes = [\n\t{\n\t\tkey: 'whole',\n\t\tname: i18n.t('i18n.wholeNumber'),\n\t\tvalidator: '^-?\\\\d+$',\n\t\twarning: i18n.t('i18n.wholeNumberWarning'),\n\t},\n\t{\n\t\tkey: 'oneDecimal',\n\t\tname: i18n.t('i18n.oneDecimal'),\n\t\tvalidator: '^(-?\\\\d+(\\\\.\\\\d{0,1})?|-?\\\\.\\\\d{1})$',\n\t\twarning: i18n.t('i18n.oneDecimalWarning'),\n\t\tmaxDecimal: 1,\n\t},\n\t{\n\t\tkey: 'twoDecimals',\n\t\tname: i18n.t('i18n.twoDecimals'),\n\t\tvalidator: '^(-?\\\\d+(\\\\.\\\\d{0,2})?|-?\\\\.\\\\d{1,2})$',\n\t\twarning: i18n.t('i18n.twoDecimalsWarning'),\n\t\tmaxDecimal: 2,\n\t},\n\t{\n\t\tkey: 'threeDecimals',\n\t\tname: i18n.t('i18n.threeDecimals'),\n\t\tvalidator: '^(-?\\\\d+(\\\\.\\\\d{0,3})?|-?\\\\.\\\\d{1,3})$',\n\t\twarning: i18n.t('i18n.threeDecimalsWarning'),\n\t\tmaxDecimal: 3,\n\t},\n\t{\n\t\t// \"free,\" but not negative\n\t\tkey: 'unlimited',\n\t\tname: i18n.t('i18n.unlimited'),\n\t\tvalidator: '^\\\\d*\\\\.?\\\\d+$',\n\t\twarning: i18n.t('i18n.unlimitedWarning'),\n\t\tmaxDecimal: Infinity,\n\t},\n\t{\n\t\t// TODO: what is 'sortable' - should all number not be sortable ?\n\t\tkey: 'sortable',\n\t\tname: i18n.t('i18n.sortable'),\n\t\tvalidator: '.*',\n\t\twarning: '',\n\t\tmaxDecimal: Infinity,\n\t},\n];\n\n// Attribute object types asset/clip\n// See the dispatcher listener below for clip setup\nexport let objectTypes = [\n\t{\n\t\tkey: 'asset',\n\t\tlabel: i18n.t('i18n.asset'),\n\t},\n];\n\n// For the textTypes and numberTypes array, the array index is the value stored in the attribute spec field\n// (spec1 for text, spec2 for number)\nexport let textTypes = [\n\t{\n\t\tname: 'None',\n\t},\n\t{\n\t\tname: 'Clear',\n\t},\n];\n\nexport let typeLabels = {\n\tdate: i18n.t('i18n.date'),\n\thierarchical: i18n.t('i18n.hierarchical'),\n\tmultiselect: i18n.t('i18n.multiSelectBox'),\n\tnumber: i18n.t('i18n.number'),\n\tselect: i18n.t('i18n.pulldown'),\n\tsemantic: i18n.t('i18n.semantic'),\n\ttag: i18n.t('i18n.tag'),\n\ttext: i18n.t('i18n.text'),\n\ttextarea: i18n.t('i18n.textarea'),\n};\n\nexport let types = _.invert(ids);\n\n// Update `objectTypes`\nif (consituentClipsEnabled()) {\n\tobjectTypes.push({\n\t\tkey: 'clip',\n\t\tlabel: i18n.t('i18n.assetConstituentClip'),\n\t});\n}\n\nexport default {\n\tdefaultAttributeColumns,\n\teditable,\n\tfacetAttributeSupport,\n\tnumberTypes,\n\tobjectTypes,\n\ttextTypes,\n\ttypes,\n};\n","import {isMediaFileTypeAsset} from './isMediaFileTypeAsset';\n\nexport const assetHasAudio = (\n\tfileFormatFamily: string[],\n\tviewNames: string[],\n) => isMediaFileTypeAsset(fileFormatFamily) && viewNames.includes('previewMp3');\n\nexport default assetHasAudio;\n","import {type IAsset} from '@netx/core-asset-next/schema';\nimport {AssetViewName} from '@netx/core-asset-views';\n\nexport const assetHasPdf = (asset?: IAsset) => {\n\tif (!asset) return false;\n\treturn (\n\t\tasset.fileFormatFamily.includes('document') &&\n\t\t(asset.viewNames.includes(AssetViewName.PDF) ||\n\t\t\tasset.filetypelabel === 'pdf')\n\t);\n};\n\nexport default assetHasPdf;\n","import {isMediaFileTypeAsset} from './isMediaFileTypeAsset';\n\nexport const assetHasVideo = (\n\tfileFormatFamily: string[],\n\tviewNames: string[],\n) =>\n\tisMediaFileTypeAsset(fileFormatFamily) && viewNames.includes('previewH264');\n","import {AssetStatus, type IAsset} from '@netx/core-asset-next/schema';\n\nconst PRESENT_STATUSES = [\n\tAssetStatus.NEARLINE,\n\tAssetStatus.ONLINE,\n\tAssetStatus.TEMP,\n];\n\nexport const assetIsPresent = (asset: Pick<IAsset, 'status'>) =>\n\tPRESENT_STATUSES.includes(asset.status);\n","import {bytes} from '@netx/core/lib/underscore-netx';\n\nexport const getAssetFileSizeLabel = bytes; // (fileSize: number) => bytes(fileSize);\n\nexport default getAssetFileSizeLabel;\n","import {assetDefaults} from '@netx/core-asset-next/defaults';\nimport {type IAsset} from '@netx/core-asset-next/schema';\n\nexport const createAssetObject = (overrides?: Partial<IAsset>): IAsset => ({\n\tassetId: 0,\n\t...assetDefaults,\n\t...overrides,\n});\n\nexport default createAssetObject;\n","import {DocumentFormatFamilies} from '../constants';\n\nexport const isDocumentFileTypeAsset = (fileFormatFamily: string[]) =>\n\tfileFormatFamily.some((format) =>\n\t\tDocumentFormatFamilies.includes(\n\t\t\tformat as typeof DocumentFormatFamilies[number],\n\t\t),\n\t);\n\nexport default isDocumentFileTypeAsset;\n","import {ImageFormatFamilies} from '../constants';\n\nexport const isImageFileTypeAsset = (fileFormatFamily: string[]) =>\n\tfileFormatFamily.some((format) =>\n\t\tImageFormatFamilies.includes(format as typeof ImageFormatFamilies[number]),\n\t);\n\nexport default isImageFileTypeAsset;\n","import {VideoFormatFamilies} from '../constants';\n\nexport const isVideoFileTypeAsset = (fileFormatFamily: string[]) =>\n\tfileFormatFamily.some((format) =>\n\t\tVideoFormatFamilies.includes(format as typeof VideoFormatFamilies[number]),\n\t);\n\nexport default isVideoFileTypeAsset;\n","import {isDocumentFileTypeAsset} from './isDocumentFileTypeAsset';\nimport {isImageFileTypeAsset} from './isImageFileTypeAsset';\nimport {isMediaFileTypeAsset} from './isMediaFileTypeAsset';\nimport {isVideoFileTypeAsset} from './isVideoFileTypeAsset';\n\nexport const getGeneralAssetFileType = (\n\tfileFormatFamily: string[] = [],\n\tspecific = false,\n) => {\n\tif (isDocumentFileTypeAsset(fileFormatFamily)) return 'document';\n\tif (isImageFileTypeAsset(fileFormatFamily)) return 'image';\n\tif (isMediaFileTypeAsset(fileFormatFamily)) {\n\t\treturn specific\n\t\t\t? isVideoFileTypeAsset(fileFormatFamily)\n\t\t\t\t? 'video'\n\t\t\t\t: 'audio'\n\t\t\t: 'media';\n\t}\n};\n\nexport default getGeneralAssetFileType;\n","import {i18n} from '@netx/core/i18n';\n\nexport const getDocumentFileTypeAssetInfoLabel = (pageCount: number) =>\n\t// Do not display when there are no pages\n\tpageCount ? i18n.t('i18n.nPages', {count: pageCount}) : undefined;\n\nexport default getDocumentFileTypeAssetInfoLabel;\n","import {secondsToHms} from '@netx/core-next/utils/time';\n\n/**\n * @param duration Duration in milliseconds\n * @returns Duration label\n */\nexport const getMediaFileTypeAssetInfoLabel = (duration: number) =>\n\tsecondsToHms(duration / 1000);\n\nexport default getMediaFileTypeAssetInfoLabel;\n","export const getImageFileTypeAssetInfoLabel = (\n\tfilewidth: number,\n\tfileheight: number,\n) => (filewidth || fileheight ? `${filewidth}x${fileheight}` : undefined);\n\nexport default getImageFileTypeAssetInfoLabel;\n","import {type IAsset} from '@netx/core-asset-next/schema';\nimport {getGeneralAssetFileType} from './getGeneralAssetFileType';\nimport {getDocumentFileTypeAssetInfoLabel} from './getDocumentFileTypeAssetInfoLabel';\nimport {getMediaFileTypeAssetInfoLabel} from './getMediaFileTypeAssetInfoLabel';\nimport {getImageFileTypeAssetInfoLabel} from './getImageFileTypeAssetInfoLabel';\n\nexport const getAssetFileTypeInfoLabel = ({\n\tduration,\n\tfileFormatFamily,\n\tfileheight,\n\tfilewidth,\n\tconstituentIds,\n}: Pick<\n\tIAsset,\n\t| 'constituentIds'\n\t| 'duration'\n\t| 'fileFormatFamily'\n\t| 'fileheight'\n\t| 'filewidth'\n>) => {\n\tswitch (getGeneralAssetFileType(fileFormatFamily)) {\n\t\tcase 'document':\n\t\t\treturn getDocumentFileTypeAssetInfoLabel(constituentIds.length);\n\t\tcase 'media':\n\t\t\treturn getMediaFileTypeAssetInfoLabel(duration);\n\t\tdefault:\n\t\t\t//case 'image':\n\t\t\treturn getImageFileTypeAssetInfoLabel(filewidth, fileheight);\n\t}\n};\n\nexport default getAssetFileTypeInfoLabel;\n","export const ASSET_DEFAULT_ICON_TEST = /icons\\/(.*)\\.png/;\n\nexport const isDefaultIcon = (previewUrl?: string) =>\n\tpreviewUrl?.match(ASSET_DEFAULT_ICON_TEST);\n\nexport default isDefaultIcon;\n","import {appRouter} from '@netx/core-next/instance/router';\n\nexport const routeToAsset = (id: number) =>\n\tappRouter.navigate(`asset/${id}`, true);\n\nexport default routeToAsset;\n","import {AssetStatus, type IAsset} from '@netx/core-asset-next/schema';\n\nexport const isAssetCheckedOut = (asset: Pick<IAsset, 'status'>) =>\n\tasset.status === AssetStatus.CHECKOUT;\n\nexport default isAssetCheckedOut;\n","import {MediaFormatFamilies} from '../constants';\n\nexport const isMediaFileTypeAsset = (fileFormatFamily: string[]) =>\n\tfileFormatFamily.some((format) =>\n\t\tMediaFormatFamilies.includes(format as typeof MediaFormatFamilies[number]),\n\t);\n\nexport default isMediaFileTypeAsset;\n","import {UserLevel} from '@netx/core-user/constants';\n\nexport const ATTRIBUTE_HISTROY_MINIMUM_LEVEL = UserLevel.PRODUCER;\n\nexport enum AttributeHistoryPref {\n\tENABLED = 'metadata.history.enabled',\n}\n","import {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {AttributeHistoryPref} from '../constants';\n\nexport const attributeHistoryEnabled = () =>\n\tgetPreference(AttributeHistoryPref.ENABLED, true);\n","import {currentUserMeetsUserLevel} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {ATTRIBUTE_HISTROY_MINIMUM_LEVEL} from '../constants';\n\nexport const canViewAttributeHistory = () =>\n\tcurrentUserMeetsUserLevel(ATTRIBUTE_HISTROY_MINIMUM_LEVEL);\n","import {type IAsset} from '@netx/core-asset-next/schema';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\n\nexport const enabled = () => {\n\treturn getPreference('metadata.smartLabels.enabled', true);\n};\n\nexport const supportsAsset = (assetData: IAsset) => {\n\tconst {fileFormatFamily} = assetData;\n\treturn (\n\t\tfileFormatFamily.includes('image') ||\n\t\tfileFormatFamily.includes('raw') ||\n\t\tfileFormatFamily.includes('cameraRaw')\n\t);\n};\n","import {enumToValues} from '@netx/core-next/utils/enum';\nimport {UserLevel} from '@netx/core-user-next/constants';\n\n/**\n * used to signify we want to empty the attribute's value\n * react-hook-form does not play well with `undefined` values\n * so we use a symbol to signify we want to empty the value\n * since we can no longer differentiate as `null` (emptied) or `undefined` (not set)\n */\nexport const emptyValueSymbol = Symbol('emptyValue');\n\nexport const ATTRIBUTE_SYSTEM_ATTRIBUTES_MINIMUM_USER_LEVEL = UserLevel.ADMIN;\nexport const ATTRIBUTE_SYSTEM_METADATA_MAPS_MINIMUM_USER_LEVEL =\n\tUserLevel.ADMIN;\nexport const ATTRIBUTE_SYSTEM_SEMANTICS_MINIMUM_USER_LEVEL = UserLevel.ADMIN;\n\nexport enum AttributePref {\n\tSEMANTICS_ENABLED = 'metadata.semantic.enabled',\n\tALL_USERS_PERMITTED_TO_EDIT = 'permission.attributesEnabled',\n}\n\nexport const ATTRIBUTE_ID = 'attributeid';\n\nexport enum AttributeType {\n\tTEXT = 1,\n\tTEXTAREA = 2,\n\tSELECT = 3,\n\tDATE = 4,\n\tNUMBER = 7,\n\tHIERARCHICAL = 8,\n\tSEMANTIC = 12,\n\tTAG = 13,\n}\n\nexport const ATTRIBUTE_TYPE_NAME: Record<AttributeType, string> = {\n\t[AttributeType.DATE]: 'date',\n\t[AttributeType.HIERARCHICAL]: 'hierarchical',\n\t[AttributeType.NUMBER]: 'number',\n\t[AttributeType.SELECT]: 'select',\n\t[AttributeType.SEMANTIC]: 'semantic',\n\t[AttributeType.TAG]: 'tag',\n\t[AttributeType.TEXT]: 'text',\n\t[AttributeType.TEXTAREA]: 'textarea',\n};\n\nexport const ATTRIBUTE_ACTION = <const>{\n\tAPPEND: 'append',\n\tCLEAR: 'clear',\n\tOVERWRITE: 'overwrite',\n\tREMOVE: 'remove',\n\tSET_IF_BLANK: 'set_if_blank',\n};\n\n/**\n * Attribute template types that can have values appended to them\n */\nexport const ATTRIBUTE_APPENDABLE_TYPES: readonly AttributeType[] = [\n\tAttributeType.TEXT,\n\tAttributeType.TEXTAREA,\n\tAttributeType.SEMANTIC,\n\tAttributeType.TAG,\n];\n\n/**\n * Attribute template types that can have default values set\n */\nexport const ATTRIBUTE_DEFAULTABLE_TYPES: readonly AttributeType[] = [\n\tAttributeType.DATE,\n\tAttributeType.NUMBER,\n\tAttributeType.TEXT,\n\tAttributeType.TEXTAREA,\n];\n\n// !!! hierarchical is not supported for edit !!!\n// !!! I REPEAT: hierarchical is not editable !!!\nexport const ATTRIBUTE_EDITABLE_TYPES = enumToValues(AttributeType).filter(\n\t(type) => type !== AttributeType.HIERARCHICAL,\n);\n\n/**\n * Attribute template types that can be used as facets\n */\nexport const ATTRIBUTE_FACET_TYPES: readonly AttributeType[] = [\n\tAttributeType.SELECT,\n\tAttributeType.TAG,\n];\n\n/**\n * Attribute template types that can accept multiple values\n */\nexport const ATTRIBUTE_MULTIPLE_VALUE_TYPES: readonly AttributeType[] = [\n\tAttributeType.SEMANTIC,\n\tAttributeType.TAG,\n];\n\n/**\n * This was from a failed multi value attribute project\n * Not to be confused with attributes that can have multiple values BUT was\n * intended to be multiple instances of the same attribute\n * @deprecated\n */\nexport const ATTRIBUTE_MULTIPLE_VALUE_DEPRECATED_TYPES: readonly AttributeType[] =\n\t[\n\t\tAttributeType.TEXT,\n\t\tAttributeType.TEXTAREA,\n\t\tAttributeType.SELECT,\n\t\tAttributeType.DATE,\n\t\tAttributeType.NUMBER,\n\t];\n\nexport const ATTRIBUTE_NUMBER_SPEC_2_TYPE = <const>{\n\tWHOLE: 0,\n\tONE_DECIMAL: 1,\n\tTWO_DECIMALS: 2,\n\tTHREE_DECIMALS: 3,\n\t/** \"free,\" but not negative */\n\tUNLIMITED: 4,\n\t/** TODO: what is 'sortable' - should all number not be sortable? */\n\tSORTABLE: 5,\n};\n\nexport const ATTRIBUTE_NUMBER_TESTS: Record<\n\ttypeof ATTRIBUTE_NUMBER_SPEC_2_TYPE[keyof typeof ATTRIBUTE_NUMBER_SPEC_2_TYPE],\n\tstring\n> = {\n\t[ATTRIBUTE_NUMBER_SPEC_2_TYPE.ONE_DECIMAL]: `^(-?\\\\d+(\\\\.\\\\d{0,1})?|-?\\\\.\\\\d{1})$`,\n\t[ATTRIBUTE_NUMBER_SPEC_2_TYPE.SORTABLE]: `.*`,\n\t[ATTRIBUTE_NUMBER_SPEC_2_TYPE.THREE_DECIMALS]: `^(-?\\\\d+(\\\\.\\\\d{0,3})?|-?\\\\.\\\\d{1,3})$`,\n\t[ATTRIBUTE_NUMBER_SPEC_2_TYPE.TWO_DECIMALS]: `^(-?\\\\d+(\\\\.\\\\d{0,2})?|-?\\\\.\\\\d{1,2})$`,\n\t[ATTRIBUTE_NUMBER_SPEC_2_TYPE.UNLIMITED]: `^\\\\d*\\\\.?\\\\d+$`,\n\t[ATTRIBUTE_NUMBER_SPEC_2_TYPE.WHOLE]: `^-?\\\\d+$`,\n};\n\nexport const ATTRIBUTE_NUMBER_MAX_DECIMAL = {\n\t[ATTRIBUTE_NUMBER_SPEC_2_TYPE.ONE_DECIMAL]: 1,\n\t[ATTRIBUTE_NUMBER_SPEC_2_TYPE.THREE_DECIMALS]: 3,\n\t[ATTRIBUTE_NUMBER_SPEC_2_TYPE.TWO_DECIMALS]: 2,\n\t[ATTRIBUTE_NUMBER_SPEC_2_TYPE.UNLIMITED]: Infinity,\n};\n\nexport const ATTRIBUTE_OBJECT_TYPE = <const>{\n\tASSET: 'asset',\n\tCLIP: 'clip',\n};\n\nexport const ATTRIBUTE_SYSTEM = <const>{\n\tASSET_ID: 'assetId',\n\tCATEGORY_PATHS: 'categoryPaths',\n\tCHECKSUM: 'checksum',\n\tCREATION_DATE: 'creationdate',\n\tDIMENSIONS: 'dimensions',\n\tEXPIRE_DATE: 'expireDate',\n\tFILE: 'file',\n\tFILE_FORMAT_FAMILY: 'fileFormatFamily',\n\tFILE_SIZE_2: 'fileSize2',\n\tFILE_TYPE_LABEL: 'filetypelabel',\n\tHEIGHT: 'height',\n\tIMPORT_DATE: 'importDate',\n\tMOD_DATE: 'moddate',\n\tMOD_USER: 'modUser',\n\tNAME: 'name',\n\tPATH: 'path',\n\tSMART_LABELS: 'smart labels',\n\tTHUMB_PATH: 'thumbPath',\n\tWIDTH: 'width',\n};\n\nexport const ATTRIBUTE_SYSTEM_ID: Record<\n\ttypeof ATTRIBUTE_SYSTEM[keyof typeof ATTRIBUTE_SYSTEM],\n\tnumber\n> = <const>{\n\t[ATTRIBUTE_SYSTEM.NAME]: -100,\n\t[ATTRIBUTE_SYSTEM.FILE]: -101,\n\t[ATTRIBUTE_SYSTEM.ASSET_ID]: -102,\n\t[ATTRIBUTE_SYSTEM.FILE_SIZE_2]: -104,\n\t[ATTRIBUTE_SYSTEM.FILE_TYPE_LABEL]: -105,\n\t[ATTRIBUTE_SYSTEM.FILE_FORMAT_FAMILY]: -106,\n\t[ATTRIBUTE_SYSTEM.PATH]: -107,\n\t[ATTRIBUTE_SYSTEM.CATEGORY_PATHS]: -108,\n\t[ATTRIBUTE_SYSTEM.EXPIRE_DATE]: -109,\n\t[ATTRIBUTE_SYSTEM.MOD_DATE]: -110,\n\t[ATTRIBUTE_SYSTEM.CREATION_DATE]: -111,\n\t[ATTRIBUTE_SYSTEM.IMPORT_DATE]: -112,\n\t[ATTRIBUTE_SYSTEM.MOD_USER]: -113,\n\t[ATTRIBUTE_SYSTEM.WIDTH]: -114,\n\t[ATTRIBUTE_SYSTEM.HEIGHT]: -115,\n\t[ATTRIBUTE_SYSTEM.CHECKSUM]: -117,\n\t[ATTRIBUTE_SYSTEM.THUMB_PATH]: -118,\n\t[ATTRIBUTE_SYSTEM.SMART_LABELS]: -119,\n\t[ATTRIBUTE_SYSTEM.DIMENSIONS]: -120,\n};\n","import {Locales} from '@netx/core-next/locales';\n\nimport {\n\tAttributeType,\n\tATTRIBUTE_SYSTEM,\n\tATTRIBUTE_SYSTEM_ID,\n\tATTRIBUTE_OBJECT_TYPE,\n} from './constants';\nimport {AttributeSystemType} from './types';\n\nexport const AttributeObjectTypeLabel = Locales((i18n) => ({\n\t[ATTRIBUTE_OBJECT_TYPE.ASSET]: i18n('i18n.asset'),\n\t[ATTRIBUTE_OBJECT_TYPE.CLIP]: i18n('i18n.clip'),\n}));\n\nexport const AttributeSystemAttributesLabel = Locales((i18n) => ({\n\tROUTE: i18n('i18n.attributes'),\n}));\n\nexport const AttributeSystemMetadataMapsLabel = Locales((i18n) => ({\n\tROUTE: i18n('i18n.metadataMaps'),\n}));\n\nexport const AttributeSystemSemanticsLabel = Locales((i18n) => ({\n\tROUTE: i18n('i18n.semantics'),\n}));\n\nexport const TYPE_LABELS = Locales<Record<AttributeType, string>>((i18n) => ({\n\t[AttributeType.DATE]: i18n('i18n.date'),\n\t[AttributeType.HIERARCHICAL]: i18n('i18n.hierarchical'),\n\t[AttributeType.NUMBER]: i18n('i18n.number'),\n\t[AttributeType.SELECT]: i18n('i18n.pulldown'),\n\t[AttributeType.SEMANTIC]: i18n('i18n.semantic'),\n\t[AttributeType.TAG]: i18n('i18n.tag'),\n\t[AttributeType.TEXT]: i18n('i18n.text'),\n\t[AttributeType.TEXTAREA]: i18n('i18n.textarea'),\n}));\n\nexport const SYSTEM_ATTRIBUTE_LABELS = Locales<\n\tRecord<AttributeSystemType, string>\n>((i18n) => ({\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.ASSET_ID]]: i18n('i18n.assetId'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.CATEGORY_PATHS]]:\n\t\ti18n('i18n.folderPath'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.CHECKSUM]]: i18n('i18n.checksum'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.CREATION_DATE]]:\n\t\ti18n('i18n.creationDate'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.DIMENSIONS]]: i18n('i18n.dimensions'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.EXPIRE_DATE]]: i18n('i18n.expires'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.FILE]]: i18n('i18n.file'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.FILE_FORMAT_FAMILY]]: i18n(\n\t\t'i18n.fileFormatFamily',\n\t),\n\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.FILE_SIZE_2]]: i18n('i18n.fileSize'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.FILE_TYPE_LABEL]]:\n\t\ti18n('i18n.fileType'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.HEIGHT]]: i18n('i18n.height'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.IMPORT_DATE]]: i18n('i18n.importDate'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.MOD_DATE]]: i18n('i18n.modDate'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.MOD_USER]]: i18n('i18n.modUser'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.NAME]]: i18n('i18n.name'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.PATH]]: i18n('i18n.path'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.SMART_LABELS]]:\n\t\ti18n('i18n.smartLabels'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.THUMB_PATH]]: i18n('i18n.thumbPath'),\n\t[ATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.WIDTH]]: i18n('i18n.width'),\n}));\n\nexport const AttributeExportTitle = Locales((i18n) => ({\n\tDOWNLOAD: i18n('i18n.exportAttributes'),\n\tSHARE: i18n('i18n.exportAttributes'),\n}));\n\nexport const AttributeExportSubTitle = Locales((i18n) => ({\n\tNEW: i18n('i18n.new'),\n\tEDIT: i18n('i18n.edit'),\n}));\n","import _ from 'underscore';\nimport {completions as autocompletions} from '@netx/core-app/properties/autocomplete';\nimport AttributesCollection from '@netx/core-asset/collections/attributes';\nimport AttributeModel from '@netx/core-asset/models/attribute';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\n\nexport const attributes = new AttributesCollection([]);\nexport const attributeTemplates = attributes;\n\nattributes.listenTo(\n\tdispatcher,\n\t'system:attribute:edit:success',\n\t(model: any, isNew: boolean) => {\n\t\tif (!isNew) return;\n\t\t// Add the model attributes so that we get the proper attribute model type\n\t\t// when creating a new attribute the model is just the generic base model\n\t\tattributes.add(model.attributes);\n\t\tattributes.sort();\n\t},\n);\n\n// Update autocompletions\nconst attributeHistoryCompletion = autocompletions.attributeHistory;\nattributes.on(\n\t'add remove sync',\n\t_.debounce(() => {\n\t\t// @ts-ignore\n\t\tattributeHistoryCompletion.data = attributes\n\t\t\t.filterByHistory()\n\t\t\t.map((attr: AttributeModel) => ({\n\t\t\t\tlabel: attr.getLabel(),\n\t\t\t\tvalue: attr.id,\n\t\t\t}));\n\t}, 50),\n);\n\n// Keeping clip and asset attributes together in the same call with wholly different needs was\n// kinf of a mistake\nexport const assetAttributes = attributes.filterByObjectType('asset');\nexport const clipAttributes = attributes.filterByObjectType('clip');\n\n// Update our sub attribute collections\nconst attributesChanged = _.debounce(() => {\n\tassetAttributes.set(attributes.filterByObjectType('asset').models, {\n\t\tmerge: true,\n\t});\n\tclipAttributes.set(attributes.filterByObjectType('clip').models, {\n\t\tmerge: true,\n\t});\n\tdispatcher.trigger('asset:attributes:updated', attributes);\n}, 25);\n\nattributes\n\t.on('add remove', attributesChanged)\n\t.on('change', (model) => {\n\t\t!_.isEmpty(model.changed) && attributesChanged();\n\t})\n\t.on('sync', (collection) => {\n\t\tcollection === attributes && attributesChanged();\n\t});\n\nexport const getAttribute = (id?: number, name?: string) => {\n\tif (id != null) return attributes.get(parseInt(id.toString()));\n\tif (name != null) return attributes.findWhere({name: name});\n};\n\nexport const getAttributesByObjectType = (type: 'asset' | 'clip') => {\n\treturn attributes.filterByObjectType(type);\n};\n\nexport const getAttributeId = (name: string) => {\n\treturn getAttribute(undefined, name)?.id;\n};\n\nexport default attributes;\n\nimport {setGlobal} from '@netx/core-next/utils/setGlobal';\n// circular dependency:\n// attribute model (related to some metadata map stuff)\n// attribute collection (related to some metadata map stuff)\n// if (process.env.NODE_ENV !== 'production') {\nsetGlobal({attributes, assetAttributes, clipAttributes});\n//}\n","import _ from 'underscore';\nimport {SYSTEM_ATTRIBUTE_LABELS} from '../locales';\nimport {AttributeTemplate} from '../types';\n\nexport const getLabel = (attr: AttributeTemplate, escape = false) => {\n\tconst label = attr.system\n\t\t? SYSTEM_ATTRIBUTE_LABELS[attr.attributeid] ?? i18n.t(`i18n.${attr.name}`)\n\t\t: attr.name;\n\n\treturn escape ? _.escape(label) : label;\n};\n\nexport default getLabel;\n","import {AttributeType} from '../types';\nimport {TYPE_LABELS} from '../locales';\n\n/**\n * Get attribute template type label from type\n * @param type Attribute template type\n * @return Attribute template type label\n */\nexport const getTypeLabel = (type: AttributeType) =>\n\tTYPE_LABELS[type] || 'unknown';\n\nexport default getTypeLabel;\n","import {ATTRIBUTE_TYPE_NAME, AttributeType} from '../constants';\n\nexport const getTypeName = (type: AttributeType) => ATTRIBUTE_TYPE_NAME[type];\n\nexport default getTypeName;\n","/**\n * @class\n * https://kb.netx.net/pages/viewpage.action?spaceKey=ND&title=NetX+Support+Saml\n */\nimport Base from '@netx/core/lib/netx-model';\n\nclass SAMLService extends Base {\n\t/**\n\t * @property {object} defaults - Model defaults\n\t * @property {string} defaults.description - Service description\n\t * @property {string} defaults.label - Service label\n\t * @property {string} defaults.name - Service name\n\t * @property {string} defaults.type - Service type\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tdescription: '',\n\t\t\tlabel: '',\n\t\t\tname: '',\n\t\t\ttype: '',\n\t\t};\n\t}\n\n\t/** @type {string} */\n\tget idAttributes() {\n\t\treturn 'name';\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SAMLService';\n\t}\n}\n\nexport default SAMLService;\n","/**\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/samlService';\n\nclass SAMLServices extends Base {\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SAMLServices';\n\t}\n}\n\nexport default SAMLServices;\n","/**\n * Netx.Session manages a user authentication key and/or an access token.\n * It is the first object initialized, and it establishes authentication for the rest of X7.\n * @class\n */\nimport _ from 'underscore';\nimport {getPublicProperty} from '@netx/core-app-next/utils/getPublicProperty';\nimport SAMLServicesCollection from '@netx/core-auth/collections/samlServices';\nimport authConfig from '@netx/core-auth/config';\nimport {getCurrentPortalProp} from '@netx/core-cms-next/utils/getCurrentPortalProp';\nimport {isBrandPortal} from '@netx/core-cms-next/utils/isBrandPortal';\nimport coreConfig from '@netx/core-next/config';\nimport {localStore} from '@netx/core-next/instance';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport {URL} from '@netx/core-next/url';\nimport {UserPref} from '@netx/core-user-next/constants';\nimport {isPublicUser} from '@netx/core-user-next/utils';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {userSource} from '@netx/core-user/properties/user';\nimport Netx from '@netx/core/bootstrap';\nimport Base from './netx-model';\n\nclass Session extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @type {object}\n\t */\n\tget xhrTrackProgress() {\n\t\treturn {\n\t\t\tgetAdvertisedSamlServices: true,\n\t\t\tgetPublicMethods: true,\n\t\t};\n\t}\n\n\t/**\n\t * @type {object}\n\t */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tgetAdvertisedSamlServices: 'Checking SAML services',\n\t\t\tgetPublicMethods: 'Fetching public methods',\n\t\t};\n\t}\n\n\t/**\n\t * @type {object}\n\t */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tgetAdvertisedSamlServices: 'Checked SAML services',\n\t\t\tgetPublicMethods: 'Fetched public methods',\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} defaults - Default attributes\n\t * @property {array} defaults.browserInfo - TODO: document\n\t * @property {object} defaults.browserLimits - Lowest supported browser versions\n\t * @property {boolean} defaults.borwserOk - Browser version confirmed\n\t * @property {string} defaults.loginMsg - Message to display at login screen\n\t * @property {string} defaults.loginMsgClass - CSS class for login screen message ( danger, info, success, warning )\n\t * @property {string} defaults.password - Password (authentication)\n\t * @property {array} defaults.publicMethods - Any array of publicly accessible methods\n\t * @property {string} defaults.sessionKey - Session key\n\t * @property {string} defaults.token - Token key\n\t * @property {string} defaults.username - Username (authentication)\n\t * @property {module:core/lib/netx-collection} defaults.samlServices - SAML services\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tbrowserInfo: [],\n\t\t\tbrowserLimits: {\n\t\t\t\tchrome: 25,\n\t\t\t\tcrios: 1,\n\t\t\t\tfirefox: 20,\n\t\t\t\tmsie: 10,\n\t\t\t\tphantomjs: 1,\n\t\t\t\tsafari: 5,\n\t\t\t\ttrident: 6,\n\t\t\t},\n\t\t\tbrowserOk: false,\n\t\t\tloginMsg: '',\n\t\t\tloginMsgClass: '',\n\t\t\tpassword: '',\n\t\t\tpublicMethods: [],\n\t\t\tsessionKey: '',\n\t\t\ttoken: '',\n\t\t\tusername: '',\n\t\t\tloggedInAsOtherUser: false,\n\t\t\tsamlServices: new SAMLServicesCollection(),\n\t\t};\n\t}\n\n\t/**\n\t * @todo: Document why we're using clientAttrs here & what is meant by it?\n\t * There's no calls to session.self() in the codebase that I can find...\n\t * @type {array}\n\t */\n\tget clientAttrs() {\n\t\treturn [\n\t\t\t'browserLimits',\n\t\t\t'loggedInAsOtherUser',\n\t\t\t'loginMsg',\n\t\t\t'loginMsgClass',\n\t\t\t'publicMethods',\n\t\t];\n\t}\n\n\t/**\n\t * Methods for this model\n\t * @type {object}\n\t * @memberof Session\n\t * @property {object} methods - Methods for this model\n\t * @property {method} methods.getPublicMethods - Get public methods\n\t * @property {method} methods.getSamlServices - Get SAML services for SSO login\n\t * @property {method} methods.testSession - Test if session is valid\n\t * @property {method} methods.testToken - Test if token is valid\n\t * @property {method} methods.testAuthentication - Test if authenticated\n\t * @property {method} methods.tickle - Tickle the session (keep alive)\n\t * @property {methos} methods.triggerAnAPIError - Sometimes, while testing, it's useful to be able to trigger an api error by calling an undefined api method\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tgetPublicMethods: ['getPublicMethods'],\n\t\t\tgetSamlServices: ['getAdvertisedSamlServices'],\n\t\t\ttestAuthentication: ['getAuthentication'],\n\t\t\ttestSession: ['getSelf'],\n\t\t\ttestToken: ['isTokenValid', 'token'],\n\t\t\t_tickle: ['getProductVersion'],\n\t\t\ttriggerAnAPIError: ['undefinedAPIMethod'],\n\t\t};\n\t}\n\n\t/**\n\t * Parsers for this model\n\t * @type {object}\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\tgetPublicMethods(methods) {\n\t\t\t\tthis.set({publicMethods: methods});\n\t\t\t},\n\t\t\t/**\n\t\t\t * Gets saml services and saves them as a collection, used as login childViews\n\t\t\t * @param {array} samlServices\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetSamlServices(samlServices, opts) {\n\t\t\t\t// samlServices.push({\n\t\t\t\t// \tname: 'Custom',\n\t\t\t\t// \ttype: 'saml',\n\t\t\t\t// \tdescription: 'Yo, here is a description',\n\t\t\t\t// \tlabel: 'Login with Custom',\n\t\t\t\t// });\n\t\t\t\tthis.get('samlServices').reset(samlServices);\n\t\t\t\t// this.set({samlServices: new SAMLServicesCollection(samlServices)});\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * Used?\n\t\t * @type {string}\n\t\t * @default\n\t\t */\n\t\tthis.key = opts.key || null;\n\t\t/**\n\t\t * 30 minutes\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.length = opts.length || 1800000;\n\n\t\tthis.resetLogoutTimer = _.debounce(this.resetLogoutTimer, 1000);\n\n\t\t// Auto session tickling\n\t\tconst sessionTicklers = (this.sessionTicklers = new Base());\n\t\tthis.addSubModel(sessionTicklers);\n\n\t\t// Listen Up!\n\t\t// Session listens for expiration event\n\t\tthis.listenTo(dispatcher, 'session:expire', this.expireSession)\n\t\t\t.listenTo(dispatcher, 'session:tickle', this.tickle)\n\t\t\t.listenTo(dispatcher, 'session:tickle:add', (key) =>\n\t\t\t\tsessionTicklers.set(key, true),\n\t\t\t)\n\t\t\t.listenTo(dispatcher, 'session:tickle:remove', (key) =>\n\t\t\t\tsessionTicklers.unset(key),\n\t\t\t)\n\t\t\t.listenTo(sessionTicklers, 'change', () => {\n\t\t\t\tthis.shouldBeTickling() ? this.startTickling() : this.stopTickling();\n\t\t\t});\n\n\t\t// Listen for route changes:\n\t\tthis.listenTo(dispatcher, 'routed', this.getToken);\n\t\tthis.getToken();\n\n\t\t// Set portal context on initial load and then listen\n\t\tthis.updatePortalContext();\n\n\t\t// Check against this time to figure out how long user has been inactive\n\t\tthis.lastTickled = this.inactivityStartTime = Date.now();\n\n\t\t// Listen for visbility change\n\t\tdocument.addEventListener(\n\t\t\t'visibilitychange',\n\t\t\tthis.visibilityStateChanged.bind(this),\n\t\t\tfalse,\n\t\t);\n\n\t\t// Establish a connection, and trigger 'netx:configured' upon success.\n\t\t//\n\t\t// These settings from config.js configure our access method.\n\t\t// If DAM_URL is set, configure CORS or proxy\n\t\t// (But if DAM_URL == the local URL, ignore it.)\n\t\tthis.configured = new $.Deferred();\n\n\t\tthis.testAjax(URL.api, {\n\t\t\tsuccess: (data, status, jqX) => {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.configured.resolve(data.result);\n\t\t\t\t}, 0);\n\t\t\t},\n\t\t});\n\n\t\t// Avoid oneself not being defined to those who are listening\n\t\t_.defer(() => {\n\t\t\t// Until we can handle this better\n\t\t\tif (!this.browserTestOk()) {\n\t\t\t\tdispatcher.trigger('app:browser:override:confirmed');\n\t\t\t\tconsole.warn('Your browser may not be 100% supported.');\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean} Authenticated\n\t */\n\tauthenticated() {\n\t\treturn !this.requiresLogin() || this.get('sessionKey') || this.getToken();\n\t}\n\n\tisAuthenticatedAsPublicUser() {\n\t\treturn isPublicUser() && this.authenticated();\n\t}\n\n\tcanAuthenticateAsPublicUser() {\n\t\treturn getCurrentPortalProp('requireLogin') === false;\n\t}\n\n\t// TODO: test what new portals look like from pre this branch - all the upgrade stuff\n\trequiresLogin() {\n\t\treturn (\n\t\t\t!this.canAuthenticateAsPublicUser() || localStore.get('requestingLogin')\n\t\t);\n\t}\n\n\t/**\n\t * Get session duration\n\t * @param {boolean} asMinutes\n\t */\n\tgetSessionDuration(asMinutes = false) {\n\t\tconst defaultMinutes = this.length / 1000 / 60;\n\t\t// DAM-14660 - keep the timeout under a 32 bit integer\n\t\tconst minutes = Math.min(\n\t\t\tgetPreference(UserPref.SESSION_DURATION) || defaultMinutes,\n\t\t\t35791,\n\t\t);\n\t\treturn asMinutes ? minutes : minutes * 60 * 1000;\n\t}\n\n\t/**\n\t * Get session tickle interval (based on half the defined session duration minus one second)\n\t * @method\n\t * @return Tickle interval in `ms`\n\t */\n\tgetSessionTickleInterval() {\n\t\t// We will attempt to \"tickle\" 4 times in a session duration this way we do not run\n\t\t// into anything funny about timing with the response from the server or our debounce\n\t\t// of the `resetLogoutTimer` method.\n\t\t// This also ensures that if a user had just typed, a short moment after a tickle just\n\t\t// occurred, we do not risk the the session timing out if they immediately stop typing\n\t\t// after that point\n\t\t// Always keep a minimum of 59 seconds between \"tickles\" (no one should be setting the\n\t\t// session duration to less than 2 minutes)\n\t\treturn Math.max(this.getSessionDuration() / 4, 1000 * 59);\n\t}\n\n\t//////////////////////////////////////////////////\n\t//\n\t// General testing methods\n\t//\n\t//////////////////////////////////////////////////\n\n\t/**\n\t * Test for remote DAM access\n\t * @param {string} url API endpoint you are trying to access\n\t * @param {object} opt AJAX options object (jquery)\n\t */\n\ttestAjax(url, opt) {\n\t\treturn $.ajax({\n\t\t\turl: `${url}/getPublicProperties`,\n\t\t\ttype: 'POST',\n\t\t\tcache: false,\n\t\t\txhrFields: {\n\t\t\t\twithCredentials: true,\n\t\t\t},\n\t\t\tdataType: 'json',\n\t\t\tcontentType: 'application/json; charset=UTF-8',\n\t\t\tdata: JSON.stringify({\n\t\t\t\tdataContext: 'json',\n\t\t\t\tjsonrpc: '2.0',\n\t\t\t\tmethod: 'getPublicProperties',\n\t\t\t\tid: _.uniqueId(),\n\t\t\t\tparams: [],\n\t\t\t}),\n\t\t\tparseData: false,\n\t\t\tsuccess: opt.success,\n\t\t\terror: opt.error,\n\t\t});\n\t}\n\n\t/**\n\t * Test for supported browser\n\t * @return {boolean} Broser is supported.\n\t */\n\tbrowserTestOk() {\n\t\tvar ua = navigator.userAgent,\n\t\t\tN = navigator.appName,\n\t\t\ttem,\n\t\t\tM =\n\t\t\t\tua.match(\n\t\t\t\t\t/(opera|chrome|safari|firefox|msie|trident|phantomjs|crios)\\/?\\s*([\\d.]+)/i,\n\t\t\t\t) || [];\n\t\tM = M[2] ? [M[1], M[2]] : [N, navigator.appVersion, '-?'];\n\t\tif (M && (tem = ua.match(/version\\/([.\\d]+)/i)) !== null) {\n\t\t\tM[2] = tem[1];\n\t\t}\n\n\t\tthis.set('browserInfo', M.join(' ').split(' '));\n\n\t\tvar browserInfo = this.get('browserInfo');\n\t\tvar limits = this.get('browserLimits');\n\n\t\tif (browserInfo.length) {\n\t\t\tif (\n\t\t\t\t(browserInfo[0].toLowerCase() === 'chrome' &&\n\t\t\t\t\tparseInt(browserInfo[1]) >= limits.chrome) ||\n\t\t\t\t(browserInfo[0].toLowerCase() === 'firefox' &&\n\t\t\t\t\tparseInt(browserInfo[1]) >= limits.firefox) ||\n\t\t\t\t(browserInfo[0].toLowerCase() === 'msie' &&\n\t\t\t\t\tparseInt(browserInfo[1]) >= limits.msie) ||\n\t\t\t\t(browserInfo[0].toLowerCase() === 'trident' &&\n\t\t\t\t\tparseInt(browserInfo[1]) >= limits.trident) ||\n\t\t\t\t(browserInfo[0].toLowerCase() === 'phantomjs' &&\n\t\t\t\t\tparseInt(browserInfo[1]) >= limits.phantomjs) ||\n\t\t\t\t(browserInfo[0].toLowerCase() === 'crios' &&\n\t\t\t\t\tparseInt(browserInfo[1]) >= limits.crios)\n\t\t\t) {\n\t\t\t\tthis.set('browserOk', true);\n\t\t\t} else if (\n\t\t\t\tbrowserInfo[0].toLowerCase() === 'safari' &&\n\t\t\t\tbrowserInfo.length === 3 &&\n\t\t\t\tparseInt(browserInfo[2]) >= limits.safari\n\t\t\t) {\n\t\t\t\tthis.set('browserOk', true);\n\t\t\t}\n\t\t}\n\t\t// Check that either the browser is actually ok or that there is a cookie override\n\t\tif (this.get('browserOk') || this.getCookie('browserOk')) {\n\t\t\tif (this.getCookie('browserOk')) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'This browser %o is not officially supported',\n\t\t\t\t\tthis.get('browserInfo'),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t///////////////////////////////////////////////\n\t//\n\t// Browser cookie CRUD methods:\n\t//\n\t///////////////////////////////////////////////\n\n\t/**\n\t * getCookie Gets the value of a clientside cookie\n\t * @param {string} cookie\n\t * @return {string | undefined}\n\t */\n\tgetCookie(cookie) {\n\t\tvar i,\n\t\t\tx,\n\t\t\ty,\n\t\t\tCookies = document.cookie.split(';');\n\t\tfor (i = 0; i < Cookies.length; i++) {\n\t\t\tx = Cookies[i].substr(0, Cookies[i].indexOf('='));\n\t\t\ty = Cookies[i].substr(Cookies[i].indexOf('=') + 1);\n\t\t\tx = x.replace(/^\\s|\\s+$/g, '');\n\t\t\tif (x == cookie) {\n\t\t\t\treturn unescape(y);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * setCookie Sets the value of a clientside cookie\n\t * @param {string} cname name of cookie\n\t * @param {string} cvalue value of cookies\n\t * @param {number} exdays expire time (in days)\n\t * @param {string} path cookie path (defaults to /)\n\t */\n\tsetCookie(cname, cvalue, exdays = 0, path = '/') {\n\t\tvar expires = '';\n\t\tif (exdays) {\n\t\t\tvar d = new Date();\n\t\t\td.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000); // converting days to milliseconds 24 hours * 60 minutes * 60 seconds * 1000 millisecs.\n\t\t\texpires = `expires=\"${d.toUTCString()}\";`;\n\t\t}\n\t\tdocument.cookie = `${cname}=${escape(cvalue)}; ${expires} path=${path};`;\n\t\t// TODO: return the cookie? Define a cookie object??\n\t}\n\n\t/**\n\t * Delete the clientside cookie\n\t * @param {string} name\n\t */\n\tdeleteCookie(name) {\n\t\tthis.setCookie(name, '', -1);\n\t}\n\n\t///////////////////////////////////////////////\n\t//\n\t// NetX session key CRUD methods:\n\t//\n\t///////////////////////////////////////////////\n\n\t/**\n\t * Session.getKey() Checks to see if we are holding a session key\n\t * @return {Boolean}\n\t */\n\tgetKey() {\n\t\t// Did we already store it?\n\t\tvar sessionKey = this.get('sessionKey');\n\n\t\tif (!sessionKey) {\n\t\t\t// Is there a session key in our route? If so, it should take precedence.\n\t\t\t// (This implements the 'login as other user' feature for admins.\n\t\t\t// Session keys are alphanumeric strings with no other punctuation.\n\t\t\tvar match = window.location.hash.match(/^#session\\/([0-9a-zA-Z]+)/);\n\t\t\tif (match) {\n\t\t\t\tsessionKey = match[1];\n\t\t\t\tthis.set({loggedInAsOtherUser: true}); // note how we found this key\n\t\t\t} else {\n\t\t\t\t// Is a session key cookie set on our browser?\n\t\t\t\tsessionKey = this.getCookie('sessionKey');\n\t\t\t}\n\t\t}\n\n\t\tif (sessionKey) {\n\t\t\t// Cache the key locally.\n\t\t\tthis.setKey(sessionKey);\n\t\t}\n\n\t\treturn sessionKey;\n\t}\n\n\t/**\n\t * Set session key\n\t * @param {string} key\n\t */\n\tsetKey(key) {\n\t\tthis.set({sessionKey: key});\n\t}\n\n\t/**\n\t * Delete session key\n\t */\n\tdeleteKey() {\n\t\tthis.deleteCookie('sessionKey');\n\t\tthis.set('sessionKey', undefined);\n\t}\n\n\t///////////////////////////////////////////////\n\t//\n\t// Access token CRUD methods:\n\t//\n\t///////////////////////////////////////////////\n\n\t/**\n\t * Checks to see if the route contains a token.\n\t * @return {string} the token string\n\t */\n\tgetToken() {\n\t\t// Q: Should we always check the URL, or only check if if we haven't detected a token already?\n\t\t// In other words, should the token, once detected, grant access to other routes that don't contain it?\n\t\t// A: That use case hasn't come up yet. Until it does, we always check the URL.\n\n\t\t// Tokens in URLs match the official UUID spec: https://en.wikipedia.org/wiki/Universally_unique_identifier\n\t\t// They are \"version 4\" UUIDs. The pattern can get more anal that this, but basically it's 36 characters that are either hexadecimal or dash:\n\t\tconst match =\n\t\t\twindow.location.hash.match(/request\\/([0-9a-fA-F-]{36})/) || null;\n\n\t\tmatch == null ? this.deleteToken() : this.setToken(match[1].toString());\n\n\t\treturn this.get('token');\n\t}\n\n\t/**\n\t * Set token\n\t * @param {string} token\n\t */\n\tsetToken(token) {\n\t\tthis.set({token});\n\t}\n\n\t/**\n\t * Delete token\n\t */\n\tdeleteToken() {\n\t\tthis.set({token: undefined});\n\t\tthis.deleteCookie('tokenKey'); // backwards-compatability\n\t}\n\n\t//////////////////////////////////////////////\n\t//\n\t// Session management:\n\t// testing, timing, tickling.\n\t//\n\t//////////////////////////////////////////////\n\n\t/**\n\t * Session.isValid() Return a promise that will resolve or reject on whether we have a valid session,\n\t * either via a session key or an access token\n\t * @return {Promise}\n\t */\n\tisValid() {\n\t\tvar d = new $.Deferred();\n\n\t\t// 1) Do we have an access token set? If so, test it.\n\t\tif (this.getToken()) {\n\t\t\treturn this.testToken();\n\t\t}\n\n\t\t// 2) Do we have a session key at all? If not, we are S.O.L.\n\t\tif (!this.getKey()) {\n\t\t\treturn d.reject().promise(); // no session!\n\t\t}\n\n\t\t// 3) We have a session key, but is it valid?\n\t\tthis.testSession().then(\n\t\t\tfunction (data) {\n\t\t\t\t// If this is an internal user account, check if we\n\t\t\t\t// are logged in as public user and reject\n\t\t\t\tif (\n\t\t\t\t\tthis.requiresLogin() &&\n\t\t\t\t\tdata.userSource === userSource.INTERNAL &&\n\t\t\t\t\tdata.login === getPublicProperty('viewer.userLogin')\n\t\t\t\t) {\n\t\t\t\t\tthis.deleteCookie('sessionKey');\n\t\t\t\t\td.reject(); // public user!\n\t\t\t\t}\n\t\t\t\t// If not public user resolve\n\t\t\t\td.resolve(); // valid session!\n\t\t\t},\n\t\t\tfunction (data) {\n\t\t\t\t// If the sessionKey is not valid, erase it\n\t\t\t\tthis.deleteCookie('sessionKey');\n\t\t\t\td.reject(); // invalid session!\n\t\t\t},\n\t\t);\n\n\t\treturn d.promise();\n\t}\n\n\tshouldBeTickling() {\n\t\treturn (\n\t\t\tauthConfig.TICKLE_SESSION ||\n\t\t\t!!Object.keys(this.sessionTicklers.attributes).length\n\t\t);\n\t}\n\n\t// Session Tickling\n\t// ================\n\t// If enabled, we tickle the server regularly to make sure it doesn't time us out.\n\n\tresetTickler() {\n\t\tif (!this.tickler && !this.shouldBeTickling()) return;\n\n\t\tthis.stopTickling();\n\t\tthis.startTickling(true);\n\t}\n\n\t/**\n\t * Session.startTickling Starts an interval timer to tickle the server regularly\n\t */\n\tstartTickling(noInitialTickle = false) {\n\t\tif (this.tickler) return;\n\n\t\tconst interval = this.getSessionTickleInterval();\n\n\t\tthis.tickler = setInterval(this.tickle.bind(this), interval);\n\t\t!noInitialTickle && this.tickle();\n\t}\n\n\t/**\n\t * Session.stopTickling Removes the interval timer set by startTickling()\n\t */\n\tstopTickling() {\n\t\tthis.tickler && clearInterval(this.tickler);\n\t\tdelete this.tickler;\n\t}\n\n\t/**\n\t * Session.beTickling Starts the tickling if it hasn't already been started.\n\t */\n\tbeTickling() {\n\t\tif (this.tickler) return;\n\t\tthis.startTickling();\n\t}\n\n\t/**\n\t * Tickle while preventing over tickling\n\t * @method\n\t */\n\ttickle() {\n\t\tif (this.getToken() || !this.getKey()) return;\n\n\t\tconst now = Date.now();\n\t\t// Do not tickle more than once per minute\n\t\tif (now - this.lastTickled >= 1000 * 60) {\n\t\t\tthis.lastTickled = now;\n\t\t\tthis._tickle();\n\t\t}\n\t}\n\n\t// Session Timer\n\t// ================\n\t// A session timer counts down how many seconds remain before the server times us out.\n\t// Here, we watch the clock & warn the user when timeout approaches.\n\t// Note that session tickling prevents session timeout. Use one or the other, but not both.\n\n\t/**\n\t * resetLogoutTimer starts an interval timer to trigger an event 60 seconds before the DAM logs us out.\n\t */\n\t// NOTE: the function is debounced because it will be called on every successful RPC call.\n\tresetLogoutTimer() {\n\t\t// DAM-16342 - if on a token, never timeout session,\n\t\t// never dispatch 'netx:session:timeoutWarning'\n\t\tif (this.getToken()) return;\n\n\t\tthis.lastTickled = this.inactivityStartTime = Date.now();\n\t\tconst timeoutMinutes = this.getSessionDuration(true);\n\n\t\tif (this.timer) {\n\t\t\tclearTimeout(this.timer);\n\t\t}\n\n\t\tthis.timer = setTimeout(() => {\n\t\t\t// Only trigger the warning if we are actually logged in, via key or token\n\t\t\t// and if the page is hidden, don't trigger the timeout warning\n\t\t\tif (this.getKey() && document.visibilityState === 'visible') {\n\t\t\t\tdispatcher.trigger('netx:session:timeoutWarning');\n\t\t\t}\n\t\t}, 60 * 1000 * (timeoutMinutes - 1)); // time out 1 minute (60000 milliseconds) before the session duration (which is expressed in minutes)\n\n\t\t// Accidentally removed in 8.8, leading to the \"why am i logged out when i reload\" problem:\n\t\tthis.postponeSessionTimeout(timeoutMinutes);\n\t\t// (In 8.9 we will manage the session entirely on the client, so this will change ...)\n\t}\n\n\t/**\n\t * Manipulate cookies to signal that the session was ended due to a timeout.\n\t * (So that the login screen display a relelevant message.)\n\t */\n\texpireSession() {\n\t\t// DAM-16342 - if on a token, never timeout session\n\t\t// just in case session:expire is dispatched\n\t\tif (this.getToken() || !this.getKey()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.deleteCookie('sessionKey');\n\t\tthis.setCookie('sessionExpired', 'EXPIRED', 1);\n\t\tdispatcher.trigger('app:stop');\n\t}\n\n\t/**\n\t * Postpone session cookie expiration: set the expire time of the session cookie (if any) to 30 minutes from now.\n\t * @param {number} duration Minutes\n\t */\n\tpostponeSessionTimeout(duration) {\n\t\tvar cookie = this.getCookie('sessionKey');\n\t\tif (!cookie) return false;\n\n\t\tif (!duration) duration = this.getSessionDuration(true);\n\n\t\t// NOTE: converting duration from minutes to days: 60 mins * 24 hours = 1 day.\n\t\tthis.setCookie('sessionKey', cookie, duration / (60 * 24));\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Check for, and clear, the session-expired cookie.\n\t */\n\tsessionExpired() {\n\t\tif (this.getCookie('sessionExpired') == 'EXPIRED') {\n\t\t\tthis.deleteCookie('sessionExpired');\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Update the portalContext cookie to reflect the current theme\n\t */\n\tupdatePortalContext() {\n\t\t// Update the portalContext cookie to reflect the current theme\n\t\tthis.setCookie('portalContext', window.location.pathname);\n\t}\n\n\t/**\n\t * The browser page visibility has changed\n\t */\n\tvisibilityStateChanged() {\n\t\tif (document.visibilityState === 'visible') {\n\t\t\t// Set 'portalContext' cookie (DAM-9257)\n\t\t\tthis.updatePortalContext();\n\n\t\t\t// If user backgrounds Netx tab for longer than session,\n\t\t\t// they should be kicked to login screen when tab becomes active.\n\t\t\tconst sessionDuration = this.getSessionDuration();\n\n\t\t\tconst sessionExpired =\n\t\t\t\tDate.now() - this.inactivityStartTime >= sessionDuration;\n\n\t\t\tif (sessionExpired) {\n\t\t\t\t// If multiple Netx tabs are open, this timeout could be triggered.\n\t\t\t\t// Let's ask the server if the session really is expired\n\t\t\t\tthis.testSession()\n\t\t\t\t\t.then(this.resetLogoutTimer.bind(this))\n\t\t\t\t\t.catch(this.expireSession.bind(this));\n\t\t\t}\n\t\t}\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Session';\n\t}\n}\n\nexport default Session;\n","import Base from 'netxcore@netx/core/lib/netx-session';\nimport {getUserLevel} from '@netx/core-user-next/utils/getUserLevel';\n\n/** @override */\nexport default class Session extends Base {\n\t/**\n\t * @override\n\t * @fires module:auth#auth:user:logout\n\t */\n\texpireSession() {\n\t\tif (getUserLevel() <= 0) return;\n\n\t\tthis.deleteCookie('sessionKey');\n\t\tthis.setCookie('sessionExpired', 'EXPIRED', 1);\n\n\t\tdispatcher.trigger('auth:user:logout');\n\t}\n}\n","import {setGlobal} from '@netx/core-next/utils/setGlobal';\nimport Session from '@netx/core/lib/netx-session';\n\nexport const session = new Session();\n\nsetGlobal({session});\n\nexport default session;\n","/**\n * Reflects the records for saved carts in the DAM.\n * @class\n */\nimport AssetSetModel from '@netx/core-asset/models/assetSet';\nimport {types as assetSetTypes} from '@netx/core-asset/properties/assetSets';\nimport Base from '@netx/core-share/collections/sharedResources';\nimport Model from '../models/savedCart';\n\nexport default class SavedCarts extends Base {\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tgetSharedResourcesForUser() {\n\t\t\t\treturn this.isFiltered()\n\t\t\t\t\t? 'Filtering saved carts'\n\t\t\t\t\t: 'Loading saved carts';\n\t\t\t},\n\t\t\tgetAllCarts: 'Loading saved carts',\n\t\t\tgetUserCarts: 'Loading saved carts',\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tgetSharedResourcesForUser() {\n\t\t\t\treturn this.isFiltered()\n\t\t\t\t\t? 'Filtered saved carts'\n\t\t\t\t\t: 'Loaded saved carts';\n\t\t\t},\n\t\t\tgetAllCarts: 'Loaded saved carts',\n\t\t\tgetUserCarts: 'Loaded saved carts',\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} methods - Methods for this collection\n\t * @property {method} methods.fetchBeans - Fetch saved cart beans\n\t * @property {method} methods.fetchBeansForUser - Fetch saved cart beans for user\n\t */\n\tget methods() {\n\t\treturn _.extend(super.methods, {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchBeans(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'getAllCarts',\n\t\t\t\t\tthis.modeFilters,\n\t\t\t\t\tthis.filterStr,\n\t\t\t\t\tthis.pager.getPageDTO(),\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {number} userId User id\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchBeansForUser(userId, opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'getUserCarts',\n\t\t\t\t\tuserId,\n\t\t\t\t\tthis.modeFilters,\n\t\t\t\t\tthis.filterStr,\n\t\t\t\t\tthis.pager.getPageDTO(),\n\t\t\t\t];\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * @property {object} parsers - Parsers for this collection\n\t * @property {method} parsers.fetchBeans - Parse response of saved cart beans\n\t * @property {method} parsers.fetchBeansForUser - Parse response of saved cart beans\n\t */\n\tget parsers() {\n\t\treturn _.extend(super.parsers, {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} data Saved carts\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchBeans(data, opts = {}) {\n\t\t\t\tthis.set(data, _.extend({merge: true}, opts));\n\t\t\t\t!opts.silent && this.trigger('sync', this, data, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} data Saved carts\n\t\t\t * @param {number} userId User id\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchBeansForUser(data, userId, opts = {}) {\n\t\t\t\tthis.set(data, opts);\n\t\t\t\t!opts.silent && this.trigger('sync', this, data, opts);\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * @override\n\t * @listens module:cart#cart:saved:delete:success\n\t * @listens module:cart#cart:save:current:success\n\t */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\topts.resourceName = 'savedCart';\n\n\t\tsuper(models, opts);\n\n\t\t// Set name filter if provided\n\t\tthis.filterStr = opts.filterStr || this.filterStr;\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(dispatcher, 'cart:saved:delete:success', (savedCart) => {\n\t\t\tconst model = this.get(savedCart.id);\n\t\t\tmodel && this.remove(model);\n\t\t}).listenTo(dispatcher, 'cart:save:current:success', (savedCart) => {\n\t\t\tthis.matchesFilters(savedCart) && this.unshift(savedCart.attributes);\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} ids Saved cart ids\n\t * @param {array} assetIds Asset ids\n\t * @return {Promise -> Netx.Collections.SavedCarts}\n\t */\n\taddAssets(ids, assetIds = []) {\n\t\t// Get all carts involved\n\t\treturn this.getCarts(ids || []).then((savedCarts) => {\n\t\t\t// Add current cart assets and store the promises\n\t\t\tconst addAssets = savedCarts.map((savedCart) =>\n\t\t\t\tsavedCart.addAssetsToCart(assetIds),\n\t\t\t);\n\t\t\t// Wait for everything to finish\n\t\t\treturn $.when.apply($, addAssets).then(() => {\n\t\t\t\treturn savedCarts;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} ids Saved cart ids to update\n\t * @return {Promise -> Netx.Collections.SavedCarts}\n\t */\n\taddCurrentCart(ids) {\n\t\tif (!ids || !ids.length) return new $.Deferred().resolve([]);\n\t\t// Get all carts involved\n\t\treturn this.getCarts(ids || []).then((savedCarts) => {\n\t\t\t// Add current cart assets and store the promises\n\t\t\tconst addAssets = savedCarts.map((savedCart) =>\n\t\t\t\tsavedCart.addCurrentCart(),\n\t\t\t);\n\t\t\t// Wait for everything to finish\n\t\t\treturn Promise.all(addAssets).then(() => {\n\t\t\t\treturn savedCarts;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} ids Saved cart ids\n\t * @param {Netx.Collections.SearchRules} search Search rules\n\t * @return {Promise -> Netx.Collections.SavedCarts}\n\t */\n\taddSearch(ids, search) {\n\t\t// Get all carts involved\n\t\treturn this.getCarts(ids || []).then((savedCarts) => {\n\t\t\t// Add current cart assets and store the promises\n\t\t\tconst addAssets = savedCarts.map((savedCart) =>\n\t\t\t\tsavedCart.addFacetedSearchToCart(search),\n\t\t\t);\n\t\t\t// Wait for everything to finish\n\t\t\treturn $.when.apply($, addAssets).then(() => {\n\t\t\t\treturn savedCarts;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} carts An array of cart objects `{title: <title>}`\n\t * @param {object} opts Options\n\t */\n\tcreateNewCarts(carts, opts = {}) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!carts) resolve([]);\n\n\t\t\tconst newCarts = [];\n\t\t\t// Save each cart after the other has completed to avoid data locks on the server\n\t\t\tconst next = () => {\n\t\t\t\tif (!carts.length) return resolve(newCarts);\n\n\t\t\t\tconst cart = new Model(carts.shift());\n\t\t\t\tcart.save(opts).then(() => {\n\t\t\t\t\tnewCarts.push(cart);\n\t\t\t\t\tnext();\n\t\t\t\t}, reject);\n\t\t\t};\n\n\t\t\tnext();\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} id Cart id\n\t * @return {module:cart/models/savedCart}\n\t */\n\tgetCart(id) {\n\t\tlet savedCart = this.get(id);\n\t\tif (savedCart) {\n\t\t\treturn new $.Deferred().resolve(savedCart);\n\t\t}\n\n\t\treturn new Model({\n\t\t\t[Model.prototype.idAttribute || 'id']: id,\n\t\t})\n\t\t\t.fetch()\n\t\t\t.then(() => {\n\t\t\t\treturn savedCart;\n\t\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} ids Cart ids\n\t * @return {Netx.Collections.SavedCarts}\n\t */\n\tgetCarts(ids) {\n\t\t// Get cart data for any cartIds passed\n\t\tconst carts = _.compact(\n\t\t\t_.map(ids, (id) => (id && this.getCart(id)) || null),\n\t\t);\n\t\t// Wait for all cart models to be available\n\t\treturn $.when.apply($, carts).then((...carts) => {\n\t\t\treturn new this.constructor([...carts]);\n\t\t});\n\t}\n\n\t/**\n\t * Get all carts that current user can edit\n\t * @method\n\t * @return {Netx.Collections.SavedCarts}\n\t * @todo this will not work once we have paging enforced - this will need to fetch and return a promise\n\t * but the actions need to be reworked to allow for promises in enable tests\n\t */\n\tgetEditableCarts() {\n\t\treturn new this.constructor(this.filter((cart) => cart.canEdit()));\n\t}\n\n\t/**\n\t * Check if we have any carts the current user can edit\n\t * @method\n\t */\n\thasEditableCarts() {\n\t\treturn this.getEditableCarts().length > 0;\n\t}\n\n\t/**\n\t * @method\n\t * @return {module:asset/models/assetSet} AssetSet\n\t */\n\ttoAssetSet() {\n\t\treturn new AssetSetModel({\n\t\t\ttype: assetSetTypes.cart,\n\t\t\tids: this.ids(),\n\t\t\tlabel: i18n.t('i18n.savedCart'),\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SavedCarts';\n\t}\n}\n","/**\n * Saved cart model holds data regarding a saved cart instance\n * Saved carts are part of the shared resource system\n * `fetch` will get you the shared resource bean for the saved cart\n * `fetchBean` will get you the actual saved cart bean\n * @class\n */\n\nimport Base from '@netx/core-share/models/sharedResource';\n\nimport AssetSetModel from '@netx/core-asset/models/assetSet';\nimport CartAssetsCollection from '../collections/cartAssets';\nimport AssetSearchRulesCollection from '@netx/core-search/collections/searchRules_assets';\n\nimport {types as assetSetTypes} from '@netx/core-asset/properties/assetSets';\nimport {URL} from '@netx/core-next/url';\nimport customConfig from '../config';\n\nexport default class SavedCart extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} methods - Methods for this model\n\t * @property {method} methods.create - Save new cart\n\t * @property {method} methods.read - Fetch saved cart\n\t * @property {method} methods.remove - Destroy saved cart\n\t * @property {method} methods.update - Update saved cart\n\t *\n\t * @property {method} methods.addAssetsToCart - Add assets to saved cart\n\t * @property {method} methods.addFacetedSearchToCart- Add search to saved cart\n\t * @property {method} methods.archiveCartAssets - Archive assets in saved cart\n\t * @property {method} methods.download - Download cart assets\n\t * @property {method} methods.duplicateCart - Duplicate saved cart\n\t * @property {method} methods.expireCartAssets - Set expiration for assets in saved cart\n\t * @property {method} methods.fetchBean - Fetch saved search bean (fetch gets the shared resource)\n\t * @property {method} methods.inspect - Inspect saved cart contents\n\t * @property {method} methods.removeAssetsFromCart - Remove assets from saved cart\n\t * @property {method} methods.setCart - Set cart data\n\t * @property {method} methods.unarchiveCartAssets - Unarchive assets in saved cart\n\t */\n\tget methods() {\n\t\treturn _.extend(super.methods, {\n\t\t\t/**\n\t\t\t * Create saved cart\n\t\t\t * @method\n\t\t\t * @private\n\t\t\t */\n\t\t\tcreate(opts) {\n\t\t\t\t// TODO: Need the DAM to return full beans on creation\n\t\t\t\t// in this case (all shared resource cases) it would be the shared resource and not the underlying cart bean itself\n\t\t\t\treturn this.setCart().then((id) => {\n\t\t\t\t\tthis.set({id: id}, opts);\n\t\t\t\t\treturn this.fetch(opts);\n\t\t\t\t});\n\t\t\t},\n\t\t\t/**\n\t\t\t * Destroy saved cart\n\t\t\t * @method\n\t\t\t */\n\t\t\tremove: ['deleteCart', 'id'],\n\t\t\t/**\n\t\t\t * Update saved cart\n\t\t\t * @method\n\t\t\t */\n\t\t\tupdate: ['setCart', 'id', 'title'],\n\n\t\t\t/**\n\t\t\t * Add assets to saved cart\n\t\t\t * @method\n\t\t\t * @param {array} assets Asset ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\taddAssetsToCart(assets, opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'addAssetsToCart',\n\t\t\t\t\tthis.id,\n\t\t\t\t\t_.tidyAssetList.apply(this, [assets]),\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Add faceted search to cart\n\t\t\t * @method\n\t\t\t */\n\t\t\taddFacetedSearchToCart(selection, opts) {\n\t\t\t\tif (!selection) {\n\t\t\t\t\tthrow new Error('No search selection!');\n\t\t\t\t}\n\n\t\t\t\tconst search = selection.createSearchObject();\n\t\t\t\treturn [\n\t\t\t\t\t'addFacetedSearchToCart',\n\t\t\t\t\tthis.id,\n\t\t\t\t\tsearch.sortField,\n\t\t\t\t\tsearch.sortOrder,\n\t\t\t\t\tsearch.matchCriteria,\n\t\t\t\t\tsearch.elementTypes,\n\t\t\t\t\tsearch.elementSubType1s,\n\t\t\t\t\tsearch.elementSubType2s,\n\t\t\t\t\tsearch.elementValue1s,\n\t\t\t\t\tsearch.elementValue2s,\n\t\t\t\t\tsearch.elementValue3s,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\tselection.searchFacets.selectedValues(),\n\t\t\t\t\tselection.searchFacets.filterMode,\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Archive cart assets\n\t\t\t * @method\n\t\t\t */\n\t\t\tarchiveCartAssets: ['archiveCartAssets', 'id', 'archiveArgs.locationId'],\n\t\t\t/**\n\t\t\t * Download cart assets\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tdownload(opts) {\n\t\t\t\treturn ['downloadAssetsFromSavedCart', this.id, true];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Duplicate saved cart\n\t\t\t * @method\n\t\t\t * @param {string} cartName Saved cart name\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tduplicateCart(cartName, opts) {\n\t\t\t\treturn ['duplicateCart', cartName, this.id];\n\t\t\t},\n\t\t\t/**\n\t\t\t * This works for both expiring and unexpiring\n\t\t\t * Unexpireing just means setting 0 on expirationDate\n\t\t\t * @method\n\t\t\t */\n\t\t\texpireCartAssets: ['expireCartAssets', 'id', 'expirationArgs.date'],\n\t\t\t/**\n\t\t\t * Fetch saved cart\n\t\t\t * @method\n\t\t\t */\n\t\t\tfetchBean: ['getCart', 'id'],\n\t\t\t/**\n\t\t\t * Report on the contents of this cart.\n\t\t\t * @method\n\t\t\t */\n\t\t\tinspect: ['inspectCartContents', 'id'],\n\t\t\t/**\n\t\t\t * Remove assets from saved cart\n\t\t\t * @method\n\t\t\t * @param {array} assets Asset ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tremoveAssetsFromCart(assets, opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'removeAssetsFromCart',\n\t\t\t\t\tthis.id,\n\t\t\t\t\t_.tidyAssetList.apply(this, arguments),\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Set cart data\n\t\t\t * @method\n\t\t\t */\n\t\t\tsetCart: ['setCart', 0, 'title'],\n\t\t\t/**\n\t\t\t * Unarchive cart assets\n\t\t\t * @method\n\t\t\t */\n\t\t\tunarchiveCartAssets: [\n\t\t\t\t'unarchiveCartAssets',\n\t\t\t\t'id',\n\t\t\t\t'unarchiveArgs.type',\n\t\t\t\t'unarchiveArgs.email',\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * @property {object} parsers - Parsers for this model\n\t * @property {method} parsers.addAssetsToCart - Add assets to saved cart\n\t * @property {method} parsers.addFacetedSearchToCart - Add search to saved cart\n\t * @property {method} parsers.fetchBean - Parse response of fetch saved cart bean\n\t * @property {method} parsers.removeAssetsFromCart - Remove assets from saved cart\n\t * @property {method} parsers.setAssetsInCart - Replace contents of saved cart\n\t */\n\tget parsers() {\n\t\treturn _.extend(super.parsers, {\n\t\t\t/**\n\t\t\t * Add assets to saved cart\n\t\t\t * @method\n\t\t\t * @param {number} newCount Saved cart's asset count\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\taddAssetsToCart(newCount, opts) {\n\t\t\t\tthis.set({contentCount: newCount}, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * Add search to saved cart\n\t\t\t * @method\n\t\t\t * @param {number} newCount Saved cart's asset count\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\taddFacetedSearchToCart(newCount, opts) {\n\t\t\t\tthis.set({contentCount: newCount}, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * Remove assets from saved cart\n\t\t\t * @method\n\t\t\t * @param {number} newCount Saved cart's asset count\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tremoveAssetsFromCart(newCount, opts) {\n\t\t\t\tthis.set({contentCount: newCount}, opts);\n\t\t\t},\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tget sharedResourceRoute() {\n\t\treturn `cart-assets/${this.id}`;\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attr Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\t/**\n\t\t * Resource type name\n\t\t * @type {string}\n\t\t */\n\t\topts.resourceName = 'savedCart';\n\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * @memberof module:cart/models/savedCart\n\t\t * @alias archiveArgs\n\t\t * @property {object} archiveArgs - Arguments to the archive cart assets method\n\t\t * @property {number} archiveArgs.locationId - Archive location id\n\t\t */\n\t\tthis.archiveArgs = _.extend(\n\t\t\t{\n\t\t\t\tlocationId: 0,\n\t\t\t},\n\t\t\topts.archiveArgs,\n\t\t);\n\n\t\t/**\n\t\t * For adding/removing assets\n\t\t * Array of asset Ids\n\t\t * @memberof module:cart/models/savedCart\n\t\t * @alias assetArg\n\t\t * @type {array}\n\t\t */\n\t\tthis.assetsArg = opts.assetsArg || [];\n\n\t\t/**\n\t\t * @memberof module:cart/models/savedCart\n\t\t * @alias expirationArgs\n\t\t * @property {object} expirationArgs - Arguments to the expire cart assets method\n\t\t * @property {array} expirationArgs.date - Expiration date to set\n\t\t */\n\t\tthis.expirationArgs = _.extend(\n\t\t\t{\n\t\t\t\tdate: 0,\n\t\t\t},\n\t\t\topts.expirationArgs,\n\t\t);\n\n\t\t/**\n\t\t * @memberof module:cart/models/savedCart\n\t\t * @alias unarchiveArgs\n\t\t * @property {object} unarchiveArgs - Arguments to the unarchive cart assets method\n\t\t * @property {number} unarchiveArgs.unarchiveType - Type of unarchive ( 1 = temporary, 2 = permanently )\n\t\t * @property {string} unarchiveArgs.email - Email address to notify on unarchive complete\n\t\t */\n\t\tthis.unarchiveArgs = _.extend(\n\t\t\t{\n\t\t\t\ttype: 1,\n\t\t\t\temail: '',\n\t\t\t},\n\t\t\topts.unarchiveArgs,\n\t\t);\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(dispatcher, 'cart:rename:success', (model) => {\n\t\t\tmodel.id === this.id &&\n\t\t\t\tmodel !== this &&\n\t\t\t\tthis.set('title', model.get('title'));\n\t\t});\n\t}\n\n\t/**\n\t * Add current cart assets\n\t * @method\n\t */\n\taddCurrentCart() {\n\t\treturn this.addFacetedSearchToCart(\n\t\t\tnew AssetSearchRulesCollection([\n\t\t\t\t{\n\t\t\t\t\telementType: 10, // search type \"cart\"\n\t\t\t\t\telementValue1: 0, // id of current cart\n\t\t\t\t},\n\t\t\t]),\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} locationId Archive location id\n\t */\n\tarchive() {\n\t\treturn CartAssetsCollection.prototype.archive.apply(this, arguments);\n\t}\n\n\t/**\n\t * @method\n\t * @param {date|string} date Date\n\t */\n\texpireAssets() {\n\t\treturn CartAssetsCollection.prototype.expireAssets.apply(this, arguments);\n\t}\n\n\t/**\n\t * @method\n\t * @return {array} Asset ids\n\t */\n\tgetAssetIds() {\n\t\treturn this.getCartAssets().getAssetIds();\n\t}\n\n\t/**\n\t * @method\n\t * @return {Netx.Collections.CartAssets} Assets\n\t */\n\tgetCartAssets() {\n\t\t// TODO: are we making the code that calls this fetch this collection?\n\t\t// because we would be retunring an empty collection here\n\t\tif (_.isUndefined(this.cartAssets)) {\n\t\t\tthis.cartAssets = new CartAssetsCollection([], {id: this.id});\n\t\t}\n\t\treturn this.cartAssets;\n\t}\n\n\t/**\n\t * @method\n\t * @param {boolean} fullUrl Return full url\n\t * @return {string}\n\t */\n\tgetRoute(fullUrl) {\n\t\treturn (\n\t\t\t((fullUrl && URL.location.split('#')[0]) || '') +\n\t\t\t'#' +\n\t\t\tcustomConfig.ROUTE_SAVED_CART +\n\t\t\t'/' +\n\t\t\tthis.id\n\t\t);\n\t}\n\n\t/**\n\t * Change saved cart name\n\t * @method\n\t * @param {string} name New saved cart name\n\t * @todo Opts?\n\t */\n\trename(name) {\n\t\tthis.set({title: name});\n\t\treturn this.save();\n\t}\n\n\t/**\n\t * Get an assetSet model defining the set of this cart's assets\n\t * @method\n\t * @return {module:asset/models/assetSet} Asset set\n\t */\n\ttoAssetSet() {\n\t\treturn new AssetSetModel({\n\t\t\ttype: assetSetTypes.savedCart,\n\t\t\tids: [this.id],\n\t\t\tmodels: [this],\n\t\t\tlabel: this.getLabel(),\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} type Unarchive type\n\t * @param {string} email Email to notify on completion\n\t */\n\tunarchive(type, email) {\n\t\treturn CartAssetsCollection.prototype.unarchive.apply(this, arguments);\n\t}\n\n\t/**\n\t * @method\n\t */\n\tunexpireAssets() {\n\t\treturn CartAssetsCollection.prototype.unexpireAssets.apply(this, arguments);\n\t}\n\n\t/**\n\t * Create a saved cart from a name and some assets\n\t * @method\n\t * @param {string} name Saved cart name\n\t * @param {Netx.Collections.Assets|array} assets Either a collection of assets or an array of asset ids\n\t */\n\tstatic Create(name, assets) {\n\t\tconst sc = new this.constructor({title: name});\n\n\t\tsc.assetsArg = _.tidyAssetList(assets);\n\t\treturn sc.create().then(() => {\n\t\t\treturn sc.fetch().then(() => {\n\t\t\t\treturn sc;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Load a saved cart from an ID\n\t * @method\n\t * @param {number} id Saved cart id\n\t */\n\tstatic Load(id) {\n\t\tconst sc = new this.constructor({id: id});\n\n\t\treturn sc.fetch().then(() => {\n\t\t\treturn sc;\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SavedCart';\n\t}\n}\n","export let unarchiveTypeIds = {\n\ttemporary: 1,\n\tpermanent: 2,\n};\n\nexport let unarchiveTypeLabels = {\n\t1: 'i18n.temporarily',\n\t2: 'i18n.permanently',\n};\n\nexport let unarchiveTypes = _.invert(unarchiveTypeIds);\n\nexport default {\n\tunarchiveTypeIds: unarchiveTypeIds,\n\tunarchiveTypeLabels: unarchiveTypeLabels,\n\tunarchiveTypes: unarchiveTypes,\n};\n","import SavedCartsCollection from '../collections/savedCarts';\n\nexport const allSavedCarts = new SavedCartsCollection([], {\n\tpager: {pageSize: 0x7fffffff},\n});\n\nexport const favoriteSavedCarts = new SavedCartsCollection([], {\n\tpager: {pageSize: 0x7fffffff, pagesToDisplay: 0},\n\tmodeFilters: ['favorites'],\n});\n\nallSavedCarts\n\t.on(\n\t\t'add',\n\t\t(model) => model.isFavorite() && favoriteSavedCarts.add(model.attributes),\n\t)\n\t.on('destroy', (model) => favoriteSavedCarts.remove(model.id));\n\nexport default {allSavedCarts, favoriteSavedCarts};\n","/**\n * @class\n */\nimport Base from '@netx/core-asset/collections/assets';\n\nimport AssetModel from '@netx/core-asset/models/asset';\nimport AssetSetModel from '@netx/core-asset/models/assetSet';\n\nimport {types as assetSetTypes} from '@netx/core-asset/properties/assetSets';\nimport {pendingAssets} from '@netx/core-asset/collections/singleton/pendingAssets';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\n\nexport default class CategoryAssets extends Base {\n\t/** @type {array} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tfacetedSearch: 'Loading category assets',\n\t\t\tsearchAssetBeanObjects: 'Loading category assets',\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tfacetedSearch: 'Loaded category assets',\n\t\t\tsearchAssetBeanObjects: 'Loaded category assets',\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\tsuper(models, opts);\n\n\t\t// Debounced methods\n\t\tthis.refetch = _.debounce(this.refetch, 1000);\n\n\t\t/**\n\t\t * @memberOf Netx.Collections.CategoryAssets\n\t\t * @alias fetchArgs\n\t\t * @type {object}\n\t\t * @default\n\t\t */\n\t\tthis.fetchArgs = _.extend(\n\t\t\t{\n\t\t\t\t//remove: true\n\t\t\t},\n\t\t\topts.fetchArgs,\n\t\t);\n\n\t\t/**\n\t\t * Route of last category dislplayed\n\t\t * @type {string}\n\t\t */\n\t\tthis.lastCategoryRoute = opts.lastCategoryRoute;\n\n\t\tthis.selection.set([\n\t\t\t{\n\t\t\t\telementType: 23, // search by category id\n\t\t\t\telementSubType1: 2, // no recurse\n\t\t\t},\n\t\t]);\n\n\t\t/**\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.categoryId = opts.categoryId;\n\t\tthis.selection.at(0).set({\n\t\t\telementValue1: this.categoryId,\n\t\t});\n\n\t\t// Hey, listen!\n\t\tthis\n\t\t\t// the old approach:\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:pending:category:coming',\n\t\t\t\tthis.checkPendingCategoryComingEvent,\n\t\t\t)\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:pending:category:going',\n\t\t\t\tthis.checkPendingCategoryGoingEvent,\n\t\t\t)\n\t\t\t// the new approach:\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:pending:import:start',\n\t\t\t\tthis.checkPendingImportEvent,\n\t\t\t)\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:import:cancelled',\n\t\t\t\tthis.checkCancelledImportEvent,\n\t\t\t)\n\t\t\t// TODO: maybe better to do this in the parser & get it done before sync.\n\t\t\t.listenTo(this, 'sync', this.checkPendingImportList)\n\t\t\t// Update our count when we hear about asset changes.\n\t\t\t.listenTo(dispatcher, 'asset:category:added', (assetId, catId, asset) => {\n\t\t\t\tif (this.categoryId !== catId) return;\n\n\t\t\t\tasset && this.add(asset);\n\t\t\t\t// triggers 'counted' on view\n\t\t\t\tthis.pager.set({itemTotal: this.pager.get('itemTotal') + 1});\n\t\t\t})\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:category:removed',\n\t\t\t\t(assetId, catId, asset) => {\n\t\t\t\t\tif (this.categoryId !== catId) return;\n\n\t\t\t\t\tlet count = this.pager.get('itemTotal');\n\t\t\t\t\tif (count > 0) {\n\t\t\t\t\t\tcount--;\n\t\t\t\t\t\t// triggers 'counted' on view\n\t\t\t\t\t\tthis.pager.set({itemTotal: count});\n\t\t\t\t\t}\n\t\t\t\t\tthis.remove(assetId);\n\t\t\t\t},\n\t\t\t)\n\t\t\t.listenTo(dispatcher, 'category:current:update', (data, page) => {\n\t\t\t\t//needed to reset pager between categories\n\t\t\t\tthis.curPage = page;\n\t\t\t})\n\t\t\t// The above code references some code with TODO in the asset model\n\t\t\t// These events are from categorizing assets via the current cart\n\t\t\t// Update assets when changed\n\t\t\t.listenTo(dispatcher, 'asset:removed:from:category', (assetId, catId) => {\n\t\t\t\tif (this.categoryId !== catId) return;\n\n\t\t\t\tlet count = this.pager.get('itemTotal');\n\t\t\t\tif (count > 0) {\n\t\t\t\t\tcount--;\n\t\t\t\t\t// triggers 'counted' on view\n\t\t\t\t\tthis.pager.set({itemTotal: count});\n\t\t\t\t}\n\t\t\t\tthis.remove(assetId);\n\t\t\t})\n\t\t\t// No other way - currently\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'asset:added:to:category asset:moved:to:category',\n\t\t\t\t(assetId, catId) => {\n\t\t\t\t\tif (this.categoryId !== catId) return;\n\t\t\t\t\tthis.refetch();\n\t\t\t\t},\n\t\t\t);\n\t}\n\n\t/**\n\t * CategoryAssets listens for pending asset import events in its category, and automatically\n\t * adds a pending asset when necessary.\n\t */\n\tcheckPendingImportEvent(upload, file, asset, catId) {\n\t\t// if the import is into our category ...\n\t\tif (catId != this.categoryId) return;\n\t\tthis.checkPendingImportList();\n\t}\n\n\t/**\n\t * If a pending import is cancelled, we need to remove the pending asset.\n\t * @param {module:asset/models/asset} asset asset that was trying to import\n\t */\n\tcheckCancelledImportEvent(asset) {\n\t\tif (asset.get('categoryid') != this.categoryId) return;\n\t\tthis.remove(asset);\n\t}\n\n\t/**\n\t * After every fetch, CategoryAssets also checks the global pending assets list (Netx.asset.pending)\n\t * for any pending assets that it hasn't yet incorporated, and adds pending assets for those.\n\t */\n\tcheckPendingImportList() {\n\t\tconst _pendingAssets = pendingAssets.filterByCategory(this.categoryId);\n\t\tconst assets = [];\n\n\t\t_.each(_pendingAssets, (pendingAsset) => {\n\t\t\tconst id = pendingAsset.get('assetId');\n\t\t\tif (pendingAsset.get('direction') == 'coming') {\n\t\t\t\t// if we already have it, skip\n\t\t\t\tif (this.get(id)) return;\n\t\t\t\tassets.push(this.addPendingAsset(pendingAsset));\n\t\t\t} else if (pendingAsset.get('direction') == 'going') {\n\t\t\t\t// remove it if we have it.\n\t\t\t\tthis.remove(id);\n\t\t\t\t// TODO: load another chunk?\n\t\t\t}\n\t\t});\n\n\t\t// Add to the beginning\n\t\tthis.unshift(assets);\n\t}\n\n\t/**\n\t * Add the asset represented by the pendingAsset model to our collection.\n\t * @param {module:asset/models/pendingAsset} pendingAsset Pending asset\n\t * @todo The `checkPendingImportList` method calls this and inserts the return into an array\n\t * the `checkPendingCategoryComingEvent` method calls this (I think) in the hope of actually\n\t * being added...\n\t * Either fix or rename this method\n\t */\n\taddPendingAsset(pendingAsset) {\n\t\tlet pending = pendingAsset;\n\n\t\tif (!(pendingAsset instanceof AssetModel)) {\n\t\t\tpending = new AssetModel({assetId: pendingAsset.id});\n\t\t\tpending.fetch();\n\t\t}\n\n\t\treturn pending;\n\t}\n\n\t/**\n\t * If an asset has been added to this category on the DAM, add it here.\n\t * @param {number} assetId Asset id\n\t * @param {number} catId Category id\n\t * @param {module:asset/models/pendingAsset} pendingAsset Pending asset\n\t *\n\t * NOTE: this is almost certainly added out of sort order. Accurately-sorted results\n\t * would come from triggering a fetch. However, this is going to give users better feedback.\n\t */\n\tcheckPendingCategoryComingEvent(assetId, catId, pendingAsset) {\n\t\tif (catId != this.categoryId) return;\n\n\t\t// If we don't have it already,\n\t\tif (!this.get(assetId)) {\n\t\t\t// TODO: this really does nothing - see note on `addPendingAsset`\n\t\t\t// like this does not add this asset to anything but it will fetch it...\n\t\t\tthis.addPendingAsset(pendingAsset);\n\t\t}\n\t}\n\n\t/**\n\t * If an asset has been removed from this category on the DAM, remove it here\n\t * @param {number} assetId Asset id\n\t * @param {number} catId Category id\n\t * @param {module:asset/models/pendingAsset} pendingAsset Pending asset\n\t */\n\tcheckPendingCategoryGoingEvent(assetId, catId, pendingAsset) {\n\t\tif (catId != this.categoryId) return;\n\n\t\tthis.remove(this.get(assetId));\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} catId Category id\n\t */\n\tsetCategoryId(catId) {\n\t\tdispatcher.off(\n\t\t\t'category:edit:success' + this.categoryId,\n\t\t\tthis.refetch,\n\t\t\tthis,\n\t\t);\n\t\tthis.categoryId = catId;\n\t\tdispatcher.on(\n\t\t\t'category:edit:success' + this.categoryId,\n\t\t\tthis.refetch,\n\t\t\tthis,\n\t\t);\n\t}\n\n\t/**\n\t * Re-get the current chunk of the current collection\n\t * @method\n\t * @param {object} opts Request options\n\t */\n\trefetch(opts) {\n\t\topts = opts || {};\n\t\tthis.fetch(_.extend({duplicateQueryPolicy: 'abort'}, opts));\n\t}\n\n\t/**\n\t * @method\n\t * @param {number|string} catId Category id\n\t */\n\tgetCategoryAssets(catId) {\n\t\t// TODO: remove route-mgt code from models/collections\n\t\tthis.routeContext = 'category/' + catId;\n\n\t\tconst selection = this.selection;\n\t\t// reset facets only if on new category\n\t\tif (selection.searchFacets && catId != this.categoryId) {\n\t\t\tselection.searchFacets.reset();\n\t\t}\n\n\t\t// Ensure number\n\t\tcatId = parseInt(catId);\n\t\t// Set selection\n\t\tconst sortField = getPreference('asset.list.sort.field');\n\t\tconst sortOrder = getPreference('asset.list.sort.order');\n\t\tselection.sortField = sortField == null ? 'fileName' : sortField;\n\t\tselection.sortOrder = sortOrder == null ? 0 : sortOrder;\n\t\tselection.at(0).set({elementValue1: catId});\n\t\tthis.setCategoryId(catId);\n\n\t\t// Get assets\n\t\treturn this.fetch({\n\t\t\tduplicateQueryPolicy: 'abort',\n\t\t\tcacheSelection: true,\n\t\t}).then(\n\t\t\t() => {\n\t\t\t\t// Success\n\t\t\t},\n\t\t\t(err) => {\n\t\t\t\tconsole.warn('getCategoryAssets err: %o', err);\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * return an AssetSet object defining the set of this category's assets.\n\t */\n\ttoAssetSet() {\n\t\treturn new AssetSetModel({\n\t\t\ttype: assetSetTypes.category,\n\t\t\tids: [this.categoryId],\n\t\t\tlabel: i18n.t('i18n.category'),\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CategoryAssets';\n\t}\n}\n","/**\n * @class\n * @todo Document members and methods\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/category';\n\nimport customConfig from '../config';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\n\nexport default class CategoryTreeNodes extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {array} */\n\tget xhrExcludeProgress() {\n\t\treturn ['getCategoryAutoList'];\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tgetCategories: 'Loading categories',\n\t\t\tgetCategoryObjects: 'Loading categories',\n\t\t\tsetCategoryOrder: 'Updating category order',\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tgetCategories: 'Loading categories',\n\t\t\tgetCategoryObjects: 'Loaded categories',\n\t\t\tsetCategoryOrder: 'Updated category order',\n\t\t};\n\t}\n\n\t/**\n\t * Methods for this model\n\t * @type {object}\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tread: [\n\t\t\t\t'getCategories',\n\t\t\t\t'searchString',\n\t\t\t\tfunction () {\n\t\t\t\t\treturn customConfig.categoryid;\n\t\t\t\t},\n\t\t\t],\n\t\t\t_fetchChildren: ['getCategories', 'searchString', 'targetCategory'],\n\t\t\t_fetchCategory: ['getCategoryData', 'targetCategory'],\n\t\t\t_searchCategoryName: ['getCategoryAutoList', 'searchString', 1],\n\t\t\t_getCategoryObjects: ['getCategoryObjects', 'neededCats'],\n\t\t\t_setCategoryOrder() {\n\t\t\t\t// Order by 'order' and then pluck the category ids\n\t\t\t\t// Use compact as we may have had a `dummy` category in there (\"empty\")\n\t\t\t\t// TODO: look into the 'threaded' piece (we are currently passing false)\n\t\t\t\treturn [\n\t\t\t\t\t'setCategoryOrder',\n\t\t\t\t\t_.compact(_.pluck(_.sortBy(this.order, 'order'), 'categoryid')),\n\t\t\t\t\tthis.orderType,\n\t\t\t\t\tfalse,\n\t\t\t\t];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Collection parsers\n\t * @property {function} parsers._read - Parse results of fetch\n\t * @property {function} parsers._fetchChildren - Parse the result of fetch children\n\t * @property {function} parsers._fetchCategory - Parse the result of fetch category\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t// read parser is the parse() method below\n\t\t\t_fetchChildren(data) {\n\t\t\t\tdata = data || [];\n\t\t\t\t//return this.parseCats(data);\t// Backbone.RPC ignores return value of parsers, feh.\n\t\t\t\tthis.parseCats(data);\n\t\t\t\treturn;\n\t\t\t},\n\t\t\t_fetchCategory(data) {\n\t\t\t\tthis.parseCats([data]);\n\t\t\t\treturn;\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tparse(data) {\n\t\t// So we know to use a reset after parsing cats\n\t\t// triggering a reset now looses any client side data we may have had\n\t\tthis.resetCategories = true;\n\t\treturn this.parseCats(data);\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\t// https://stackoverflow.com/questions/37127083/can-two-files-have-each-other-as-dependencies-in-javascript-when-using-webpack\n\t\t//Model = require('../models/category');\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t// Set categoryid if provided\n\t\tthis.categoryid = opts.categoryid;\n\n\t\t/**\n\t\t * @type {array}\n\t\t * @default\n\t\t */\n\t\tthis.disabledCategories = opts.disabledCategories || [];\n\n\t\t/**\n\t\t * Will hold our desired category order for `setCategoryOrder`\n\t\t * @type {array}\n\t\t * @default\n\t\t */\n\t\tthis.order = opts.order || [];\n\n\t\t/**\n\t\t * @type {number}\n\t\t * @default\n\t\t * 0 = manual (provided order)\n\t\t * 1 = alphabetical asc (normal)\n\t\t * 2 = alphabetical desc (reverse)\n\t\t */\n\t\tthis.orderType = opts.orderType || 0;\n\n\t\t/**\n\t\t * @type {string}\n\t\t * @default\n\t\t */\n\t\tthis.searchString = opts.searchString || '';\n\n\t\t/**\n\t\t * Target category id\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.targetCategory = opts.targetCategory;\n\n\t\t// We reference this a lot\n\t\tvar topLevelId = customConfig.categoryid;\n\n\t\t// Debounced methods\n\t\tthis.updateTopLevelCategories = _.debounce(\n\t\t\tthis.updateTopLevelCategories,\n\t\t\t100,\n\t\t);\n\n\t\t// We are top level\n\t\t// We provide a top level collection and a filtered collection\n\t\tif (this.categoryid === topLevelId) {\n\t\t\t// Do not pass a categoryid to these collections - always know they are \"top level\" (flat)\n\t\t\t// if you pass a categoryid you will wind up in a maximum execution error\n\t\t\tthis.topLevelCategories = new this.constructor([]);\n\t\t\tthis.filteredCategories = new this.constructor([]);\n\t\t}\n\n\t\t// Children of a category have changed\n\t\tconst debouncedFetchTopLevel = _.debounce((id) => {\n\t\t\tthis.fetchChildren(this.categoryid, {duplicateQueryPolicy: 'abort'}).then(\n\t\t\t\tthis.updateTopLevelCategories,\n\t\t\t);\n\t\t}, 100);\n\n\t\t// Hey, listen!\n\t\tthis\n\t\t\t// On reset/sync we need to put back /update our top levels\n\t\t\t.listenTo(\n\t\t\t\tthis,\n\t\t\t\t'reset sync',\n\t\t\t\t_.debounce((collection) => {\n\t\t\t\t\t// Make sure this concerns us (sync could come from a model within)\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.topLevelCategories &&\n\t\t\t\t\t\tthis._listenId === collection._listenId\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.updateTopLevelCategories();\n\t\t\t\t\t}\n\t\t\t\t}, 100),\n\t\t\t)\n\t\t\t// WARNING:\n\t\t\t// Since these are dispatch listeners and not targeted solely at us - we can not debounce the listeners\n\t\t\t.listenTo(dispatcher, 'category:children:changed', (id) => {\n\t\t\t\t// Main tree\n\t\t\t\t// All other models/collections in relation to this tree should have references\n\t\t\t\t// to us and our models - if not then there is some flawed logic somehwere that\n\t\t\t\t// will need addressing.\n\t\t\t\t// Top level trees are the only responders\n\t\t\t\tif (this.categoryid === topLevelId) {\n\t\t\t\t\tid = parseInt(id);\n\t\t\t\t\t// Was a top level that changed\n\t\t\t\t\tif (id === this.categoryid) {\n\t\t\t\t\t\t// It gets too messy to not update the whole top level in this case\n\t\t\t\t\t\t// The category model itself should be responding to data changes\n\t\t\t\t\t\tdebouncedFetchTopLevel(id);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Category deleted\n\t\t\t.listenTo(dispatcher, 'category:delete:success', (model) => {\n\t\t\t\t// Regardless of where it was deleted from - it is gone - get it out of all collections\n\t\t\t\tthis.remove(model.id);\n\t\t\t})\n\t\t\t// Categories changed\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'category:edit:success',\n\t\t\t\t(model, isNew, changedParent) => {\n\t\t\t\t\t// Only top level responds to this\n\t\t\t\t\tif (model instanceof Model && this.categoryid === topLevelId) {\n\t\t\t\t\t\tmodel.set({\n\t\t\t\t\t\t\t// TODO: These are strings on a save\n\t\t\t\t\t\t\t// Need to handle in set and make sure they are enforced as ints\n\t\t\t\t\t\t\tcategoryid: parseInt(model.get('categoryid')),\n\t\t\t\t\t\t\tparentid: parseInt(model.get('parentid')),\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// New - add to our collection\n\t\t\t\t\t\tif (isNew) {\n\t\t\t\t\t\t\tthis.selectedCategory = model.id;\n\t\t\t\t\t\t\t// Clone it so that different trees do not start tracking open and closestuff\n\t\t\t\t\t\t\tthis.add(model.clone());\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Top level edit\n\t\t\t\t\t\t// TODO: should we also be checking that the only ancestor matches Netx.category.options.categoryid?\n\t\t\t\t\t\t// If you have only one ancestor and its not the top level id - something is terribly wrong(?)\n\t\t\t\t\t\tvar ancestors = model.get('ancestors') || [];\n\t\t\t\t\t\tif (ancestors.length === 1 && ancestors[0] === topLevelId) {\n\t\t\t\t\t\t\tthis.updateTopLevelCategories();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t)\n\t\t\t// Simulate progress / syncing when moving a category (and its children)\n\t\t\t.listenTo(dispatcher, 'category:move:confirmed', () => {\n\t\t\t\t// Top level trees are the only responders\n\t\t\t\tif (this.categoryid === topLevelId) {\n\t\t\t\t\t// Mimic read\n\t\t\t\t\tthis.trigger('request:read', this, undefined, {});\n\t\t\t\t\tthis.listenToOnce(dispatcher, 'category:move:success', (cat) => {\n\t\t\t\t\t\tthis.stopListening(dispatcher, 'category:move:error');\n\t\t\t\t\t\t// Mimic sync\n\t\t\t\t\t\tthis.trigger('sync', this, cat, {});\n\t\t\t\t\t});\n\t\t\t\t\tthis.listenToOnce(dispatcher, 'category:move:error', (error) => {\n\t\t\t\t\t\tthis.stopListening(dispatcher, 'category:move:success');\n\t\t\t\t\t\t// This will trigger a fetch on us and get the sync event when done\n\t\t\t\t\t\tdispatcher.trigger('category:tree:refresh', this);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Close all categories in tree\n\t\t\t// category:tree:reset means 'close all nodes'\n\t\t\t// category:tree:close:all means the same thing\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'category:tree:reset category:tree:close:all',\n\t\t\t\t(tree) => {\n\t\t\t\t\t// Make sure we are the tree this was requested on\n\t\t\t\t\tif (tree._listenId === this._listenId) {\n\t\t\t\t\t\tthis.closeAll();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\t}\n\n\t/**\n\t * @method\n\t */\n\tclearSearch() {\n\t\tthis.searchString = '';\n\t}\n\n\t/**\n\t * @method\n\t * @param {Netx.Collections.CategoryTreeNodes} tree Category tree to clone from\n\t */\n\tcloneFrom(tree) {\n\t\tthis.reset(\n\t\t\ttree.map((cat) => {\n\t\t\t\treturn cat.clone(this);\n\t\t\t}),\n\t\t);\n\t\tthis.disabledCategories = [];\n\t\tthis.selectedCategory = null;\n\t}\n\n\t/** @method */\n\tcloseAll() {\n\t\t// Calls the method on each model in this collection\n\t\tthis.invoke('close', {recursive: true});\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} catid Category id\n\t * @param {object} opts Request options\n\t */\n\t// TODO: unwrap!\n\tfetchCategory(catid, opts = {}) {\n\t\t// See if we already have an instance of this category model\n\t\t// If so, run the fetch through it\n\t\tconst cat = this.get(catid);\n\t\tif (cat) {\n\t\t\treturn cat.fetch(_.extend({duplicateQueryPolicy: 'merge'}, opts));\n\t\t}\n\n\t\t// Set our target category id\n\t\tthis.targetCategory = catid;\n\n\t\t// Mimic read\n\t\t!opts.silent && this.trigger('request:read', this, null, opts);\n\n\t\t// Promise\n\t\treturn this._fetchCategory(\n\t\t\t_.extend({duplicateQueryPolicy: 'merge'}, opts),\n\t\t).then((response) => {\n\t\t\t// Unset target category\n\t\t\tthis.targetCategory = null;\n\t\t\t// Open if it was previously open\n\t\t\tconst cat = this.get(catid);\n\t\t\t// If cat was open, re-open\n\t\t\tcat && cat.get('children').length > 0 && cat.get('open') && cat.open();\n\t\t\t// Trigger sync if not silent\n\t\t\t!opts.silent && this.trigger('sync', this, response, opts);\n\n\t\t\treturn cat;\n\t\t});\n\t}\n\n\t/**\n\t * fetchChildren fetches all the child categories of the specified category.\n\t * @method\n\t * @param {number} catid Category id\n\t * @param {object} opts Request options\n\t * @fires module:category#category:fetchedChildren\n\t */\n\t// TODO: unwrap!\n\tfetchChildren(catid, opts = {}) {\n\t\tthis.targetCategory = catid;\n\n\t\tvar cat = this.get(catid);\n\t\tdispatcher.trigger('category:' + catid + ':fetchingChildren', this, opts);\n\n\t\t// Mimic read\n\t\t!opts.silent && cat && cat.trigger('request:read', cat, null, opts);\n\n\t\t// Promise\n\t\tconst p = this._fetchChildren(opts);\n\n\t\tp.then((response) => {\n\t\t\tdispatcher.trigger('category:' + catid + ':fetchedChildren');\n\t\t\tdispatcher.trigger('category:fetchedChildren', catid);\n\n\t\t\t// If cat was set to be open - open it (does not matter if it is already opened or not)\n\t\t\tcat = this.get(catid);\n\n\t\t\t!opts.silent && cat && cat.trigger('sync', cat, null, opts);\n\t\t});\n\n\t\treturn p;\n\t}\n\n\t/**\n\t * Find and return the selected category model\n\t * @method\n\t * @returns {object} category model\n\t */\n\tgetSelectedCategoryModel() {\n\t\tlet category;\n\t\t// DAM-15378 - if we are filtering, look in filteredCategories\n\t\tif (this.filteredCategories.length) {\n\t\t\tcategory = this.filteredCategories.get(this.selectedCategory);\n\t\t}\n\t\treturn category || this.get(this.selectedCategory);\n\t}\n\n\t/**\n\t * Take an array of objects, convert each into a Category model, and add them to our collection.\n\t * @method\n\t * @param {array} data Array of category data\n\t */\n\tparseCats(data) {\n\t\t// If empty - do a reset - otherwise we end up running through the add method a ton in childViews\n\t\t// and can not utilize the breakItUp method\n\t\tif (!this.length || this.resetCategories) {\n\t\t\tthis.reset(\n\t\t\t\t_.map(data, (c) => {\n\t\t\t\t\t// Make sure we maintain our childCategories and open references (both are client attributes and should not be affected by the return from the server)\n\t\t\t\t\treturn new this.model(c, {collection: this});\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\t// Just add\n\t\telse {\n\t\t\tthis.add(\n\t\t\t\t_.compact(\n\t\t\t\t\t_.map(data, (c) => {\n\t\t\t\t\t\t// Merge directly into any existing so that we may maintian the true reference and the attributes se ton the client side\n\t\t\t\t\t\tvar existing = this.get(c.categoryid);\n\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\texisting.set(c);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Make sure we maintain our childCategories and open references (both are client attributes and should not be affected by the return from the server)\n\t\t\t\t\t\t\treturn new this.model(\n\t\t\t\t\t\t\t\t_.extend({}, existing ? existing.attributes : {}, c),\n\t\t\t\t\t\t\t\t{collection: this},\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t\t{\n\t\t\t\t\tsilent: true,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\t// Set to false as we are done - regardless\n\t\tthis.resetCategories = false;\n\n\t\treturn this.models;\n\t}\n\n\t/**\n\t * Take an array of objects, check if the category is already in Netx.category.tree, fetch any that are not,\n\t * convert each into a Category model, and add them to our collection.\n\t * @method\n\t * @param {array} data Array of category data\n\t * @param {object} opts Request options\n\t */\n\tparseSearchCats(data, opts) {\n\t\tconst promises = [];\n\t\tconst tree = Netx.category.tree;\n\t\tlet toAdd = [];\n\n\t\t// Loop over data and look for categories we will need to fetch from the server\n\t\tthis.neededCats = _.compact(\n\t\t\t_.map(data, (c) => {\n\t\t\t\tconst catId = parseInt(c.value);\n\t\t\t\tconst category = tree.get(catId);\n\t\t\t\t// Do not want the \"0\" category (more option)\n\t\t\t\tif (!isNaN(catId) && catId > 0) {\n\t\t\t\t\tif (!category || !category.attributes.length) {\n\t\t\t\t\t\treturn c.value;\n\t\t\t\t\t}\n\t\t\t\t\ttoAdd.push(category);\n\t\t\t\t}\n\t\t\t}),\n\t\t);\n\n\t\t// Need to fetch some needed categories\n\t\tif (this.neededCats.length) {\n\t\t\tpromises.push(\n\t\t\t\tthis._getCategoryObjects({...opts, duplicateQueryPolicy: 'abort'}).then(\n\t\t\t\t\t(response) => {\n\t\t\t\t\t\t// Turn response into an array of category models and concat them onto the categories we already had\n\t\t\t\t\t\ttoAdd = toAdd.concat(\n\t\t\t\t\t\t\tresponse.map((c) => new Model({...c, collection: this})),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// We are already updating the `main` tree - don't do it twice\n\t\t\t\t\t\tif (this._listenId !== tree._listenId) {\n\t\t\t\t\t\t\tthis.reset(toAdd);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Update `main` tree\n\t\t\t\t\t\t// tree.add( toAdd, { silent: true } );\n\t\t\t\t\t\tthis.neededCats = null;\n\t\t\t\t\t\treturn response;\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\t// We have everything we need\n\t\telse {\n\t\t\tthis.reset(toAdd);\n\t\t}\n\n\t\treturn $.when.apply($, promises);\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} str Category name to search\n\t * @param {object} opts Request options\n\t */\n\t// TODO: unwrap!\n\tsearchCategoryName(str, opts = {}) {\n\t\tthis.searchString = str;\n\n\t\t// Run through our filtered collection - that is what it is for\n\t\tif (this.filteredCategories) {\n\t\t\treturn this.filteredCategories.searchCategoryName(str, opts);\n\t\t}\n\n\t\tthis.reset();\n\n\t\tif (!opts.silent) {\n\t\t\tthis.trigger('request:read', this, null, opts);\n\t\t}\n\t\treturn this._searchCategoryName(opts).then((response) => {\n\t\t\treturn this.parseSearchCats(response, opts).then((_response) => {\n\t\t\t\t!opts.silent && this.trigger('sync', this, _response, opts);\n\t\t\t\treturn _response;\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} cats Array of categories in the order desired\n\t * @param {object} opts Request options\n\t */\n\t// TODO: unwrap!\n\tsetCategoryOrder(cats, opts) {\n\t\tthis.order = _.map(cats, (catid, idx) => {\n\t\t\treturn {categoryid: catid, order: idx};\n\t\t});\n\t\treturn this._setCategoryOrder(opts).then(() => {\n\t\t\t// Update category models\n\t\t\t_.each(this.order, (orderObj) => {\n\t\t\t\tconst cat = this.get(orderObj.categoryid);\n\t\t\t\tcat && cat.set('orderby', orderObj.order);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Order in which to display the returned categories\n\t * 0 = manual (provided order);\n\t * 1 = alphabetical asc (normal);\n\t * 2 = alphabetical desc (reverse);\n\t * @method\n\t * @param {integer} type 0,1,2\n\t */\n\tsetCategoryOrderType(type) {\n\t\tthis.orderType = type;\n\t\treturn this.orderType;\n\t}\n\n\t/**\n\t * @method\n\t */\n\tupdateTopLevelCategories() {\n\t\tconst topLevelCategories = this.topLevelCategories;\n\t\ttopLevelCategories.reset(this.where({parentid: customConfig.categoryid}));\n\t\ttopLevelCategories.each((model) => {\n\t\t\tconst category = this.get(model.id);\n\t\t\tif (!category) return;\n\t\t\t// If we were open - re-open\n\t\t\t// Run through the controller instead of the model\n\t\t\tcategory.get('open') &&\n\t\t\t\tdispatcher.trigger('category:tree:open', model, this);\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CategoryTreeNodes';\n\t}\n}\n","import {UserLevel} from '@netx/core-user-next/constants';\nimport {BrandPortalWatermarkPosition, type IBrandPortal} from './schema';\n\nexport const portalDefaults: Readonly<IBrandPortal> = {\n\tattributeIds: [],\n\tattributes: [],\n\tcarousel: [],\n\tcategory: 1,\n\tcolor1: '#4c516f',\n\tcolor2: null,\n\tcontactMessage: '',\n\tcopyright: '',\n\tdisableWebfonts: false,\n\tdisplayCatDescriptions: false,\n\tenableSignIn: false,\n\tfavicon: 0,\n\tfont: 0,\n\tgoogleAnalyticsEnabled: false,\n\tgoogleAnalyticsId: '',\n\tgroup: 0,\n\theaderLinks: false,\n\thomeRoute: '',\n\tpageId: 0,\n\tid: 0,\n\tlabel: '',\n\tlogo: 0,\n\tlogoutUrl: '',\n\tname: '',\n\tpath: '',\n\tproperties: {\n\t\tname: '',\n\t\thomeRoute: '',\n\t\tmenus: [],\n\t\tpages: [],\n\t\ttemplates: {\n\t\t\ttemplate1: 'Template 1',\n\t\t\ttemplate2: 'Template 2',\n\t\t\ttemplate3: 'Template 3',\n\t\t\ttemplate4: 'Template 4',\n\t\t\ttemplate5: 'Template 5',\n\t\t\ttemplate6: 'Template 6',\n\t\t\ttemplate7: 'Template 7',\n\t\t\ttemplate8: 'Template 8',\n\t\t\ttemplate9: 'Template 9',\n\t\t\ttemplate10: 'Template 10',\n\t\t\ttemplate11: 'Template 11',\n\t\t},\n\t\tversion: '',\n\t},\n\trequireLogin: true,\n\tsearchPlaceholder: '',\n\tsingleSignOnURL: '',\n\tssoLoginEnabled: false,\n\tssoLoginLabel: '',\n\ttagline: '',\n\ttermsAndConditions: '',\n\ttheme: 'clean',\n\tuserLevel: UserLevel.NO_ACCESS,\n\tvisible: true,\n\twatermark: 0,\n\twatermarkPos: BrandPortalWatermarkPosition.BOTTOM_LEFT,\n};\n","import {z} from 'zod';\nimport {stringToJSONSchema} from '@netx/core-next/schema/utils';\n\n/*\n// server response\n{\n \"id\": 3,\n \"event\": \"adBuilder:templates:route\",\n \"portalId\": 1,\n \"goo\": \"{\\\\\\\"label\\\\\\\":\\\\\\\"Templates\\\\\\\",\\\\\\\"userLevel\\\\\\\":0,\\\\\\\"link\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"assetName\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"type\\\\\\\":\\\\\\\"action\\\\\\\"}\",\n \"userId\": 0,\n \"modDate\": \"2019-09-20 16:46:39\"\n}[]\n*/\n\nexport enum BrandPortalActionType {\n\tACTION = 'action',\n\tASSET = 'asset',\n\tCATEGORY = 'category',\n\tPAGE = 'page',\n\tURL = 'url',\n}\n\nexport const BRAND_PORTAL_ACTION_GOO_KEYS = [\n\t'label',\n\t'userLevel',\n\t'link',\n\t'assetName',\n\t'type',\n] as const;\n\nexport const BrandPortalActionSchema = z.object({\n\tid: z.number().int().positive(),\n\tevent: z.string(),\n\t/** ex 2019-09-20 16:46:40 */\n\tmodDate: z.string(),\n\tportalId: z.number().int().positive(),\n\tuserId: z.number().int().positive(),\n\tgoo: stringToJSONSchema.pipe(\n\t\tz.object({\n\t\t\tlabel: z.string(),\n\t\t\tuserLevel: z.number().int().positive(),\n\t\t\tlink: z.string(),\n\t\t\tassetName: z.string(),\n\t\t\ttype: z.nativeEnum(BrandPortalActionType),\n\t\t}),\n\t),\n});\n\nexport const BrandPortalActionRawSchema = BrandPortalActionSchema.omit({\n\tgoo: true,\n}).extend({\n\tgoo: z.string(),\n});\n\nexport type IBrandPortalAction = z.infer<typeof BrandPortalActionSchema>;\n\nexport type IBrandPortalActionRaw = z.infer<typeof BrandPortalActionRawSchema>;\n","import {z} from 'zod';\nimport {SchemaValidationErrorLabel, refineUrl} from '@netx/core-next/schema';\nimport {UserLevel} from '@netx/core-user-next/constants';\nimport {BrandPortalActionType} from '../brandPortalAction';\n\n/*\n{\n\tattributeIds: [-100, -104, -105, -120, -101, -102, -106, -108, -110, -111, -112, -114, -115, 1],\n\tattributes: [],\n\tcarousel: [],\n\tcategory: 1,\n\tcolor1: \"#4c516f\",\n\tcolor2: null,\n\tcontactMessage: null,\n\tcopyright: \"\",\n\tdisableWebfonts: false,\n\tdisplayCatDescriptions: false,\n\tfavicon: 0,\n\tfont: 120,\n\tgoogleAnalyticsEnabled: false,\n\tgoogleAnalyticsId: \"\",\n\tgroup: 0,\n\theaderLinks: false,\n\thomeRoute: null,\n\tid: 1,\n\tlabel: \"clean\",\n\tlogo: 0,\n\tlogoutUrl: null,\n\tname: \"clean\",\n\tpath: \"clean\",\n \"properties\": {\n \"name\": \"Clean\",\n \"version\": \"2.0\",\n \"menus\": [\n {\n \"name\": \"menu1\",\n \"defaultItems\": [\n {\n \"type\": \"action\",\n \"action\": \"app:contact\"\n },\n {\n \"type\": \"action\",\n \"action\": \"cms:route:category:root\"\n },\n {\n \"type\": \"action\",\n \"action\": \"adBuilder:templates:route\"\n }\n ]\n }\n ],\n \"pages\": [\n {\n \"type\": \"page\",\n \"title\": \"home\",\n \"slug\": \"home\",\n \"template\": \"template1\"\n }\n ],\n \"homeRoute\": \"home\",\n \"templates\": {\n \"template1\": \"Template 1\",\n \"template2\": \"Template 2\",\n \"template3\": \"Template 3\",\n \"template4\": \"Template 4\",\n \"template5\": \"Template 5\",\n \"template6\": \"Template 6\",\n \"template7\": \"Template 7\",\n \"template8\": \"Template 8\",\n \"template9\": \"Template 9\",\n \"template10\": \"Template 10\",\n \"template11\": \"Template 11\"\n }\n },\n\trequireLogin: false,\n\tsearchPlaceholder: \"Search\",\n\tsingleSignOnURL: \"\",\n\tssoLoginEnabled: false,\n\tssoLoginLabel: null,\n\ttagline: null,\n\ttermsAndConditions: \"\",\n\ttheme: \"clean\",\n\tuserLevel: 0,\n\tvisible: false,\n\twatermark: 0,\n\twatermarkPos: \"bottom-left\",\n*/\n\nexport enum BrandPortalAttributeContext {\n\tDETAIL = 'detailAttribute',\n\tSORT = 'sortAttribute',\n}\n\nexport enum BrandPortalWatermarkPosition {\n\tBOTTOM_LEFT = 'bottom-left',\n\tBOTTOM_RIGHT = 'bottom-right',\n\tCENTER = 'center',\n\tTOP_LEFT = 'top-left',\n\tTOP_RIGHT = 'top-right',\n}\n\nexport const BrandPortalAttributeSchema = z.object({\n\tbrandPortalId: z.number().int().gt(-1),\n\tattributeTemplateId: z.number(),\n\t[BrandPortalAttributeContext.DETAIL]: z.boolean(),\n\t[BrandPortalAttributeContext.SORT]: z.boolean(),\n});\n\nexport type IBrandPortalAttribute = z.infer<typeof BrandPortalAttributeSchema>;\n\nexport const BrandPortalSchema = z.object({\n\tid: z.number().int().positive(),\n\tattributeIds: z.array(z.number().int()),\n\tattributes: z.array(BrandPortalAttributeSchema),\n\tcarousel: z.array(z.number().int().positive()),\n\tcategory: z.number().int().gt(0, SchemaValidationErrorLabel.REQUIRED),\n\tcolor1: z.string(),\n\tcolor2: z.string().nullable(),\n\tcontactMessage: z.string().nullable(),\n\tcopyright: z.string(),\n\tdisplayCatDescriptions: z.boolean(),\n\tdisableWebfonts: z.boolean(),\n\tenableSignIn: z.boolean(),\n\tfavicon: z.number().int().positive(),\n\tfont: z.number().int().positive(),\n\tgoogleAnalyticsEnabled: z.boolean(),\n\tgoogleAnalyticsId: z.string().nullable(),\n\tgroup: z.number().int().positive(),\n\theaderLinks: z.boolean(),\n\t/** tied to a `page.slug` */\n\thomeRoute: z.string(), //.nonempty(SchemaValidationErrorLabel.REQUIRED),\n\tpageId: z.number().int().gte(-1),\n\tlabel: z.string().nonempty(SchemaValidationErrorLabel.REQUIRED),\n\tlogo: z.number().int().positive(),\n\tlogoutUrl: refineUrl(z.string()).nullable(),\n\tname: z.string().nonempty(SchemaValidationErrorLabel.REQUIRED),\n\tpath: z.string().nonempty(SchemaValidationErrorLabel.REQUIRED),\n\tproperties: z.object({\n\t\tname: z.string(),\n\t\thomeRoute: z.string(),\n\t\tmenus: z.array(\n\t\t\tz.object({\n\t\t\t\tname: z.string(),\n\t\t\t\tdefaultItems: z.array(\n\t\t\t\t\tz.object({\n\t\t\t\t\t\ttype: z.nativeEnum(BrandPortalActionType),\n\t\t\t\t\t\taction: z.string(),\n\t\t\t\t\t}),\n\t\t\t\t),\n\t\t\t}),\n\t\t),\n\t\tpages: z.array(\n\t\t\tz.object({\n\t\t\t\ttype: z.string(),\n\t\t\t\ttitle: z.string(),\n\t\t\t\tslug: z.string(),\n\t\t\t\ttemplate: z.string(),\n\t\t\t}),\n\t\t),\n\t\ttemplates: z.object({\n\t\t\ttemplate1: z.literal('Template 1'),\n\t\t\ttemplate2: z.literal('Template 2'),\n\t\t\ttemplate3: z.literal('Template 3'),\n\t\t\ttemplate4: z.literal('Template 4'),\n\t\t\ttemplate5: z.literal('Template 5'),\n\t\t\ttemplate6: z.literal('Template 6'),\n\t\t\ttemplate7: z.literal('Template 7'),\n\t\t\ttemplate8: z.literal('Template 8'),\n\t\t\ttemplate9: z.literal('Template 9'),\n\t\t\ttemplate10: z.literal('Template 10'),\n\t\t\ttemplate11: z.literal('Template 11'),\n\t\t}),\n\t\tversion: z.string(),\n\t}),\n\trequireLogin: z.boolean(),\n\tsearchPlaceholder: z.string(),\n\tsingleSignOnURL: refineUrl(z.string()),\n\tssoLoginEnabled: z.boolean().nullable(),\n\tssoLoginLabel: z.string().nullable(),\n\ttagline: z.string().nullable(),\n\ttermsAndConditions: z.string(),\n\ttheme: z.string(), // always `clean`\n\tuserLevel: z.nativeEnum(UserLevel),\n\tvisible: z.boolean(),\n\twatermark: z.number().int().positive(),\n\twatermarkPos: z.nativeEnum(BrandPortalWatermarkPosition),\n});\n\nexport const BrandPortalSchemaCheck = (\n\t{\n\t\tgoogleAnalyticsEnabled,\n\t\tgoogleAnalyticsId,\n\t\tssoLoginEnabled,\n\t\tssoLoginLabel,\n\t\tsingleSignOnURL,\n\t}: Partial<IBrandPortal>,\n\tctx: z.RefinementCtx,\n) => {\n\tif (googleAnalyticsEnabled === true && !googleAnalyticsId) {\n\t\tctx.addIssue({\n\t\t\tfatal: true,\n\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\tpath: ['googleAnalyticsId'],\n\t\t\tmessage: SchemaValidationErrorLabel.REQUIRED,\n\t\t});\n\t}\n\n\tif (ssoLoginEnabled === true) {\n\t\tif (!singleSignOnURL) {\n\t\t\tctx.addIssue({\n\t\t\t\tfatal: true,\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tpath: ['singleSignOnURL'],\n\t\t\t\tmessage: SchemaValidationErrorLabel.REQUIRED,\n\t\t\t});\n\t\t}\n\t\tif (!ssoLoginLabel) {\n\t\t\tctx.addIssue({\n\t\t\t\tfatal: true,\n\t\t\t\tcode: z.ZodIssueCode.custom,\n\t\t\t\tpath: ['ssoLoginLabel'],\n\t\t\t\tmessage: SchemaValidationErrorLabel.REQUIRED,\n\t\t\t});\n\t\t}\n\t}\n\treturn ctx;\n};\n\n/** helper function for wrapping the schema in all refinements */\nexport const applyBrandPortalSchemaEffects = <T extends z.ZodRawShape>(\n\tschema: z.ZodObject<T>,\n) => schema.superRefine(BrandPortalSchemaCheck);\n\n/**\n * default refined schema\\\n * note: using this directly will not hit any refinements should any of the initial schema validations fail\\\n * if you want the refinements to be hit, regardless of the initial schema validation failing then call the\n * `applyBrandPortalSchemaEffects` function directly and supply a `partial` schema\n * @example\n * ```ts\n * applyBrandPortalSchemaEffects(BrandPortalSchema.partial())\n * ```\n */\nexport const BrandPortalSchemaRefined =\n\tapplyBrandPortalSchemaEffects(BrandPortalSchema);\n\nexport type IBrandPortal = z.infer<typeof BrandPortalSchema>;\n\nexport const BrandPortalField = BrandPortalSchema.keyof().enum;\n\nexport const BrandPortalFormSchema = BrandPortalSchema.pick({\n\tattributes: true,\n\tcategory: true,\n\tcontactMessage: true,\n\tdisplayCatDescriptions: true,\n\tenableSignIn: true,\n\tgoogleAnalyticsEnabled: true,\n\tgoogleAnalyticsId: true,\n\thomeRoute: true,\n\tlabel: true,\n\tlogoutUrl: true,\n\tpageId: true,\n\tpath: true,\n\trequireLogin: true,\n\tsearchPlaceholder: true,\n\tssoLoginEnabled: true,\n\tssoLoginLabel: true,\n\tsingleSignOnURL: true,\n\tuserLevel: true,\n});\n\n/** brand portal form values schema */\nexport type IBrandPortalFormValues = z.infer<typeof BrandPortalFormSchema>;\n\nexport interface IBrandPortalAttributeFormFieldArrayItem\n\textends IBrandPortalAttribute {\n\tid: string;\n}\n\nexport const BrandPortalSchemaNew = BrandPortalSchema.pick({\n\tlabel: true,\n\tpath: true,\n});\n\n/** a new brand portal record */\nexport type IBrandPortalNew = z.infer<typeof BrandPortalSchemaNew>;\n","import {z} from 'zod';\nimport {\n\teditEffectsSortOrder,\n\ttype EditEffectsSortOrderParams,\n\tgetSortField,\n\ttype GetSortFieldParams,\n\tgeSortOrder,\n\ttype GetSortOrderParams,\n\tSortOrder,\n\tSortSchema,\n} from '@netx/core-next/schema';\nimport {BrandPortalField, type IBrandPortal} from './brandPortalSchema';\n\nexport const SYSTEM_BRAND_PORTALS_SORTABLE_FIELDS = [\n\tBrandPortalField.label,\n\tBrandPortalField.path,\n] as const;\n\nexport const SystemBrandPortalsSortSchema = SortSchema.omit({\n\tfield: true,\n}).extend({\n\tfield: z.enum(SYSTEM_BRAND_PORTALS_SORTABLE_FIELDS),\n});\n\nexport type SystemBrandPortalsSort = z.infer<\n\ttypeof SystemBrandPortalsSortSchema\n>;\n\nexport const SystemBrandPortalsSortableField = z.enum(\n\tSYSTEM_BRAND_PORTALS_SORTABLE_FIELDS,\n).enum;\n\nexport const SYSTEM_BRAND_PORTALS_DEFAULT_SORT_FIELD =\n\tSystemBrandPortalsSortableField.label;\n\nexport const SYSTEM_BRAND_PORTALS_DEFAULT_SORT_ORDER = SortOrder.ASCENDING;\n\n/** will return the sort passed in if valid/specified, otherwise will return the defaults for the invalid/unspecified */\nexport const getSystemBrandPortalsDefaultSort = (\n\tsort: Partial<SystemBrandPortalsSort> = {},\n): SystemBrandPortalsSort => ({\n\tfield: getSystemBrandPortalsSortField({sortField: sort.field}),\n\torder: getSystemBrandPortalsSortOrder({sortOrder: sort.order}),\n});\n\n/** will return the passed in sort field if valid, otherwise will retutn the default sort field */\nexport const getSystemBrandPortalsSortField = (\n\tparams: Omit<\n\t\tGetSortFieldParams<typeof SYSTEM_BRAND_PORTALS_SORTABLE_FIELDS[number]>,\n\t\t'defaultSortField' | 'sortableFields'\n\t>,\n) =>\n\tgetSortField({\n\t\t...params,\n\t\tsortableFields: SYSTEM_BRAND_PORTALS_SORTABLE_FIELDS,\n\t\tdefaultSortField: SYSTEM_BRAND_PORTALS_DEFAULT_SORT_FIELD,\n\t});\n\n/** will return the passed in sort order if valid, otherwise will return the default sort order */\nexport const getSystemBrandPortalsSortOrder = (\n\tparams: Omit<GetSortOrderParams, 'defaultSortOrder'>,\n) =>\n\tgeSortOrder({\n\t\t...params,\n\t\tdefaultSortOrder: SYSTEM_BRAND_PORTALS_DEFAULT_SORT_ORDER,\n\t});\n\n/** given the original data, the new data, and the current sort, determine if the sort order was effected */\nexport const editSystemBrandPortalsEffectsOrder = (\n\tparams: Omit<\n\t\tEditEffectsSortOrderParams<\n\t\t\tIBrandPortal,\n\t\t\ttypeof SYSTEM_BRAND_PORTALS_SORTABLE_FIELDS[number]\n\t\t>,\n\t\t'sortableFields'\n\t>,\n) =>\n\teditEffectsSortOrder({\n\t\t...params,\n\t\tsortableFields: SYSTEM_BRAND_PORTALS_SORTABLE_FIELDS,\n\t});\n","import {z} from 'zod';\nimport {stringToJSONSchema} from '@netx/core-next/schema/utils';\n\n/*\n// server response\n{\n goo: \"{\\\\\\\"label\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"actions\\\\\\\":[\\\\\\\"app:contact\\\\\\\",\\\\\\\"cms:route:category:root\\\\\\\",{\\\\\\\"label\\\\\\\":\\\\\\\"New submenu\\\\\\\",\\\\\\\"actions\\\\\\\":[\\\\\\\"cms:action:1:fPrtxF9YrE\\\\\\\",\\\\\\\"cms:route:category:root\\\\\\\"]}]}\"\n id: 1\n modDate: \"2019-09-20 16:46:40\"\n name: \"main\"\n portalId: 1\n userId: 0\n}\n*/\n\nexport const BRAND_PORTAL_MENU_GOO_KEYS = ['label', 'actions'] as const;\n\nexport const BrandPortalMenuSchema = z.object({\n\tid: z.number().int().positive(),\n\t/** ex 2019-09-20 16:46:40 */\n\tmodDate: z.string(),\n\tname: z.string(),\n\tportalId: z.number().int().positive(),\n\tuserId: z.number().int().positive(),\n\tgoo: stringToJSONSchema.pipe(\n\t\tz.object({\n\t\t\tlabel: z.string(),\n\t\t\tactions: z.array(\n\t\t\t\tz.union([\n\t\t\t\t\tz.string(),\n\t\t\t\t\tz.object({\n\t\t\t\t\t\tlabel: z.string(),\n\t\t\t\t\t\tactions: z.array(z.string()),\n\t\t\t\t\t}),\n\t\t\t\t]),\n\t\t\t),\n\t\t}),\n\t),\n});\n\nexport const BrandPortalMenuRawSchema = BrandPortalMenuSchema.omit({\n\tgoo: true,\n}).extend({\n\tgoo: z.string(),\n});\n\nexport type IBrandPortalMenu = z.infer<typeof BrandPortalMenuSchema>;\n\nexport type IBrandPortalMenuRaw = z.infer<typeof BrandPortalMenuRawSchema>;\n","import {z} from 'zod';\nimport {\n\teditRemovesFromFilter,\n\ttype EditRemovesFromFilterParams,\n\tgetDefaultFilters,\n\ttype GetDefaultFiltersParams,\n\tmakeOptionalPropsNullable,\n} from '@netx/core-next/schema';\nimport {\n\tBrandPortalField,\n\ttype IBrandPortal,\n\tBrandPortalSchema,\n} from './brandPortalSchema';\n\nexport const BrandPortalFilterSchema = makeOptionalPropsNullable(\n\tBrandPortalSchema.partial().pick({\n\t\t[BrandPortalField.label]: true,\n\t\t[BrandPortalField.path]: true,\n\t}),\n);\n\nexport const SystemBrandPortalsFilterableField =\n\tBrandPortalFilterSchema.keyof().enum;\n\nexport const SYSTEM_BRAND_PORTALS_FILTERABLE_FIELDS = Object.values(\n\tSystemBrandPortalsFilterableField,\n);\n\nexport type SystemBrandPortalsFilter = z.infer<typeof BrandPortalFilterSchema>;\n\n/** will return the filters passed in if valid/specified, otherwise will return the defaults for the invalid/unspecified */\nexport const getSystemBrandPortalsDefaultFilters = (\n\tparams?: Omit<\n\t\tGetDefaultFiltersParams<SystemBrandPortalsFilter>,\n\t\t'filterableFields'\n\t>,\n): SystemBrandPortalsFilter =>\n\tgetDefaultFilters({\n\t\t...params,\n\t\tfilterableFields: SYSTEM_BRAND_PORTALS_FILTERABLE_FIELDS,\n\t});\n\n/** given the original data, the new data, and the current filters, determine if the record should still be included in the filtered list */\nexport const portalEditRemovesFromFilter = (\n\tparams: Omit<\n\t\tEditRemovesFromFilterParams<IBrandPortal, SystemBrandPortalsFilter>,\n\t\t'schema'\n\t>,\n) =>\n\teditRemovesFromFilter({\n\t\t...params,\n\t\tschema: BrandPortalSchema,\n\t});\n","import {z} from 'zod';\nimport {stringToJSONSchema} from '@netx/core-next/schema/utils';\n\n/*\n// server response\n{\n blocks: {\n assetIds: [],\n goo: \"{\\\\\\\"type\\\\\\\":\\\\\\\"categoryAssetList\\\\\\\",\\\\\\\"html\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"contentIds\\\\\\\":[\\\\\\\"7\\\\\\\"],\\\\\\\"contentLabels\\\\\\\":[\\\\\\\"Images\\\\\\\"],\\\\\\\"buttonDownload\\\\\\\":false,\\\\\\\"buttonCart\\\\\\\":false,\\\\\\\"linkUrl\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"linkTitle\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"imageSize\\\\\\\":\\\\\\\"thumb\\\\\\\",\\\\\\\"itemImageSize\\\\\\\":\\\\\\\"preview\\\\\\\",\\\\\\\"displayAssetName\\\\\\\":\\\\\\\"0\\\\\\\",\\\\\\\"listTitle\\\\\\\":\\\\\\\"\\\\\\\",\\\\\\\"listButtonDownload\\\\\\\":true,\\\\\\\"listButtonCart\\\\\\\":true,\\\\\\\"displayListItemName\\\\\\\":true,\\\\\\\"ordinal\\\\\\\":0}\",\n id: 1,\n modDate: \"2023-03-02 12:53:19\",\n ordinal: 1,\n userId: 27\n }[],\n goo: \"{\\\\\\\"template\\\\\\\":\\\\\\\"template1\\\\\\\",\\\\\\\"title\\\\\\\":\\\\\\\"New page\\\\\\\",\\\\\\\"displayTitle\\\\\\\":true}\",\n id: 1,\n modDate: \"2023-03-02 12:53:19\",\n portalId: 1,\n slug: \"new-page\",\n userId: 27\n}[]\n*/\n\nexport enum BrandPortalPageBlockDisplayAssetName {\n\tNONE = '0',\n\tABOVE_IMAGE = '1',\n\tBELOW_IMAGE = '2',\n}\n\nexport enum BrandPortalPageBlockImageSize {\n\tTHUMB = 'thumb',\n\tPREVIEW = 'preview',\n\tORIGINAL = 'original',\n}\n\nexport enum BrandPortalPageBlockType {\n\tASSET = 'asset',\n\tCAROUSEL = 'carousel',\n\tCATEGORY = 'category',\n\tCATEGORY_ASSET_LIST = 'categoryAssetList',\n\tDIVIDER = 'divider',\n\tHTML = 'html',\n\tSAVED_CART = 'savedCart',\n}\n\nexport const BRAND_PORTAL_PAGE_BLOCK_GOO_KEYS = [\n\t'type',\n\t'html',\n\t'contentIds',\n\t'contentLabels',\n\t'buttonDownload',\n\t'buttonCart',\n\t'linkUrl',\n\t'linkTitle',\n\t'imageSize',\n\t'itemImageSize',\n\t'displayAssetName',\n\t'listTitle',\n\t'listButtonDownload',\n\t'listButtonCart',\n\t'displayListItemName',\n\t'ordinal',\n] as const;\n\nexport const BrandPortalPageBlockSchema = z.object({\n\tid: z.number().int().positive(),\n\tassetIds: z.array(z.number().int().positive()),\n\tgoo: stringToJSONSchema.pipe(\n\t\tz.object({\n\t\t\ttype: z.nativeEnum(BrandPortalPageBlockType),\n\t\t\thtml: z.string(),\n\t\t\t/**\n\t\t\t * if `type` is categoryAssetList, this is the category id\\\n\t\t\t * if `type` is carousel, this is the category id\\\n\t\t\t * if `type` is asset, this is the asset id\\\n\t\t\t * if `type` is savedCart, this is the saved cart id\\\n\t\t\t */\n\t\t\tcontentIds: z.array(z.string()), // TODO: are we going to parse this to number[]?\n\t\t\tcontentLabels: z.array(z.string()),\n\t\t\tbuttonDownload: z.boolean(),\n\t\t\tbuttonCart: z.boolean(),\n\t\t\tlinkUrl: z.string(),\n\t\t\tlinkTitle: z.string(),\n\t\t\t/** BrandPortalPageBlockType.ASSET block type image size */\n\t\t\timageSize: z.nativeEnum(BrandPortalPageBlockImageSize),\n\t\t\t/** BrandPortalPageBlockType.CATEGORY_ASSET_LIST block type image sizes */\n\t\t\titemImageSize: z.nativeEnum(BrandPortalPageBlockImageSize),\n\t\t\tdisplayAssetName: z.string(), // TODO: are we going to parse this to number\n\t\t\tlistTitle: z.string(),\n\t\t\tlistButtonDownload: z.boolean(),\n\t\t\tlistButtonCart: z.boolean(),\n\t\t\tdisplayListItemName: z.boolean(),\n\t\t\tordinal: z.number().int().positive(), // TODO: is this just 0/1?\n\t\t}),\n\t),\n});\n\nexport const BrandPortalPageBlockRawSchema = BrandPortalPageBlockSchema.omit({\n\tgoo: true,\n}).extend({\n\tgoo: z.string(),\n});\n\nexport const BRAND_PORTAL_PAGE_GOO_KEYS = [\n\t'template',\n\t'title',\n\t'displayTitle',\n] as const;\n\nexport const BrandPortalPageSchema = z.object({\n\tid: z.number().int().positive(),\n\tblocks: z.array(BrandPortalPageBlockSchema),\n\tgoo: stringToJSONSchema.pipe(\n\t\tz.object({\n\t\t\ttemplate: z.string(), // TODO: enum\n\t\t\ttitle: z.string(),\n\t\t\tdisplayTitle: z.boolean(),\n\t\t}),\n\t),\n\t/** ex 2019-09-20 16:46:40 */\n\tmodDate: z.string(),\n\tportalId: z.number().int().positive(),\n\tslug: z.string(),\n\tuserId: z.number().int().positive(),\n});\n\nexport const BrandPortalPageRawSchema = BrandPortalPageSchema.extend({\n\tblocks: z.array(BrandPortalPageBlockRawSchema),\n\tgoo: z.string(),\n});\n\nexport type IBrandPortalPage = z.infer<typeof BrandPortalPageSchema>;\n\nexport type IBrandPortalPageRaw = z.infer<typeof BrandPortalPageRawSchema>;\n\nexport type IBrandPortalPageBlock = z.infer<typeof BrandPortalPageBlockSchema>;\n\nexport type IBrandPortalPageBlockRaw = z.infer<\n\ttypeof BrandPortalPageBlockRawSchema\n>;\n","import {z} from 'zod';\nimport {LabelValueSchema} from '@netx/core-next/schema/common';\n\nexport const BrandPortalPageAutoListItemSchema = LabelValueSchema.pick({\n\tlabel: true,\n}).extend({\n\t// we need to move away from these lbvs\n\t// in our api layer we will be sure to at least parse this to an int\n\tvalue: z.number().int().positive(),\n});\n\nexport type IBrandPortalPageAutoListItem = z.infer<\n\ttypeof BrandPortalPageAutoListItemSchema\n>;\n","import window from 'global/window';\nimport {isBrandPortal} from '@netx/core-cms-next/utils/isBrandPortal';\nimport {type IBrandPortal} from '../schema';\n\n// TODO: if we use the comented out version (preferred) then jest mocks break all over the place\n// why?! this took me hours to hunt down and figure out\n// I would assume this causes a race for all the various imports of netx models out there (like currentPortal)\n// import {currentPortal} from '@netx/core-cms/singletons/currentPortal';\n// const getPortal = () => isBrandPortal() && currentPortal;\nexport const getCurrentPortal = (): IBrandPortal | null =>\n\tisBrandPortal() && window.Netx.cms?.portal?.id\n\t\t? window.Netx.cms.portal.attributes\n\t\t: null;\n","import {type IBrandPortal} from '../schema';\nimport {getCurrentPortal} from './getCurrentPortal';\n\nexport const getCurrentPortalProp = (key: keyof IBrandPortal) =>\n\tgetCurrentPortal()?.[key];\n","import window from 'global/window';\n\nexport const getPortalNameFromUrl = (url?: string) => {\n\tconst _url = new URL(url ?? (window.location.href as string));\n\tconst paths = _url.pathname.split('/');\n\treturn paths[paths.length - 2] || 'portal';\n};\n\nexport default getPortalNameFromUrl;\n","/**\n * Check if the app is at a portal endpoint\n */\nexport const isBrandPortal = () => {\n\t// eslint-disable-next-line no-unreachable\n\treturn window.location.pathname.match(/^\\/portals\\//) != null;\n};\n","/**\n * @class\n * @todo finish documenting methods and parsers\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/CMSBlock';\n\nexport default class CMSBlocks extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} methods - The methods available on this model\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tgetBlocks: ['getBlocks', 'blockIds'],\n\t\t};\n\t}\n\n\tget parsers() {\n\t\treturn {\n\t\t\tgetBlocks(blocks, opts) {\n\t\t\t\tthis.set(blocks, _.extend({parse: false}, opts));\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.comparator = opts.comparator || 'ordinal';\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\t}\n\n\tfetchBlocks(ids, opts) {\n\t\tthis.blockIds = ids;\n\t\treturn this.getBlocks(opts).then((result) => {\n\t\t\tdelete this.blockIds;\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} order An object indexed by cid containing the order of the pods\n\t */\n\tupdateOrder(order) {\n\t\t_.each(order, (modelId, idx) => {\n\t\t\tconst model = this.get(modelId);\n\t\t\tif (model != null) {\n\t\t\t\tmodel.set({ordinal: idx + 1});\n\t\t\t}\n\t\t});\n\t\tthis.sort();\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CMSBlocks';\n\t}\n}\n","/**\n * CMSMenu extends the client-side Netx.Menu object with all the properties needed to save & retrieve a menu from the DAM.\n * @class\n */\nimport Base from '@netx/core/lib/netx-menu';\n\nexport default class CMSMenu extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * The unique ID for this model\n\t * @type {string}\n\t */\n\tget idAttribute() {\n\t\treturn 'id';\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {string} defaults.name - non-mutable, portal-unique key (name + portalId == DAM-unique key for the object)\n\t * @property {string} defaults.label - mutable label for the object\n\t * @property {string} defaults.portalId - portal for this menu. Not mutable.\n\t * @property {number} defaults.userId - owner of this menu\n\t * @property {string} defaults.modDate - set by server on update\n\t * @property {array} defaults.actions - the array (possibly nested) of actions in this menu.\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t// id: 0,\n\t\t\tname: '',\n\t\t\tlabel: '',\n\t\t\tportalId: '',\n\t\t\tuserId: 0,\n\t\t\tmodDate: '',\n\t\t\tactions: [],\n\t\t};\n\t}\n\n\t/** @property {array} */\n\tget gooAttrs() {\n\t\treturn ['label', 'actions'];\n\t}\n\n\t/**\n\t * RPC methods:\n\t * @rpcs\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/** @method save */\n\t\t\tcreate: [\n\t\t\t\t'setMenu',\n\t\t\t\tfunction () {\n\t\t\t\t\treturn this.self();\n\t\t\t\t},\n\t\t\t],\n\t\t\tupdate: [\n\t\t\t\t'setMenu',\n\t\t\t\tfunction () {\n\t\t\t\t\treturn this.self();\n\t\t\t\t},\n\t\t\t],\n\t\t\t/** @method fetch */\n\t\t\tread: () => {\n\t\t\t\t// TODO: something is trying to fetch this without a proper portal id\n\t\t\t\tif (!this.portalId) return $.Deferred().resolve();\n\t\t\t\treturn ['getMenuForPortal', 'name', 'portalId'];\n\t\t\t},\n\t\t\t/** @method destroy */\n\t\t\tremove: ['deleteMenuForPortal', 'name', 'portalId'],\n\t\t};\n\t}\n\n\t/** @method */\n\tparse(result, opts) {\n\t\tif (_.isObject(result)) {\n\t\t\tthis.set(this.unpackAttrs(result));\n\t\t} else if (_.isNumeric(result)) {\n\t\t\tthis.set({id: result});\n\t\t}\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts) {\n\t\tsuper(attrs, opts);\n\n\t\tif (this.get('goo')) {\n\t\t\tvar gooAttrs = this.unpackAttrs(\n\t\t\t\t_.pick(this.attributes, this.gooAttrs, 'goo'),\n\t\t\t);\n\t\t\tthis.set(gooAttrs);\n\t\t}\n\t}\n\n\t/** @method */\n\tfetchMenuForPortal(name, portalId) {\n\t\tthis.set({\n\t\t\tname: name,\n\t\t\tportalId: portalId,\n\t\t});\n\t\treturn this.fetch.apply(this, _.rest(arguments, 2));\n\t}\n\n\t/**\n\t * Search for (recursively) and remove a given action from this menu.\n\t * @param {string} event The event string to remove\n\t * @param {array} actions Optional array to search; defalts to this.attributes.actions\n\t * @return {number} Number of actions removed.\n\t */\n\tremoveAction(event, actions) {\n\t\tvar removed = 0;\n\t\tactions = actions || this.get('actions');\n\t\t_.each(\n\t\t\tactions,\n\t\t\tfunction (item, idx, all) {\n\t\t\t\tif (item == event) {\n\t\t\t\t\t// Remove this item from the array\n\t\t\t\t\tactions.splice(idx, 1);\n\t\t\t\t\tremoved++;\n\t\t\t\t\t// Replace the array with a clone, just to trigger BB change events:\n\t\t\t\t\tthis.set('actions', _.clone(actions));\n\t\t\t\t} else if (_.isObject(item) && _.isArray(item.actions)) {\n\t\t\t\t\t// recurse through sub-menu:\n\t\t\t\t\tremoved += this.removeAction(event, item.actions);\n\t\t\t\t}\n\t\t\t},\n\t\t\tthis,\n\t\t);\n\n\t\treturn removed;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CMSMenu';\n\t}\n}\n","import {Locales} from '@netx/core-next/locales';\n\nexport const cmsBlockTypes = [\n\t'asset',\n\t'carousel',\n\t'savedCart',\n\t'category',\n\t'categoryAssetList',\n\t'html',\n\t'divider',\n\t// 'savedSearch', // not a thing in 8.6\n];\n\nexport let blocks = {\n\ttypes: Locales((i18n) => ({\n\t\tasset: i18n('i18n.asset'),\n\t\tcarousel: i18n('i18n.carousel'),\n\t\tsavedCart: i18n('i18n.savedCart'),\n\t\tcategory: i18n('i18n.category'),\n\t\tcategoryAssetList: i18n('i18n.categoryAssetList'),\n\t\thtml: i18n('i18n.html'),\n\t\tdivider: i18n('i18n.divider'),\n\t\t// savedSearch: 'savedSearch', // not a thing in 8.6\n\t})),\n\tassetTypes: {\n\t\tcmsHero: 'Hero',\n\t\tcmsPageLink: 'Page link',\n\n\t\tsingleAssetPreview: 'Preview',\n\t\tsingleAssetOriginal: 'Original',\n\t\tsingleAssetOriginalZoom: 'Original Zoom linked',\n\t\tsingleAssetDownload: 'Download',\n\t\tsingleAssetListItem: 'List Item',\n\t\tsingleAssetPreviewDownload: 'Preview download',\n\t},\n};\n\nexport let links = {\n\ttypes: {\n\t\taction: 'action',\n\t\tasset: 'asset',\n\t\tcategory: 'category',\n\t\tpage: 'page',\n\t\turl: 'url',\n\t},\n};\n\nexport let templates = {\n\tnames: {\n\t\ttemplate1: 'Template 1',\n\t\ttemplate2: 'Template 2',\n\t\ttemplate3: 'Template 3',\n\t\ttemplate4: 'Template 4',\n\t\ttemplate5: 'Template 5',\n\t\ttemplate6: 'Template 6',\n\t\ttemplate7: 'Template 7',\n\t\ttemplate8: 'Template 8',\n\t\ttemplate9: 'Template 9',\n\t\ttemplate10: 'Template 10',\n\t\ttemplate11: 'Template 11',\n\t},\n\t// default template blocks (from \"Clean Page Templates.pdf\")\n\tblocks: {\n\t\ttemplate1: [\n\t\t\t'html',\n\t\t\t'asset',\n\t\t\t'asset',\n\t\t\t'asset',\n\t\t\t'asset',\n\t\t\t'asset',\n\t\t\t'asset',\n\t\t\t'asset',\n\t\t],\n\t\ttemplate2: ['html', 'asset', 'html', 'asset', 'html', 'asset'],\n\t\ttemplate3: ['html', 'asset', 'html', 'html', 'html', 'html'],\n\t\ttemplate4: ['html', 'asset', 'html', 'html'],\n\t\ttemplate5: ['html', 'asset', 'html', 'html'],\n\t},\n};\n\nexport default {\n\tblocks: blocks,\n\tlinks: links,\n\ttemplates: templates,\n};\n","import {\n\tATTRIBUTE_SYSTEM_ID,\n\tATTRIBUTE_SYSTEM,\n} from '@netx/core-attribute/constants';\n\nexport const UPGRADED_FEATURES = ['attributes'];\n\nexport const GOO_SETTING_KEYS = <const>[\n\t'contactMessage',\n\t'detailAttributes',\n\t'googleAnalyticsEnabled',\n\t'googleAnalyticsId',\n\t'homeRoute',\n\t'logoutUrl',\n\t'requireLogin',\n\t'sortAttributes',\n\t'ssoLabel',\n\t'ssoLoginEnabled',\n\t'ssoUrl',\n];\nexport const SETTING_KEYS = <const>[\n\t'attributeIds',\n\t'category',\n\t'categoryName',\n\t'categoryPath',\n\t'displayCatDescriptions',\n\t'label',\n\t'path',\n\t'searchPlaceholder',\n\t'userLevel',\n];\n\nexport const ATTRIBUTE_CONTEXT = <const>{\n\tDETAIL: 'detailAttributes',\n\tSORT: 'sortAttributes',\n};\n\nexport const ENFORCE_ATTRIBUTE_IDS = <const>[\n\tATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.FILE],\n\tATTRIBUTE_SYSTEM_ID[ATTRIBUTE_SYSTEM.NAME],\n];\n","// This file is autogenerated. It's used to publish ESM to npm.\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\n// https://github.com/bgrins/TinyColor\n// Brian Grinstead, MIT License\n\nvar trimLeft = /^\\s+/;\nvar trimRight = /\\s+$/;\nfunction tinycolor(color, opts) {\n color = color ? color : \"\";\n opts = opts || {};\n\n // If input is already a tinycolor, return itself\n if (color instanceof tinycolor) {\n return color;\n }\n // If we are called as a function, call using new instead\n if (!(this instanceof tinycolor)) {\n return new tinycolor(color, opts);\n }\n var rgb = inputToRGB(color);\n this._originalInput = color, this._r = rgb.r, this._g = rgb.g, this._b = rgb.b, this._a = rgb.a, this._roundA = Math.round(100 * this._a) / 100, this._format = opts.format || rgb.format;\n this._gradientType = opts.gradientType;\n\n // Don't let the range of [0,255] come back in [0,1].\n // Potentially lose a little bit of precision here, but will fix issues where\n // .5 gets interpreted as half of the total, instead of half of 1\n // If it was supposed to be 128, this was already taken care of by `inputToRgb`\n if (this._r < 1) this._r = Math.round(this._r);\n if (this._g < 1) this._g = Math.round(this._g);\n if (this._b < 1) this._b = Math.round(this._b);\n this._ok = rgb.ok;\n}\ntinycolor.prototype = {\n isDark: function isDark() {\n return this.getBrightness() < 128;\n },\n isLight: function isLight() {\n return !this.isDark();\n },\n isValid: function isValid() {\n return this._ok;\n },\n getOriginalInput: function getOriginalInput() {\n return this._originalInput;\n },\n getFormat: function getFormat() {\n return this._format;\n },\n getAlpha: function getAlpha() {\n return this._a;\n },\n getBrightness: function getBrightness() {\n //http://www.w3.org/TR/AERT#color-contrast\n var rgb = this.toRgb();\n return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;\n },\n getLuminance: function getLuminance() {\n //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef\n var rgb = this.toRgb();\n var RsRGB, GsRGB, BsRGB, R, G, B;\n RsRGB = rgb.r / 255;\n GsRGB = rgb.g / 255;\n BsRGB = rgb.b / 255;\n if (RsRGB <= 0.03928) R = RsRGB / 12.92;else R = Math.pow((RsRGB + 0.055) / 1.055, 2.4);\n if (GsRGB <= 0.03928) G = GsRGB / 12.92;else G = Math.pow((GsRGB + 0.055) / 1.055, 2.4);\n if (BsRGB <= 0.03928) B = BsRGB / 12.92;else B = Math.pow((BsRGB + 0.055) / 1.055, 2.4);\n return 0.2126 * R + 0.7152 * G + 0.0722 * B;\n },\n setAlpha: function setAlpha(value) {\n this._a = boundAlpha(value);\n this._roundA = Math.round(100 * this._a) / 100;\n return this;\n },\n toHsv: function toHsv() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n return {\n h: hsv.h * 360,\n s: hsv.s,\n v: hsv.v,\n a: this._a\n };\n },\n toHsvString: function toHsvString() {\n var hsv = rgbToHsv(this._r, this._g, this._b);\n var h = Math.round(hsv.h * 360),\n s = Math.round(hsv.s * 100),\n v = Math.round(hsv.v * 100);\n return this._a == 1 ? \"hsv(\" + h + \", \" + s + \"%, \" + v + \"%)\" : \"hsva(\" + h + \", \" + s + \"%, \" + v + \"%, \" + this._roundA + \")\";\n },\n toHsl: function toHsl() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n return {\n h: hsl.h * 360,\n s: hsl.s,\n l: hsl.l,\n a: this._a\n };\n },\n toHslString: function toHslString() {\n var hsl = rgbToHsl(this._r, this._g, this._b);\n var h = Math.round(hsl.h * 360),\n s = Math.round(hsl.s * 100),\n l = Math.round(hsl.l * 100);\n return this._a == 1 ? \"hsl(\" + h + \", \" + s + \"%, \" + l + \"%)\" : \"hsla(\" + h + \", \" + s + \"%, \" + l + \"%, \" + this._roundA + \")\";\n },\n toHex: function toHex(allow3Char) {\n return rgbToHex(this._r, this._g, this._b, allow3Char);\n },\n toHexString: function toHexString(allow3Char) {\n return \"#\" + this.toHex(allow3Char);\n },\n toHex8: function toHex8(allow4Char) {\n return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);\n },\n toHex8String: function toHex8String(allow4Char) {\n return \"#\" + this.toHex8(allow4Char);\n },\n toRgb: function toRgb() {\n return {\n r: Math.round(this._r),\n g: Math.round(this._g),\n b: Math.round(this._b),\n a: this._a\n };\n },\n toRgbString: function toRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \")\" : \"rgba(\" + Math.round(this._r) + \", \" + Math.round(this._g) + \", \" + Math.round(this._b) + \", \" + this._roundA + \")\";\n },\n toPercentageRgb: function toPercentageRgb() {\n return {\n r: Math.round(bound01(this._r, 255) * 100) + \"%\",\n g: Math.round(bound01(this._g, 255) * 100) + \"%\",\n b: Math.round(bound01(this._b, 255) * 100) + \"%\",\n a: this._a\n };\n },\n toPercentageRgbString: function toPercentageRgbString() {\n return this._a == 1 ? \"rgb(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%)\" : \"rgba(\" + Math.round(bound01(this._r, 255) * 100) + \"%, \" + Math.round(bound01(this._g, 255) * 100) + \"%, \" + Math.round(bound01(this._b, 255) * 100) + \"%, \" + this._roundA + \")\";\n },\n toName: function toName() {\n if (this._a === 0) {\n return \"transparent\";\n }\n if (this._a < 1) {\n return false;\n }\n return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;\n },\n toFilter: function toFilter(secondColor) {\n var hex8String = \"#\" + rgbaToArgbHex(this._r, this._g, this._b, this._a);\n var secondHex8String = hex8String;\n var gradientType = this._gradientType ? \"GradientType = 1, \" : \"\";\n if (secondColor) {\n var s = tinycolor(secondColor);\n secondHex8String = \"#\" + rgbaToArgbHex(s._r, s._g, s._b, s._a);\n }\n return \"progid:DXImageTransform.Microsoft.gradient(\" + gradientType + \"startColorstr=\" + hex8String + \",endColorstr=\" + secondHex8String + \")\";\n },\n toString: function toString(format) {\n var formatSet = !!format;\n format = format || this._format;\n var formattedString = false;\n var hasAlpha = this._a < 1 && this._a >= 0;\n var needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\" || format === \"hex3\" || format === \"hex4\" || format === \"hex8\" || format === \"name\");\n if (needsAlphaFormat) {\n // Special case for \"transparent\", all other non-alpha formats\n // will return rgba when there is transparency.\n if (format === \"name\" && this._a === 0) {\n return this.toName();\n }\n return this.toRgbString();\n }\n if (format === \"rgb\") {\n formattedString = this.toRgbString();\n }\n if (format === \"prgb\") {\n formattedString = this.toPercentageRgbString();\n }\n if (format === \"hex\" || format === \"hex6\") {\n formattedString = this.toHexString();\n }\n if (format === \"hex3\") {\n formattedString = this.toHexString(true);\n }\n if (format === \"hex4\") {\n formattedString = this.toHex8String(true);\n }\n if (format === \"hex8\") {\n formattedString = this.toHex8String();\n }\n if (format === \"name\") {\n formattedString = this.toName();\n }\n if (format === \"hsl\") {\n formattedString = this.toHslString();\n }\n if (format === \"hsv\") {\n formattedString = this.toHsvString();\n }\n return formattedString || this.toHexString();\n },\n clone: function clone() {\n return tinycolor(this.toString());\n },\n _applyModification: function _applyModification(fn, args) {\n var color = fn.apply(null, [this].concat([].slice.call(args)));\n this._r = color._r;\n this._g = color._g;\n this._b = color._b;\n this.setAlpha(color._a);\n return this;\n },\n lighten: function lighten() {\n return this._applyModification(_lighten, arguments);\n },\n brighten: function brighten() {\n return this._applyModification(_brighten, arguments);\n },\n darken: function darken() {\n return this._applyModification(_darken, arguments);\n },\n desaturate: function desaturate() {\n return this._applyModification(_desaturate, arguments);\n },\n saturate: function saturate() {\n return this._applyModification(_saturate, arguments);\n },\n greyscale: function greyscale() {\n return this._applyModification(_greyscale, arguments);\n },\n spin: function spin() {\n return this._applyModification(_spin, arguments);\n },\n _applyCombination: function _applyCombination(fn, args) {\n return fn.apply(null, [this].concat([].slice.call(args)));\n },\n analogous: function analogous() {\n return this._applyCombination(_analogous, arguments);\n },\n complement: function complement() {\n return this._applyCombination(_complement, arguments);\n },\n monochromatic: function monochromatic() {\n return this._applyCombination(_monochromatic, arguments);\n },\n splitcomplement: function splitcomplement() {\n return this._applyCombination(_splitcomplement, arguments);\n },\n // Disabled until https://github.com/bgrins/TinyColor/issues/254\n // polyad: function (number) {\n // return this._applyCombination(polyad, [number]);\n // },\n triad: function triad() {\n return this._applyCombination(polyad, [3]);\n },\n tetrad: function tetrad() {\n return this._applyCombination(polyad, [4]);\n }\n};\n\n// If input is an object, force 1 into \"1.0\" to handle ratios properly\n// String input requires \"1.0\" as input, so 1 will be treated as 1\ntinycolor.fromRatio = function (color, opts) {\n if (_typeof(color) == \"object\") {\n var newColor = {};\n for (var i in color) {\n if (color.hasOwnProperty(i)) {\n if (i === \"a\") {\n newColor[i] = color[i];\n } else {\n newColor[i] = convertToPercentage(color[i]);\n }\n }\n }\n color = newColor;\n }\n return tinycolor(color, opts);\n};\n\n// Given a string or object, convert that input to RGB\n// Possible string inputs:\n//\n// \"red\"\n// \"#f00\" or \"f00\"\n// \"#ff0000\" or \"ff0000\"\n// \"#ff000000\" or \"ff000000\"\n// \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n// \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n// \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n// \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n// \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n// \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n// \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n//\nfunction inputToRGB(color) {\n var rgb = {\n r: 0,\n g: 0,\n b: 0\n };\n var a = 1;\n var s = null;\n var v = null;\n var l = null;\n var ok = false;\n var format = false;\n if (typeof color == \"string\") {\n color = stringInputToObject(color);\n }\n if (_typeof(color) == \"object\") {\n if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n rgb = rgbToRgb(color.r, color.g, color.b);\n ok = true;\n format = String(color.r).substr(-1) === \"%\" ? \"prgb\" : \"rgb\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n s = convertToPercentage(color.s);\n v = convertToPercentage(color.v);\n rgb = hsvToRgb(color.h, s, v);\n ok = true;\n format = \"hsv\";\n } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n s = convertToPercentage(color.s);\n l = convertToPercentage(color.l);\n rgb = hslToRgb(color.h, s, l);\n ok = true;\n format = \"hsl\";\n }\n if (color.hasOwnProperty(\"a\")) {\n a = color.a;\n }\n }\n a = boundAlpha(a);\n return {\n ok: ok,\n format: color.format || format,\n r: Math.min(255, Math.max(rgb.r, 0)),\n g: Math.min(255, Math.max(rgb.g, 0)),\n b: Math.min(255, Math.max(rgb.b, 0)),\n a: a\n };\n}\n\n// Conversion Functions\n// --------------------\n\n// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:\n// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>\n\n// `rgbToRgb`\n// Handle bounds / percentage checking to conform to CSS color spec\n// <http://www.w3.org/TR/css3-color/>\n// *Assumes:* r, g, b in [0, 255] or [0, 1]\n// *Returns:* { r, g, b } in [0, 255]\nfunction rgbToRgb(r, g, b) {\n return {\n r: bound01(r, 255) * 255,\n g: bound01(g, 255) * 255,\n b: bound01(b, 255) * 255\n };\n}\n\n// `rgbToHsl`\n// Converts an RGB color value to HSL.\n// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]\n// *Returns:* { h, s, l } in [0,1]\nfunction rgbToHsl(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n l = (max + min) / 2;\n if (max == min) {\n h = s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n l: l\n };\n}\n\n// `hslToRgb`\n// Converts an HSL color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hslToRgb(h, s, l) {\n var r, g, b;\n h = bound01(h, 360);\n s = bound01(s, 100);\n l = bound01(l, 100);\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHsv`\n// Converts an RGB color value to HSV\n// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]\n// *Returns:* { h, s, v } in [0,1]\nfunction rgbToHsv(r, g, b) {\n r = bound01(r, 255);\n g = bound01(g, 255);\n b = bound01(b, 255);\n var max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n var h,\n s,\n v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max == min) {\n h = 0; // achromatic\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n return {\n h: h,\n s: s,\n v: v\n };\n}\n\n// `hsvToRgb`\n// Converts an HSV color value to RGB.\n// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]\n// *Returns:* { r, g, b } in the set [0, 255]\nfunction hsvToRgb(h, s, v) {\n h = bound01(h, 360) * 6;\n s = bound01(s, 100);\n v = bound01(v, 100);\n var i = Math.floor(h),\n f = h - i,\n p = v * (1 - s),\n q = v * (1 - f * s),\n t = v * (1 - (1 - f) * s),\n mod = i % 6,\n r = [v, q, p, p, t, v][mod],\n g = [t, v, v, q, p, p][mod],\n b = [p, p, t, v, v, q][mod];\n return {\n r: r * 255,\n g: g * 255,\n b: b * 255\n };\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nfunction rgbToHex(r, g, b, allow3Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n\n // Return a 3 character hex if possible\n if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nfunction rgbaToHex(r, g, b, a, allow4Char) {\n var hex = [pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16)), pad2(convertDecimalToHex(a))];\n\n // Return a 4 character hex if possible\n if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\n return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n }\n return hex.join(\"\");\n}\n\n// `rgbaToArgbHex`\n// Converts an RGBA color to an ARGB Hex8 string\n// Rarely used, but required for \"toFilter()\"\nfunction rgbaToArgbHex(r, g, b, a) {\n var hex = [pad2(convertDecimalToHex(a)), pad2(Math.round(r).toString(16)), pad2(Math.round(g).toString(16)), pad2(Math.round(b).toString(16))];\n return hex.join(\"\");\n}\n\n// `equals`\n// Can be called with any tinycolor input\ntinycolor.equals = function (color1, color2) {\n if (!color1 || !color2) return false;\n return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();\n};\ntinycolor.random = function () {\n return tinycolor.fromRatio({\n r: Math.random(),\n g: Math.random(),\n b: Math.random()\n });\n};\n\n// Modification Functions\n// ----------------------\n// Thanks to less.js for some of the basics here\n// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>\n\nfunction _desaturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s -= amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _saturate(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.s += amount / 100;\n hsl.s = clamp01(hsl.s);\n return tinycolor(hsl);\n}\nfunction _greyscale(color) {\n return tinycolor(color).desaturate(100);\n}\nfunction _lighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l += amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\nfunction _brighten(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var rgb = tinycolor(color).toRgb();\n rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))));\n rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))));\n rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))));\n return tinycolor(rgb);\n}\nfunction _darken(color, amount) {\n amount = amount === 0 ? 0 : amount || 10;\n var hsl = tinycolor(color).toHsl();\n hsl.l -= amount / 100;\n hsl.l = clamp01(hsl.l);\n return tinycolor(hsl);\n}\n\n// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.\n// Values outside of this range will be wrapped into this range.\nfunction _spin(color, amount) {\n var hsl = tinycolor(color).toHsl();\n var hue = (hsl.h + amount) % 360;\n hsl.h = hue < 0 ? 360 + hue : hue;\n return tinycolor(hsl);\n}\n\n// Combination Functions\n// ---------------------\n// Thanks to jQuery xColor for some of the ideas behind these\n// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>\n\nfunction _complement(color) {\n var hsl = tinycolor(color).toHsl();\n hsl.h = (hsl.h + 180) % 360;\n return tinycolor(hsl);\n}\nfunction polyad(color, number) {\n if (isNaN(number) || number <= 0) {\n throw new Error(\"Argument to polyad must be a positive number\");\n }\n var hsl = tinycolor(color).toHsl();\n var result = [tinycolor(color)];\n var step = 360 / number;\n for (var i = 1; i < number; i++) {\n result.push(tinycolor({\n h: (hsl.h + i * step) % 360,\n s: hsl.s,\n l: hsl.l\n }));\n }\n return result;\n}\nfunction _splitcomplement(color) {\n var hsl = tinycolor(color).toHsl();\n var h = hsl.h;\n return [tinycolor(color), tinycolor({\n h: (h + 72) % 360,\n s: hsl.s,\n l: hsl.l\n }), tinycolor({\n h: (h + 216) % 360,\n s: hsl.s,\n l: hsl.l\n })];\n}\nfunction _analogous(color, results, slices) {\n results = results || 6;\n slices = slices || 30;\n var hsl = tinycolor(color).toHsl();\n var part = 360 / slices;\n var ret = [tinycolor(color)];\n for (hsl.h = (hsl.h - (part * results >> 1) + 720) % 360; --results;) {\n hsl.h = (hsl.h + part) % 360;\n ret.push(tinycolor(hsl));\n }\n return ret;\n}\nfunction _monochromatic(color, results) {\n results = results || 6;\n var hsv = tinycolor(color).toHsv();\n var h = hsv.h,\n s = hsv.s,\n v = hsv.v;\n var ret = [];\n var modification = 1 / results;\n while (results--) {\n ret.push(tinycolor({\n h: h,\n s: s,\n v: v\n }));\n v = (v + modification) % 1;\n }\n return ret;\n}\n\n// Utility Functions\n// ---------------------\n\ntinycolor.mix = function (color1, color2, amount) {\n amount = amount === 0 ? 0 : amount || 50;\n var rgb1 = tinycolor(color1).toRgb();\n var rgb2 = tinycolor(color2).toRgb();\n var p = amount / 100;\n var rgba = {\n r: (rgb2.r - rgb1.r) * p + rgb1.r,\n g: (rgb2.g - rgb1.g) * p + rgb1.g,\n b: (rgb2.b - rgb1.b) * p + rgb1.b,\n a: (rgb2.a - rgb1.a) * p + rgb1.a\n };\n return tinycolor(rgba);\n};\n\n// Readability Functions\n// ---------------------\n// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)\n\n// `contrast`\n// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)\ntinycolor.readability = function (color1, color2) {\n var c1 = tinycolor(color1);\n var c2 = tinycolor(color2);\n return (Math.max(c1.getLuminance(), c2.getLuminance()) + 0.05) / (Math.min(c1.getLuminance(), c2.getLuminance()) + 0.05);\n};\n\n// `isReadable`\n// Ensure that foreground and background color combinations meet WCAG2 guidelines.\n// The third argument is an optional Object.\n// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';\n// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.\n// If the entire object is absent, isReadable defaults to {level:\"AA\",size:\"small\"}.\n\n// *Example*\n// tinycolor.isReadable(\"#000\", \"#111\") => false\n// tinycolor.isReadable(\"#000\", \"#111\",{level:\"AA\",size:\"large\"}) => false\ntinycolor.isReadable = function (color1, color2, wcag2) {\n var readability = tinycolor.readability(color1, color2);\n var wcag2Parms, out;\n out = false;\n wcag2Parms = validateWCAG2Parms(wcag2);\n switch (wcag2Parms.level + wcag2Parms.size) {\n case \"AAsmall\":\n case \"AAAlarge\":\n out = readability >= 4.5;\n break;\n case \"AAlarge\":\n out = readability >= 3;\n break;\n case \"AAAsmall\":\n out = readability >= 7;\n break;\n }\n return out;\n};\n\n// `mostReadable`\n// Given a base color and a list of possible foreground or background\n// colors for that base, returns the most readable color.\n// Optionally returns Black or White if the most readable color is unreadable.\n// *Example*\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:false}).toHexString(); // \"#112255\"\n// tinycolor.mostReadable(tinycolor.mostReadable(\"#123\", [\"#124\", \"#125\"],{includeFallbackColors:true}).toHexString(); // \"#ffffff\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"large\"}).toHexString(); // \"#faf3f3\"\n// tinycolor.mostReadable(\"#a8015a\", [\"#faf3f3\"],{includeFallbackColors:true,level:\"AAA\",size:\"small\"}).toHexString(); // \"#ffffff\"\ntinycolor.mostReadable = function (baseColor, colorList, args) {\n var bestColor = null;\n var bestScore = 0;\n var readability;\n var includeFallbackColors, level, size;\n args = args || {};\n includeFallbackColors = args.includeFallbackColors;\n level = args.level;\n size = args.size;\n for (var i = 0; i < colorList.length; i++) {\n readability = tinycolor.readability(baseColor, colorList[i]);\n if (readability > bestScore) {\n bestScore = readability;\n bestColor = tinycolor(colorList[i]);\n }\n }\n if (tinycolor.isReadable(baseColor, bestColor, {\n level: level,\n size: size\n }) || !includeFallbackColors) {\n return bestColor;\n } else {\n args.includeFallbackColors = false;\n return tinycolor.mostReadable(baseColor, [\"#fff\", \"#000\"], args);\n }\n};\n\n// Big List of Colors\n// ------------------\n// <https://www.w3.org/TR/css-color-4/#named-colors>\nvar names = tinycolor.names = {\n aliceblue: \"f0f8ff\",\n antiquewhite: \"faebd7\",\n aqua: \"0ff\",\n aquamarine: \"7fffd4\",\n azure: \"f0ffff\",\n beige: \"f5f5dc\",\n bisque: \"ffe4c4\",\n black: \"000\",\n blanchedalmond: \"ffebcd\",\n blue: \"00f\",\n blueviolet: \"8a2be2\",\n brown: \"a52a2a\",\n burlywood: \"deb887\",\n burntsienna: \"ea7e5d\",\n cadetblue: \"5f9ea0\",\n chartreuse: \"7fff00\",\n chocolate: \"d2691e\",\n coral: \"ff7f50\",\n cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\",\n crimson: \"dc143c\",\n cyan: \"0ff\",\n darkblue: \"00008b\",\n darkcyan: \"008b8b\",\n darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\",\n darkgreen: \"006400\",\n darkgrey: \"a9a9a9\",\n darkkhaki: \"bdb76b\",\n darkmagenta: \"8b008b\",\n darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\",\n darkorchid: \"9932cc\",\n darkred: \"8b0000\",\n darksalmon: \"e9967a\",\n darkseagreen: \"8fbc8f\",\n darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\",\n darkslategrey: \"2f4f4f\",\n darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\",\n deeppink: \"ff1493\",\n deepskyblue: \"00bfff\",\n dimgray: \"696969\",\n dimgrey: \"696969\",\n dodgerblue: \"1e90ff\",\n firebrick: \"b22222\",\n floralwhite: \"fffaf0\",\n forestgreen: \"228b22\",\n fuchsia: \"f0f\",\n gainsboro: \"dcdcdc\",\n ghostwhite: \"f8f8ff\",\n gold: \"ffd700\",\n goldenrod: \"daa520\",\n gray: \"808080\",\n green: \"008000\",\n greenyellow: \"adff2f\",\n grey: \"808080\",\n honeydew: \"f0fff0\",\n hotpink: \"ff69b4\",\n indianred: \"cd5c5c\",\n indigo: \"4b0082\",\n ivory: \"fffff0\",\n khaki: \"f0e68c\",\n lavender: \"e6e6fa\",\n lavenderblush: \"fff0f5\",\n lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\",\n lightblue: \"add8e6\",\n lightcoral: \"f08080\",\n lightcyan: \"e0ffff\",\n lightgoldenrodyellow: \"fafad2\",\n lightgray: \"d3d3d3\",\n lightgreen: \"90ee90\",\n lightgrey: \"d3d3d3\",\n lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\",\n lightseagreen: \"20b2aa\",\n lightskyblue: \"87cefa\",\n lightslategray: \"789\",\n lightslategrey: \"789\",\n lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\",\n lime: \"0f0\",\n limegreen: \"32cd32\",\n linen: \"faf0e6\",\n magenta: \"f0f\",\n maroon: \"800000\",\n mediumaquamarine: \"66cdaa\",\n mediumblue: \"0000cd\",\n mediumorchid: \"ba55d3\",\n mediumpurple: \"9370db\",\n mediumseagreen: \"3cb371\",\n mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\",\n mediumturquoise: \"48d1cc\",\n mediumvioletred: \"c71585\",\n midnightblue: \"191970\",\n mintcream: \"f5fffa\",\n mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\",\n navajowhite: \"ffdead\",\n navy: \"000080\",\n oldlace: \"fdf5e6\",\n olive: \"808000\",\n olivedrab: \"6b8e23\",\n orange: \"ffa500\",\n orangered: \"ff4500\",\n orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\",\n palegreen: \"98fb98\",\n paleturquoise: \"afeeee\",\n palevioletred: \"db7093\",\n papayawhip: \"ffefd5\",\n peachpuff: \"ffdab9\",\n peru: \"cd853f\",\n pink: \"ffc0cb\",\n plum: \"dda0dd\",\n powderblue: \"b0e0e6\",\n purple: \"800080\",\n rebeccapurple: \"663399\",\n red: \"f00\",\n rosybrown: \"bc8f8f\",\n royalblue: \"4169e1\",\n saddlebrown: \"8b4513\",\n salmon: \"fa8072\",\n sandybrown: \"f4a460\",\n seagreen: \"2e8b57\",\n seashell: \"fff5ee\",\n sienna: \"a0522d\",\n silver: \"c0c0c0\",\n skyblue: \"87ceeb\",\n slateblue: \"6a5acd\",\n slategray: \"708090\",\n slategrey: \"708090\",\n snow: \"fffafa\",\n springgreen: \"00ff7f\",\n steelblue: \"4682b4\",\n tan: \"d2b48c\",\n teal: \"008080\",\n thistle: \"d8bfd8\",\n tomato: \"ff6347\",\n turquoise: \"40e0d0\",\n violet: \"ee82ee\",\n wheat: \"f5deb3\",\n white: \"fff\",\n whitesmoke: \"f5f5f5\",\n yellow: \"ff0\",\n yellowgreen: \"9acd32\"\n};\n\n// Make it easy to access colors via `hexNames[hex]`\nvar hexNames = tinycolor.hexNames = flip(names);\n\n// Utilities\n// ---------\n\n// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`\nfunction flip(o) {\n var flipped = {};\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n flipped[o[i]] = i;\n }\n }\n return flipped;\n}\n\n// Return a valid alpha value [0,1] with all invalid values being set to 1\nfunction boundAlpha(a) {\n a = parseFloat(a);\n if (isNaN(a) || a < 0 || a > 1) {\n a = 1;\n }\n return a;\n}\n\n// Take input from [0, n] and return it as [0, 1]\nfunction bound01(n, max) {\n if (isOnePointZero(n)) n = \"100%\";\n var processPercent = isPercentage(n);\n n = Math.min(max, Math.max(0, parseFloat(n)));\n\n // Automatically convert percentage into number\n if (processPercent) {\n n = parseInt(n * max, 10) / 100;\n }\n\n // Handle floating point rounding errors\n if (Math.abs(n - max) < 0.000001) {\n return 1;\n }\n\n // Convert into [0, 1] range if it isn't already\n return n % max / parseFloat(max);\n}\n\n// Force a number between 0 and 1\nfunction clamp01(val) {\n return Math.min(1, Math.max(0, val));\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n return parseInt(val, 16);\n}\n\n// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1\n// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>\nfunction isOnePointZero(n) {\n return typeof n == \"string\" && n.indexOf(\".\") != -1 && parseFloat(n) === 1;\n}\n\n// Check to see if string passed in is a percentage\nfunction isPercentage(n) {\n return typeof n === \"string\" && n.indexOf(\"%\") != -1;\n}\n\n// Force a hex value to have 2 characters\nfunction pad2(c) {\n return c.length == 1 ? \"0\" + c : \"\" + c;\n}\n\n// Replace a decimal with it's percentage value\nfunction convertToPercentage(n) {\n if (n <= 1) {\n n = n * 100 + \"%\";\n }\n return n;\n}\n\n// Converts a decimal to a hex value\nfunction convertDecimalToHex(d) {\n return Math.round(parseFloat(d) * 255).toString(16);\n}\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n return parseIntFromHex(h) / 255;\n}\nvar matchers = function () {\n // <http://www.w3.org/TR/css3-values/#integers>\n var CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\n\n // <http://www.w3.org/TR/css3-values/#number-value>\n var CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\n\n // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.\n var CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n\n // Actual matching.\n // Parentheses and commas are optional, but not required.\n // Whitespace can take the place of commas or opening paren\n var PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n var PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\n return {\n CSS_UNIT: new RegExp(CSS_UNIT),\n rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\n rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\n hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\n hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\n hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\n hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\n hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n };\n}();\n\n// `isValidCSSUnit`\n// Take in a single string / number and check to see if it looks like a CSS unit\n// (see `matchers` above for definition).\nfunction isValidCSSUnit(color) {\n return !!matchers.CSS_UNIT.exec(color);\n}\n\n// `stringInputToObject`\n// Permissive string parsing. Take in a number of formats, and output an object\n// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nfunction stringInputToObject(color) {\n color = color.replace(trimLeft, \"\").replace(trimRight, \"\").toLowerCase();\n var named = false;\n if (names[color]) {\n color = names[color];\n named = true;\n } else if (color == \"transparent\") {\n return {\n r: 0,\n g: 0,\n b: 0,\n a: 0,\n format: \"name\"\n };\n }\n\n // Try to match string input using regular expressions.\n // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n // Just return an object and let the conversion functions handle that.\n // This way the result will be the same whether the tinycolor is initialized with string or object.\n var match;\n if (match = matchers.rgb.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3]\n };\n }\n if (match = matchers.rgba.exec(color)) {\n return {\n r: match[1],\n g: match[2],\n b: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsl.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3]\n };\n }\n if (match = matchers.hsla.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n l: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hsv.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3]\n };\n }\n if (match = matchers.hsva.exec(color)) {\n return {\n h: match[1],\n s: match[2],\n v: match[3],\n a: match[4]\n };\n }\n if (match = matchers.hex8.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n a: convertHexToDecimal(match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex6.exec(color)) {\n return {\n r: parseIntFromHex(match[1]),\n g: parseIntFromHex(match[2]),\n b: parseIntFromHex(match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n if (match = matchers.hex4.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n a: convertHexToDecimal(match[4] + \"\" + match[4]),\n format: named ? \"name\" : \"hex8\"\n };\n }\n if (match = matchers.hex3.exec(color)) {\n return {\n r: parseIntFromHex(match[1] + \"\" + match[1]),\n g: parseIntFromHex(match[2] + \"\" + match[2]),\n b: parseIntFromHex(match[3] + \"\" + match[3]),\n format: named ? \"name\" : \"hex\"\n };\n }\n return false;\n}\nfunction validateWCAG2Parms(parms) {\n // return valid WCAG2 parms for isReadable.\n // If input parms are invalid, return {\"level\":\"AA\", \"size\":\"small\"}\n var level, size;\n parms = parms || {\n level: \"AA\",\n size: \"small\"\n };\n level = (parms.level || \"AA\").toUpperCase();\n size = (parms.size || \"small\").toLowerCase();\n if (level !== \"AA\" && level !== \"AAA\") {\n level = \"AA\";\n }\n if (size !== \"small\" && size !== \"large\") {\n size = \"small\";\n }\n return {\n level: level,\n size: size\n };\n}\n\nexport { tinycolor as default };\n","/**\n * CMSPortal model\n *\n * A portal is a hosted sub-site on a DAM: DAMs can have N portals, one\n * for each subdirectory in webapps/ROOT/portals .\n *\n * @class\n */\n// TODO: clean up this model\n// Netx.Models.CMSPortal = Netx.Model.extend(/** @lends Netx.Models.CMSPortal */{\nimport tinycolor from 'tinycolor2';\nimport AssetModel from '@netx/core-asset/models/asset';\nimport {portalDefaults} from '@netx/core-cms-next/defaults';\nimport {getPortalNameFromUrl} from '@netx/core-cms-next/utils/getPortalNameFromUrl';\nimport cmsConfig from '@netx/core-cms/config';\nimport {DEFAULT_ATTRIBUTE_IDS} from '@netx/core-cms/services/settings/constants';\nimport {setStyleProperty} from '@netx/core/css';\nimport Base from '@netx/core/lib/netx-model';\n\nconst Models = {\n\tAsset: AssetModel,\n};\n\nexport default class CMSPortal extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {array} defaults.carousel - The default portal carousel array (assets ids)\n\t * @property {number} defaults.category - The defualt portal category id\n\t * @property {string} defaults.color1 - The defualt portal color1 (hex color string)\n\t * @property {string} defaults.color2 - The defualt portal color2 (hex color string)\n\t * @property {string} defaults.copyright - The defualt portal copyright\n\t * @property {boolean} defaults.displayCatDescriptions - The defualt portal display category description\n\t * @property {number} defaults.font - The defualt portal font (asset id)\n\t * @property {boolean} defaults.googleAnalyticsEnabled - The default portal google analytics enabled boolean\n\t * @property {string} defaults.googleAnalyticsId - The default portal google analytics code\n\t * @property {number} defaults.group - The defualt portal group id\n\t * @property {string} defaults.homeRoute - The default portal home route\n\t * @property {number} defaults.logo - The defualt portal logo (asset id)\n\t * @property {string} defaults.name - The defualt portal name (mirrors label, read only - but used to fetch portal by name... only we put the `path` in there (slug))\n\t * @property {string} defaults.path - The defualt portal path (slug)\n\t * @property {string} defaults.portalTitle - The defualt portal title\n\t * @property {object} defaults.properties - This is a clientside attribute that is populated by the server and is not writable\n\t * @property {boolean} defaults.requireLogin - The default portal require login bool\n\t * @property {string} defaults.searchPlaceholder - The defualt portal search placeholder text\n\t * @property {string} defaults.singleSignOnURL - The defualt portal single sign on URL\n\t * @property {string} defaults.tagline - The defualt portal tagline\n\t * @property {string} defaults.termsAndConditions - The defualt portal terms and conditions\n\t * @property {number} defaults.userLEvel - The defualt portal user level\n\t * @property {boolean} defaults.visible - The defualt portal visibility\n\t * @property {number} defaults.watermark - The defualt portal watermark (asset id)\n\t * @property {string} defaults.watermarkPos - The defualt portal watermark position ( top-left, top-right, bottom-left, bottom-right, center )\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t...portalDefaults,\n\n\t\t\t// Client attributes\n\t\t\tcategoryModel: null,\n\t\t\tfontModel: null,\n\t\t\tgroupModel: null,\n\t\t\tlogoModel: null,\n\t\t\tfaviconModel: null,\n\t\t\tproperties: {},\n\t\t\twatermarkModel: null,\n\t\t};\n\t}\n\n\t/**\n\t * Array of model attributes that are client specific and should never be sent to the server\n\t * @type {Array}\n\t */\n\tget clientAttrs() {\n\t\treturn [\n\t\t\t'categoryModel',\n\t\t\t'fontModel',\n\t\t\t'groupModel',\n\t\t\t'logoModel',\n\t\t\t'faviconModel',\n\t\t\t'properties',\n\t\t\t'watermarkModel',\n\t\t];\n\t}\n\n\t/**\n\t * @property {object} methods - The methods available on this model\n\t * @property {method} methods.read - The read method (get)\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tread() {\n\t\t\t\t// TODO: note, we are actually passing the `path`(slug)\n\t\t\t\t// but name is the human-readable name of the portal (mirrors label)\n\t\t\t\t// we are not doing anything wrong with that per se... but just note\n\t\t\t\t// this call is not properly named and whatever you set as `name`,\n\t\t\t\t// before calling this, will be blown out and replaced with the human-\n\t\t\t\t// readable name\n\t\t\t\t// eslint-disable-next-line no-unreachable\n\t\t\t\treturn ['getBrandPortalByName', this.get('name')];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - The parsers available on this model\n\t * @property {function} parsers.read - Parses result of read method\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\tread(data, opts) {\n\t\t\t\t// TODO: if data is null no portal exists... server does not throw error\n\t\t\t\t// do we want to do anything this with this or ignore (before this check we just threw an error below trying to access `data.properties`)\n\t\t\t\tdata = data || {};\n\t\t\t\t// DAM-9559: `properties` can occasionally be NULL for older themes.\n\t\t\t\tif (data.properties == null) {\n\t\t\t\t\t// don't set it.\n\t\t\t\t\tdelete data.properties;\n\t\t\t\t}\n\n\t\t\t\t// TODO: this should no longer be necessary as we get this back from the custom css\n\t\t\t\t// properties endpoint\n\t\t\t\tsetStyleProperty('primary', data.color1);\n\t\t\t\tsetStyleProperty('secondary', data.color1);\n\n\t\t\t\treturn Object.assign(cmsConfig, data);\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t// Ideally, sub-models are handled entirely via change events,\n\t\t// avoiding the need to override set, fetch, etc.\n\t\t//\n\t\t_.each(this.subModelThings, (thing) => {\n\t\t\t// set/update the submodel when the associated ID changes.\n\t\t\tthis.on(`change:${thing.name}`, (model, val, opts) => {\n\t\t\t\t// don't get the font model if on login page.\n\t\t\t\tif (!Netx.asset) return;\n\t\t\t\tthis.updateSubModel(thing, val, opts);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * @override\n\t * @returns {object} portal without the goo\n\t */\n\tunpackAttrs(gooeyObj) {\n\t\tif (!(this.gooAttrs && gooeyObj && gooeyObj.goo)) {\n\t\t\t// do nothing if model defines no goo.\n\t\t\treturn gooeyObj;\n\t\t}\n\n\t\tconst serverGoo = gooeyObj.goo;\n\t\t// HACK around bugs in the DAM JSON parser: unescape triple-escaped quotes!\n\t\tconst clientGoo = serverGoo.replace(/\\\\\"/g, '\"');\n\n\t\t_.extend(cmsConfig, clientGoo);\n\n\t\t// with _.omit, delete the goo key\n\t\treturn _.extend(\n\t\t\t{},\n\t\t\tgooeyObj,\n\t\t\t// with _.pick, only allow goo we've defined in .gooAttrs!\n\t\t\t_.pick(JSON.parse(clientGoo), this.gooAttrs),\n\t\t);\n\t}\n\n\t/**\n\t * @type {array}\n\t * @default\n\t */\n\t// TODO: this is ugly - move to properies or idk?\n\t// Cannot call it subModels either as that is an array on the model itself\n\tget subModelThings() {\n\t\treturn [\n\t\t\t{\n\t\t\t\tname: 'font',\n\t\t\t\tid: 'assetId',\n\t\t\t\tmodelClass: 'Asset',\n\t\t\t},\n\t\t];\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Request options\n\t */\n\tfetchPortalByName(opts = {}) {\n\t\t// TODO: note, we are actually passing the `path`(slug)\n\t\t// but name is the human-readable name of the portal (mirrors label)\n\t\t// we are not doing anything wrong with that per se... but just note\n\t\t// this call is not properly named and whatever you set as `name`,\n\t\t// before calling fetch, will be blown out and replaced with the human-\n\t\t// readable name\n\t\treturn this.set('name', getPortalNameFromUrl()).fetch(opts);\n\t}\n\n\t/**\n\t * Fetch full models for related portal objects\n\t * @method\n\t * @param {object} opts Backbone options\n\t * @returns {Promise} resolves when all models are fetched.\n\t */\n\tfetchSubModels(opts = {}) {\n\t\tconst promises = [];\n\t\tconst subModels = {};\n\n\t\t_.each(this.subModelThings, (thing, idx) => {\n\t\t\tconst m = this.get(`${thing.name}Model`);\n\t\t\tif (!m) return;\n\n\t\t\tm.set({\n\t\t\t\t[thing.id]: parseInt(this.get(thing.name)),\n\t\t\t});\n\t\t\tif (m.id) {\n\t\t\t\tpromises.push(m.fetch(opts));\n\t\t\t} else {\n\t\t\t\tm.set(m.defaults);\n\t\t\t}\n\t\t});\n\n\t\t// Multiple promises\n\t\treturn this.when(promises);\n\t}\n\n\t/**\n\t * @param {object} thing definition of the subModel\n\t * @param {number} subId id of the subModel's server object\n\t * @param {object} opts Backbone options\n\t */\n\tupdateSubModel(thing, subId = 0, opts = {}) {\n\t\tif (!Models[thing.modelClass]) {\n\t\t\tthrow new Error(`missing model for ${thing.name}`);\n\t\t}\n\t\tconst model = new Models[thing.modelClass]({\n\t\t\t[thing.id]: subId,\n\t\t});\n\t\tthis.set(`${thing.name}Model`, model);\n\n\t\tif (subId == 0) {\n\t\t\t// reset submodel to defaults:\n\t\t\tmodel.set(model.defaults, opts);\n\t\t} else {\n\t\t\t// // fetch new submodel\n\t\t\t// sm.fetch(opts);\n\t\t\t//\n\t\t\t//\n\t\t\t// DEVNOTE:\n\t\t\t// It would be way simpler & cleaner to fetch submodels here & entirely avoid wrapping this.fetch.\n\t\t\t// Trouble is, we currently don't want this.fetch to resolve until the submodels have finished fetching.\n\t\t\t// That's because we don't want to trigger a render until we have that data (for instance, the template needs the logo URL).\n\t\t\t//\n\t\t\t// Solutions?\n\t\t\t//\n\t\t\t// The systemBrandPortalView could be aware of the submodels & listen for their 'sync' events to trigger more renders.\n\t\t\t// That's not ideal, because it violates encapsulation. (But the template already does that.)\n\t\t\t//\n\t\t\t// These subModels could trigger events on the parent model when they sync.\n\t\t\t// We would need some meaningful new event type for that, which feels hairy.\n\t\t\t//\n\t\t\t// This model's view could use subviews that listen to these submodels ... that also feels complicated.\n\t\t\t//\n\t\t\t// I'd rather fix this in backbone.rpc somehow -- once, for everywhere.\n\t\t}\n\t}\n\n\tparseAltColor() {\n\t\tconst prime = this.get('color1');\n\t\tconst tinyPrime = tinycolor(prime);\n\n\t\tconst primeBrightness = tinyPrime.getBrightness();\n\t\tconst lightenDarken = primeBrightness < 128;\n\t\tlet primeAlt;\n\n\t\tif (lightenDarken) {\n\t\t\tprimeAlt = tinyPrime.brighten(21).toHexString();\n\t\t} else {\n\t\t\tprimeAlt = tinyPrime.darken(19).toHexString();\n\t\t}\n\t\tthis.set({color2: primeAlt});\n\t\treturn primeAlt;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CMSPortal';\n\t}\n}\n","import CMSPortalModel from '@netx/core-cms/models/CMSPortal';\n\nexport const currentPortal = new CMSPortalModel();\n\nexport default currentPortal;\n","/**\n * @class\n */\nimport {userProfile} from '@netx/core-user/collections/singletons/userProfile';\nimport Base from '@netx/core/lib/netx-collection';\nimport {randomChars} from '@netx/core/utils/randomChars';\nimport Model from '../models/CMSAction';\nimport {links as cmsLinks} from '../properties/cms';\n\nexport default class CMSActions extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} methods - The methods available on this model\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetActionsForPortal(opts) {\n\t\t\t\treturn ['getActionsForPortal', this.portalId];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t */\n\t\t\tfetchAll: ['getAllActions'],\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\tif (!this.portalId) {\n\t\t\t\t\tconsole.error('undefined portalId');\n\t\t\t\t}\n\t\t\t\treturn ['getActionsForPortal', this.portalId];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Parsers for this model\n\t * @type {object}\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/** @method */\n\t\t\tgetActionsForPortal(actions) {\n\t\t\t\t//Netx.Actions.Register(actions, {silent: true});\n\t\t\t\tthis.set(actions, {parse: true});\n\t\t\t\tthis.trigger('sync', this);\n\t\t\t},\n\t\t\t/** @method */\n\t\t\tfetchAll(actions) {\n\t\t\t\t//Netx.Actions.Register(actions, {silent: true});\n\t\t\t\tthis.set(actions, {parse: true});\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * id of a portal -- for getActionsForPortal()\n\t\t * @property {string}\n\t\t */\n\t\tthis.portalId = opts.portalId;\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(dispatcher, 'cms:action:new:success', (form, action) => {\n\t\t\tif (action.get('portalId') !== this.portalId) return;\n\t\t\tthis.add(action, {merge: true});\n\t\t}).listenTo(dispatcher, 'cms:action:delete:confirmed', (action) => {\n\t\t\tthis.destroyAction(action);\n\t\t});\n\n\t\tif (opts.pages !== false) {\n\t\t\tthis.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'cms:page:save:confirmed',\n\t\t\t\t(form, pageModel) => {\n\t\t\t\t\tif (pageModel.get('portalId') !== this.portalId) return;\n\n\t\t\t\t\t// have we fetched yet?\n\t\t\t\t\tif (this.length === 0) {\n\t\t\t\t\t\tthis.fetch().then(() => {\n\t\t\t\t\t\t\tthis.manageActionFromPageSave(form, pageModel);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.manageActionFromPageSave(form, pageModel);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t}\n\n\tmanageActionFromPageSave(form, pageModel) {\n\t\tconst action = this.find({link: '#page/' + pageModel.id});\n\t\tif (!action) {\n\t\t\tthis.createActionForPage(pageModel);\n\t\t} else if (action.get('label') !== pageModel.get('title')) {\n\t\t\taction.set({label: pageModel.get('title')});\n\t\t\taction.save();\n\t\t\tdispatcher.trigger('cms:action:edit:success', form, action);\n\t\t}\n\t}\n\n\t/**\n\t * Takes a page and creates an action\n\t * @method\n\t * @param {object} page - CMSPage model\n\t */\n\tcreateActionForPage(page) {\n\t\tconst typePage = cmsLinks.types.page;\n\t\tconst newAction = new this.model({\n\t\t\tportalId: page.get('portalId'),\n\t\t\tevent: 'cms:action:' + page.get('portalId') + ':' + randomChars(10),\n\t\t\tlabel: page.get('title') || i18n.t('i18n.untitledPage'),\n\t\t\ttype: typePage,\n\t\t\tuserId: userProfile.id,\n\t\t});\n\n\t\tconst link = newAction.makeLink(typePage, page.id);\n\n\t\tif (this.findWhere({link: link})) {\n\t\t\treturn new $.Deferred().resolve(page);\n\t\t}\n\n\t\tnewAction.set({link: link});\n\t\tpage.action = newAction;\n\n\t\treturn newAction.save().then((data) => {\n\t\t\t// add to collection after it has an id\n\t\t\tthis.add(newAction);\n\t\t\treturn page;\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} action Action\n\t */\n\tdestroyAction(action) {\n\t\tlet actionOb = action.toJSON();\n\t\tif (action && action.get('portalId') === this.portalId) {\n\t\t\taction\n\t\t\t\t.destroy({wait: true})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.remove(action);\n\t\t\t\t\tdispatcher.trigger('cms:action:delete:success', actionOb);\n\t\t\t\t})\n\t\t\t\t.catch((err) => {\n\t\t\t\t\tdispatcher.trigger('cms:action:delete:error', err, action);\n\t\t\t\t});\n\t\t}\n\t}\n\n\t/** @method */\n\tfetchPortal(id) {\n\t\tid = parseInt(id);\n\t\tthis.portalId = id;\n\t\tif (id) {\n\t\t\treturn this.getActionsForPortal.apply(this, _.rest(arguments));\n\t\t}\n\t}\n\n\t/** @override */\n\tunpackAttrs(goo) {\n\t\tconst unpacked = super.unpackAttrs(goo);\n\t\t// sanitize the user provided information\n\t\t// TODO: need to make a utility for this so we can use this as it is sure to come up again\n\t\t// like sanitizeUserData(obj: object, keys: string[]) => Sanitized object\n\t\t// or we santize things on the way out to the server\n\t\t// or we make the server sanitize goo\n\t\t// or ...\n\t\tconst sanitized = unpacked\n\t\t\t? {\n\t\t\t\t\t...unpacked,\n\t\t\t\t\tevent: _.escape(unpacked.event),\n\t\t\t\t\tlabel: _.escape(unpacked.label),\n\t\t\t }\n\t\t\t: unpacked;\n\t\treturn sanitized;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CMSActions';\n\t}\n}\n","import {i18n} from '@netx/core-next/locales';\nimport CMSActionCollection from '@netx/core-cms/collections/CMSActions';\n\nexport const currentPortalActions = new CMSActionCollection([], {\n\tcomparator: (item: any) => i18n.t(item.get('label')).toLowerCase(),\n});\n","/**\n * @class\n * @todo finish documentation\n */\nimport {getPrefixedLogger} from '@netx/core-next/instance/logger';\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/CMSMenu';\n\nconst logger = getPrefixedLogger('models/CMSMenu');\n\nexport default class CMSMenus extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} methods - The methods available on this model\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tgetMenusForPortal: ['getMenusForPortal', 'portalId'],\n\t\t\tfetchAll: ['getAllMenus'],\n\t\t};\n\t}\n\n\t/**\n\t * parsers for rpc methods\n\t * @type {object}\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {array} menus\n\t\t\t */\n\t\t\tgetMenusForPortal(menus, opts) {\n\t\t\t\tthis.set(menus);\n\t\t\t\t// only supporting one menu right now\n\t\t\t\tthis.current = new this.model(menus[0]);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {array} menus\n\t\t\t */\n\t\t\tfetchAll(menus, opts) {\n\t\t\t\tthis.set(menus);\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t// only one menu implemented \"currently\"\n\t\tthis.current = new this.model({portalId: opts.portalId});\n\n\t\t/**\n\t\t * Name of a portal -- for getMenusForPortal()\n\t\t * @property {string}\n\t\t */\n\t\tthis.portalId = opts.portalId;\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t'cms:action:delete:success',\n\t\t\tthis.deleteActionSuccess,\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {int} portalId\n\t * @param {object} opts\n\t */\n\tfetchPortal(portalId, opts) {\n\t\tthis.portalId = portalId;\n\t\treturn this.getMenusForPortal.call(this, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} action\n\t */\n\tdeleteActionSuccess(action) {\n\t\tif (!action) return;\n\n\t\t// if this action is in our current (only) menu, remove it\n\t\tif (this.current.get('name').length === 0) {\n\t\t\tthis.current.set({name: 'main'});\n\t\t\tthis.current.fetch().then((action) => {\n\t\t\t\tthis.removeActionFromMenu(action);\n\t\t\t});\n\t\t} else {\n\t\t\tthis.removeActionFromMenu(action);\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * removes action from menu\n\t * @param {object} action\n\t */\n\n\tremoveActionFromMenu(action) {\n\t\tif (!action) return;\n\t\tconst removedInt = this.current.removeAction(action.event);\n\t\tif (removedInt) {\n\t\t\tthis.current.save().then(() => {\n\t\t\t\tdispatcher.trigger('cms:menu:remove:success');\n\t\t\t});\n\t\t} else {\n\t\t\tlogger.warn('no menu to remove');\n\t\t}\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CMSMenus';\n\t}\n}\n","import CMSMenuCollection from '@netx/core-cms/collections/CMSMenus';\n\nexport const currentPortalMenus = new CMSMenuCollection([], {parse: false});\n","/**\n * @class\n */\nimport {completions as autocompletions} from '@netx/core-app/properties/autocomplete';\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/CMSPage';\n\nexport default class CMSPages extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} methods - The methods available on this model\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tread: ['getPagesForPortal', this.portalId],\n\t\t\tfetchAll: ['getAllPages'],\n\t\t\tgetPagesForKeyword: ['getPagesForKeyword', 'portalId', 'searchTerm'],\n\t\t};\n\t}\n\n\t/**\n\t * parsers for rpc methods\n\t * @type {object}\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {array} pages\n\t\t\t */\n\t\t\tgetPagesForPortal(pages) {\n\t\t\t\tthis.set(pages, {parse: false});\n\t\t\t\tif (this.settingCurrent) {\n\t\t\t\t\tconst currentId = this.settingCurrent;\n\t\t\t\t\tthis.settingCurrent = false;\n\t\t\t\t\tthis.setCurrentPage(currentId);\n\t\t\t\t}\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * currently unused\n\t\t\t * @param {array} pages\n\t\t\t */\n\t\t\tfetchAll(pages) {\n\t\t\t\tthis.set(pages, {parse: false});\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\tthis.current = new this.model();\n\n\t\t/**\n\t\t * id of a portal -- for getPagesForPortal()\n\t\t * @type {string}\n\t\t * @default\n\t\t */\n\t\tthis.portalId = opts.portalId;\n\n\t\t/**\n\t\t * search term for getPagesForKeyword\n\t\t * @type {string}\n\t\t * @default\n\t\t */\n\t\tthis.searchTerm = opts.searchTerm;\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(dispatcher, 'cms:page:save:success', this.setFromCurrentPage)\n\t\t\t.on('sync add remove change', _.debounce(this.parseInPages, 50))\n\t\t\t.listenTo(\n\t\t\t\tdispatcher,\n\t\t\t\t'cms:action:delete:success',\n\t\t\t\tthis.deleteActionSuccess,\n\t\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {int} portalId\n\t * @param {object} opts\n\t */\n\tfetchPortal(portalId, opts) {\n\t\tif (!parseInt(portalId)) return $.Deferred().reject();\n\t\tthis.portalId = portalId;\n\t\treturn this.fetch({duplicateQueryPolicy: 'abort', ...opts});\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} action\n\t */\n\tgetPageForAction(action) {\n\t\tif (action.get('type') !== 'page') {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst pageId = this.getPageIdFromAction(action.toJSON());\n\n\t\treturn pageId ? this.get(pageId) : false;\n\t}\n\t/**\n\t * @method\n\t * @param {object} action\n\t */\n\tgetPageIdFromAction(actionOb) {\n\t\tconst link = actionOb.link;\n\t\tconst pageId = link ? Number(link.slice(6)) : null;\n\n\t\treturn pageId || false;\n\t}\n\t/**\n\t * @method\n\t * @param {object} action\n\t */\n\tdeleteActionSuccess(action) {\n\t\tif (!action || action.type !== 'page') {\n\t\t\t// console.warn('bad action or not for page deletion');\n\t\t\treturn;\n\t\t}\n\n\t\tconst actionIdToDelete = this.getPageIdFromAction(action);\n\n\t\tif (!Number.isInteger(actionIdToDelete) || !this.portalId) {\n\t\t\t// console.warn('No page number for action');\n\t\t\treturn;\n\t\t}\n\n\t\t// if pages have not been fetched yet, fetch\n\t\tif (this.length === 0) {\n\t\t\tthis.fetchPortal(this.portalId).then((pages) => {\n\t\t\t\tthis.destroyPageFromAction(actionIdToDelete);\n\t\t\t});\n\t\t} else {\n\t\t\tthis.destroyPageFromAction(actionIdToDelete);\n\t\t}\n\t}\n\t/**\n\t * @method\n\t * @param {int} actionIdToDelete\n\t */\n\tdestroyPageFromAction(actionIdToDelete) {\n\t\tlet page = this.get(actionIdToDelete);\n\t\tif (!page) return;\n\n\t\tthis.remove(page);\n\t\tpage.destroy({wait: true}).then(() => {\n\t\t\tdispatcher.trigger('cms:page:delete:success', page);\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {int} pageId\n\t */\n\tsetCurrentPage(pageId) {\n\t\tpageId = parseInt(pageId);\n\n\t\tconst page = this.get(pageId);\n\t\tif (!page) {\n\t\t\tthis.settingCurrent = pageId;\n\t\t\treturn;\n\t\t}\n\n\t\tthis.current.set(page.attributes);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} currentPageModel\n\t */\n\tsetFromCurrentPage(currentPageModel) {\n\t\tconst page = this.get(currentPageModel.id);\n\t\tif (!page) return;\n\n\t\tpage.set(currentPageModel.attributes);\n\t}\n\n\t/** @method */\n\tparseInPages() {\n\t\t// Victors HACK until we have an autolookup\n\t\t// That is cute - this code was copy pasted from a slack convo :p\n\t\tconst pageAutocomplete = autocompletions.page;\n\t\tpageAutocomplete.data = this.map((page) => {\n\t\t\treturn {label: page.get('slug'), value: page.slug};\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} searchStr\n\t */\n\tsearchPageContent(searchStr) {\n\t\tthis.searchTerm = searchStr;\n\t\treturn this.getPagesForKeyword();\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'CMSPages';\n\t}\n}\n","import CMSPageCollection from '@netx/core-cms/collections/CMSPages';\n\nexport const currentPortalPages = new CMSPageCollection([], {parse: false});\n","import CMSPageModel from '../models/CMSPage';\n\nexport const currentPortalPage = new CMSPageModel({}, {parse: false});\n","export enum NetxThemeMode {\n\tDEFAULT = 'default',\n\tDARK = 'dark',\n\tLIGHT = 'light',\n}\n\nexport const NETX_THEME_MODES = Object.values(NetxThemeMode);\n\nexport enum NetxThemePref {\n\tUSER_SELECTED = 'app:brand:mode',\n}\n\nexport enum Severity {\n\tDEFAULT = 'default',\n\tERROR = 'error',\n\tINFO = 'info',\n\tPRIMARY = 'primary',\n\tSECONDARY = 'secondary',\n\tSUCCESS = 'success',\n\tWARNING = 'warning',\n}\n\nexport const SEVERITIES = Object.values(Severity);\n","import {NetxThemeMode} from '../constants';\n\nexport const getBrowserPreferedThemeMode = () => {\n\treturn window.matchMedia?.('(prefers-color-scheme: dark)').matches\n\t\t? NetxThemeMode.DARK\n\t\t: NetxThemeMode.LIGHT;\n};\n","import {session} from '@netx/core-auth/collections/singleton/session';\nimport {isBrandPortal} from '@netx/core-cms-next/utils/isBrandPortal';\nimport {NetxThemeMode} from '../constants';\nimport type {ThemeMode} from '../types';\nimport {getBrowserPreferedThemeMode} from './getBrowserPreferedThemeMode';\n\nconst THEME_MODES = Object.values(NetxThemeMode);\n\nexport const netxThemeModeToThemeMode = (\n\tmode?: NetxThemeMode | string,\n): ThemeMode => {\n\tconst sessionKey = session.getKey();\n\tconst appAuthenticated = sessionKey && sessionKey !== '';\n\tconst tokenAccess = session.getToken() != null;\n\n\t// No `dark` support for portal or login screens currently\n\t// TODO: discuss opening this up to dark mode for non portal token related links?\n\tif (isBrandPortal() || tokenAccess || !appAuthenticated)\n\t\treturn NetxThemeMode.LIGHT;\n\n\treturn !mode ||\n\t\tmode === NetxThemeMode.DEFAULT ||\n\t\t!THEME_MODES.includes(mode as NetxThemeMode)\n\t\t? getBrowserPreferedThemeMode()\n\t\t: (mode as ThemeMode);\n};\n","import {UserLevel} from '@netx/core-user-next/constants';\n\nexport enum ConstituentsPref {\n\tCLIPS_ENABLED = 'asset.constituent.videoClips.enabled',\n}\n\nexport enum ConstituentType {\n\tKEYFRAME = 1,\n\tLAYER = 2,\n\tPAGE = 3,\n\tVIDEO_CLIP = 4,\n}\n\nexport const SEARCH_CONSTITIUENT_CLIPS_MINIMUM_USER_LEVEL = UserLevel.CONSUMER;\n","import {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {ConstituentsPref} from '../constants';\n\nexport const consituentClipsEnabled = () =>\n\tgetPreference(ConstituentsPref.CLIPS_ENABLED, true);\n","import Backbone, {EventsMixin} from 'backbone';\nimport window from 'global/window';\n\n/**\n * Backbone dispatcher instance.\n * @see https://backbonejs.org/#Events\n * @example\n * dispatcher.on('foo', () => console.log('bar'));\n * dispatcher.trigger('foo'); // 'bar'\n */\nexport const dispatcher = {...Backbone.Events} as EventsMixin;\n// lots of global use out there still\nwindow.dispatcher = dispatcher;\nexport default dispatcher;\n\n/**\n * Enhanced Backbone dispatcher instance.\\\n * Provides a cleanup function for each event binding method.\n *\n * @example\n * const cleanup = enhancedDispatcher.on('foo', () => console.log('bar'));\n * cleanup(); // removes the event binding\n */\nexport const enhancedDispatcher = {\n\t...dispatcher,\n\tbind: (eventName: string, cb: Backbone.EventHandler, context?: any) => {\n\t\tdispatcher.bind(eventName, cb, context);\n\t\treturn () => {\n\t\t\tdispatcher.unbind(eventName, cb, context);\n\t\t};\n\t},\n\ton: (eventName: string, cb: Backbone.EventHandler, context?: any) => {\n\t\tdispatcher.on(eventName, cb, context);\n\t\treturn () => {\n\t\t\tdispatcher.off(eventName, cb, context);\n\t\t};\n\t},\n\tonce: (eventName: string, cb: Backbone.EventHandler, context?: any) => {\n\t\tdispatcher.once(eventName, cb, context);\n\t\treturn () => {\n\t\t\tdispatcher.off(eventName, cb, context);\n\t\t};\n\t},\n\tlistenTo: (eventName: string, cb: any, context?: any) => {\n\t\tdispatcher.listenTo(eventName, cb, context);\n\t\treturn () => {\n\t\t\tdispatcher.stopListening(eventName, cb, context);\n\t\t};\n\t},\n\tlistenToOnce: (eventName: string, cb: any) => {\n\t\tdispatcher.listenToOnce(eventName, cb);\n\t\treturn () => {\n\t\t\tdispatcher.stopListening(eventName, cb);\n\t\t};\n\t},\n};\n","// @ts-ignore\nimport Locally from 'locallyjs';\n\n/**\n * Local storage instance.\n *\n * @see https://www.npmjs.com/package/locallyjs\n *\n * @example\n * localStore.set('foo', 'bar');\n */\nexport const localStore = new Locally.Store({\n\t// DAM-19220 - set to false\n\tcompress: false,\n});\n\nexport default localStore;\n\nimport {setGlobal} from '@netx/core-next/utils/setGlobal';\nif (process.env.NODE_ENV !== 'production') {\n\tsetGlobal({localStore});\n}\n","export const prettyLogStyles = {\n reset: [0, 0],\n bold: [1, 22],\n dim: [2, 22],\n italic: [3, 23],\n underline: [4, 24],\n overline: [53, 55],\n inverse: [7, 27],\n hidden: [8, 28],\n strikethrough: [9, 29],\n black: [30, 39],\n red: [31, 39],\n green: [32, 39],\n yellow: [33, 39],\n blue: [34, 39],\n magenta: [35, 39],\n cyan: [36, 39],\n white: [37, 39],\n blackBright: [90, 39],\n redBright: [91, 39],\n greenBright: [92, 39],\n yellowBright: [93, 39],\n blueBright: [94, 39],\n magentaBright: [95, 39],\n cyanBright: [96, 39],\n whiteBright: [97, 39],\n bgBlack: [40, 49],\n bgRed: [41, 49],\n bgGreen: [42, 49],\n bgYellow: [43, 49],\n bgBlue: [44, 49],\n bgMagenta: [45, 49],\n bgCyan: [46, 49],\n bgWhite: [47, 49],\n bgBlackBright: [100, 49],\n bgRedBright: [101, 49],\n bgGreenBright: [102, 49],\n bgYellowBright: [103, 49],\n bgBlueBright: [104, 49],\n bgMagentaBright: [105, 49],\n bgCyanBright: [106, 49],\n bgWhiteBright: [107, 49],\n};\n","import { prettyLogStyles } from \"./prettyLogStyles.js\";\nexport function formatTemplate(settings, template, values, hideUnsetPlaceholder = false) {\n const templateString = String(template);\n const ansiColorWrap = (placeholderValue, code) => `\\u001b[${code[0]}m${placeholderValue}\\u001b[${code[1]}m`;\n const styleWrap = (value, style) => {\n if (style != null && typeof style === \"string\") {\n return ansiColorWrap(value, prettyLogStyles[style]);\n }\n else if (style != null && Array.isArray(style)) {\n return style.reduce((prevValue, thisStyle) => styleWrap(prevValue, thisStyle), value);\n }\n else {\n if (style != null && style[value.trim()] != null) {\n return styleWrap(value, style[value.trim()]);\n }\n else if (style != null && style[\"*\"] != null) {\n return styleWrap(value, style[\"*\"]);\n }\n else {\n return value;\n }\n }\n };\n const defaultStyle = null;\n return templateString.replace(/{{(.+?)}}/g, (_, placeholder) => {\n const value = values[placeholder] != null ? String(values[placeholder]) : hideUnsetPlaceholder ? \"\" : _;\n return settings.stylePrettyLogs\n ? styleWrap(value, settings?.prettyLogStyles?.[placeholder] ?? defaultStyle) + ansiColorWrap(\"\", prettyLogStyles.reset)\n : value;\n });\n}\n","export function formatNumberAddZeros(value, digits = 2, addNumber = 0) {\n if (value != null && isNaN(value)) {\n return \"\";\n }\n value = value != null ? value + addNumber : value;\n return digits === 2\n ? value == null\n ? \"--\"\n : value < 10\n ? \"0\" + value\n : value.toString()\n : value == null\n ? \"---\"\n : value < 10\n ? \"00\" + value\n : value < 100\n ? \"0\" + value\n : value.toString();\n}\n","export function urlToObject(url) {\n return {\n href: url.href,\n protocol: url.protocol,\n username: url.username,\n password: url.password,\n host: url.host,\n hostname: url.hostname,\n port: url.port,\n pathname: url.pathname,\n search: url.search,\n searchParams: [...url.searchParams].map(([key, value]) => ({ key, value })),\n hash: url.hash,\n origin: url.origin,\n };\n}\n","export function jsonStringifyRecursive(obj) {\n const cache = new Set();\n return JSON.stringify(obj, (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (cache.has(value)) {\n return \"[Circular]\";\n }\n cache.add(value);\n }\n return value;\n });\n}\n","import { prettyLogStyles } from \"../../prettyLogStyles.js\";\nimport { jsonStringifyRecursive } from \"./helper.jsonStringifyRecursive.js\";\nexport function inspect(obj, opts) {\n const ctx = {\n seen: [],\n stylize: stylizeNoColor,\n };\n if (opts != null) {\n _extend(ctx, opts);\n }\n if (isUndefined(ctx.showHidden))\n ctx.showHidden = false;\n if (isUndefined(ctx.depth))\n ctx.depth = 2;\n if (isUndefined(ctx.colors))\n ctx.colors = true;\n if (isUndefined(ctx.customInspect))\n ctx.customInspect = true;\n if (ctx.colors)\n ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\ninspect.colors = prettyLogStyles;\ninspect.styles = {\n special: \"cyan\",\n number: \"yellow\",\n boolean: \"yellow\",\n undefined: \"grey\",\n null: \"bold\",\n string: \"green\",\n date: \"magenta\",\n regexp: \"red\",\n};\nfunction isBoolean(arg) {\n return typeof arg === \"boolean\";\n}\nfunction isUndefined(arg) {\n return arg === undefined;\n}\nfunction stylizeNoColor(str) {\n return str;\n}\nfunction stylizeWithColor(str, styleType) {\n const style = inspect.styles[styleType];\n if (style != null && inspect?.colors?.[style]?.[0] != null && inspect?.colors?.[style]?.[1] != null) {\n return \"\\u001b[\" + inspect.colors[style][0] + \"m\" + str + \"\\u001b[\" + inspect.colors[style][1] + \"m\";\n }\n else {\n return str;\n }\n}\nfunction isFunction(arg) {\n return typeof arg === \"function\";\n}\nfunction isString(arg) {\n return typeof arg === \"string\";\n}\nfunction isNumber(arg) {\n return typeof arg === \"number\";\n}\nfunction isNull(arg) {\n return arg === null;\n}\nfunction hasOwn(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === \"[object RegExp]\";\n}\nfunction isObject(arg) {\n return typeof arg === \"object\" && arg !== null;\n}\nfunction isError(e) {\n return isObject(e) && (objectToString(e) === \"[object Error]\" || e instanceof Error);\n}\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === \"[object Date]\";\n}\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\nfunction arrayToHash(array) {\n const hash = {};\n array.forEach((val) => {\n hash[val] = true;\n });\n return hash;\n}\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n const output = [];\n for (let i = 0, l = value.length; i < l; ++i) {\n if (hasOwn(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));\n }\n else {\n output.push(\"\");\n }\n }\n keys.forEach((key) => {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));\n }\n });\n return output;\n}\nfunction formatError(value) {\n return \"[\" + Error.prototype.toString.call(value) + \"]\";\n}\nexport function formatValue(ctx, value, recurseTimes = 0) {\n if (ctx.customInspect &&\n value != null &&\n isFunction(value) &&\n value?.inspect !== inspect &&\n !(value?.constructor && value?.constructor.prototype === value)) {\n if (typeof value.inspect !== \"function\" && value.toString != null) {\n return value.toString();\n }\n let ret = value?.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n const primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n let keys = Object.keys(value);\n const visibleKeys = arrayToHash(keys);\n try {\n if (ctx.showHidden && Object.getOwnPropertyNames) {\n keys = Object.getOwnPropertyNames(value);\n }\n }\n catch (e) {\n }\n if (isError(value) && (keys.indexOf(\"message\") >= 0 || keys.indexOf(\"description\") >= 0)) {\n return formatError(value);\n }\n if (keys.length === 0) {\n if (isFunction(ctx.stylize)) {\n if (isFunction(value)) {\n const name = value.name ? \": \" + value.name : \"\";\n return ctx.stylize(\"[Function\" + name + \"]\", \"special\");\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), \"regexp\");\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toISOString.call(value), \"date\");\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n else {\n return value;\n }\n }\n let base = \"\";\n let array = false;\n let braces = [\"{\\n\", \"\\n}\"];\n if (Array.isArray(value)) {\n array = true;\n braces = [\"[\\n\", \"\\n]\"];\n }\n if (isFunction(value)) {\n const n = value.name ? \": \" + value.name : \"\";\n base = \" [Function\" + n + \"]\";\n }\n if (isRegExp(value)) {\n base = \" \" + RegExp.prototype.toString.call(value);\n }\n if (isDate(value)) {\n base = \" \" + Date.prototype.toUTCString.call(value);\n }\n if (isError(value)) {\n base = \" \" + formatError(value);\n }\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), \"regexp\");\n }\n else {\n return ctx.stylize(\"[Object]\", \"special\");\n }\n }\n ctx.seen.push(value);\n let output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n }\n else {\n output = keys.map((key) => {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n ctx.seen.pop();\n return reduceToSingleString(output, base, braces);\n}\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n let name, str;\n let desc = { value: void 0 };\n try {\n desc.value = value[key];\n }\n catch (e) {\n }\n try {\n if (Object.getOwnPropertyDescriptor) {\n desc = Object.getOwnPropertyDescriptor(value, key) || desc;\n }\n }\n catch (e) {\n }\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize(\"[Getter/Setter]\", \"special\");\n }\n else {\n str = ctx.stylize(\"[Getter]\", \"special\");\n }\n }\n else {\n if (desc.set) {\n str = ctx.stylize(\"[Setter]\", \"special\");\n }\n }\n if (!hasOwn(visibleKeys, key)) {\n name = \"[\" + key + \"]\";\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, undefined);\n }\n else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf(\"\\n\") > -1) {\n if (array) {\n str = str\n .split(\"\\n\")\n .map((line) => {\n return \" \" + line;\n })\n .join(\"\\n\")\n .substr(2);\n }\n else {\n str =\n \"\\n\" +\n str\n .split(\"\\n\")\n .map((line) => {\n return \" \" + line;\n })\n .join(\"\\n\");\n }\n }\n }\n else {\n str = ctx.stylize(\"[Circular]\", \"special\");\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify(\"\" + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, \"name\");\n }\n else {\n name = name\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, \"\\\\'\")\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, \"string\");\n }\n }\n return name + \": \" + str;\n}\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize(\"undefined\", \"undefined\");\n if (isString(value)) {\n const simple = \"'\" + JSON.stringify(value).replace(/^\"|\"$/g, \"\").replace(/'/g, \"\\\\'\").replace(/\\\\\"/g, \"\\\\'\") + \"'\";\n return ctx.stylize(simple, \"string\");\n }\n if (isNumber(value))\n return ctx.stylize(\"\" + value, \"number\");\n if (isBoolean(value))\n return ctx.stylize(\"\" + value, \"boolean\");\n if (isNull(value))\n return ctx.stylize(\"null\", \"null\");\n}\nfunction reduceToSingleString(output, base, braces) {\n return braces[0] + (base === \"\" ? \"\" : base + \"\\n\") + \" \" + output.join(\",\\n \") + \" \" + braces[1];\n}\nfunction _extend(origin, add) {\n if (!add || !isObject(add))\n return origin;\n const clonedOrigin = { ...origin };\n const clonedAdd = { ...add };\n const keys = Object.keys(add);\n let i = keys.length;\n while (i--) {\n clonedOrigin[keys[i]] = clonedAdd[keys[i]];\n }\n return origin;\n}\nexport function formatWithOptions(inspectOptions, ...args) {\n const ctx = {\n seen: [],\n stylize: stylizeNoColor,\n };\n if (inspectOptions != null) {\n _extend(ctx, inspectOptions);\n }\n const first = args[0];\n let a = 0;\n let str = \"\";\n let join = \"\";\n if (typeof first === \"string\") {\n if (args.length === 1) {\n return first;\n }\n let tempStr;\n let lastPos = 0;\n for (let i = 0; i < first.length - 1; i++) {\n if (first.charCodeAt(i) === 37) {\n const nextChar = first.charCodeAt(++i);\n if (a + 1 !== args.length) {\n switch (nextChar) {\n case 115: {\n const tempArg = args[++a];\n if (typeof tempArg === \"number\") {\n tempStr = formatPrimitive(ctx, tempArg);\n }\n else if (typeof tempArg === \"bigint\") {\n tempStr = formatPrimitive(ctx, tempArg);\n }\n else if (typeof tempArg !== \"object\" || tempArg === null) {\n tempStr = String(tempArg);\n }\n else {\n tempStr = inspect(tempArg, {\n ...inspectOptions,\n compact: 3,\n colors: false,\n depth: 0,\n });\n }\n break;\n }\n case 106:\n tempStr = jsonStringifyRecursive(args[++a]);\n break;\n case 100: {\n const tempNum = args[++a];\n if (typeof tempNum === \"bigint\") {\n tempStr = formatPrimitive(ctx, tempNum);\n }\n else if (typeof tempNum === \"symbol\") {\n tempStr = \"NaN\";\n }\n else {\n tempStr = formatPrimitive(ctx, tempNum);\n }\n break;\n }\n case 79:\n tempStr = inspect(args[++a], inspectOptions);\n break;\n case 111:\n tempStr = inspect(args[++a], {\n ...inspectOptions,\n showHidden: true,\n showProxy: true,\n depth: 4,\n });\n break;\n case 105: {\n const tempInteger = args[++a];\n if (typeof tempInteger === \"bigint\") {\n tempStr = formatPrimitive(ctx, tempInteger);\n }\n else if (typeof tempInteger === \"symbol\") {\n tempStr = \"NaN\";\n }\n else {\n tempStr = formatPrimitive(ctx, parseInt(tempStr));\n }\n break;\n }\n case 102: {\n const tempFloat = args[++a];\n if (typeof tempFloat === \"symbol\") {\n tempStr = \"NaN\";\n }\n else {\n tempStr = formatPrimitive(ctx, parseInt(tempFloat));\n }\n break;\n }\n case 99:\n a += 1;\n tempStr = \"\";\n break;\n case 37:\n str += first.slice(lastPos, i);\n lastPos = i + 1;\n continue;\n default:\n continue;\n }\n if (lastPos !== i - 1) {\n str += first.slice(lastPos, i - 1);\n }\n str += tempStr;\n lastPos = i + 1;\n }\n else if (nextChar === 37) {\n str += first.slice(lastPos, i);\n lastPos = i + 1;\n }\n }\n }\n if (lastPos !== 0) {\n a++;\n join = \" \";\n if (lastPos < first.length) {\n str += first.slice(lastPos);\n }\n }\n }\n while (a < args.length) {\n const value = args[a];\n str += join;\n str += typeof value !== \"string\" ? inspect(value, inspectOptions) : value;\n join = \" \";\n a++;\n }\n return str;\n}\n","import { formatTemplate } from \"../../formatTemplate.js\";\nimport { formatWithOptions } from \"./util.inspect.polyfil.js\";\nimport { jsonStringifyRecursive } from \"./helper.jsonStringifyRecursive.js\";\nexport default {\n getCallerStackFrame,\n getErrorTrace,\n getMeta,\n transportJSON,\n transportFormatted,\n isBuffer,\n isError,\n prettyFormatLogObj,\n prettyFormatErrorObj,\n};\nconst meta = {\n runtime: ![typeof window, typeof document].includes(\"undefined\") ? \"Browser\" : \"Generic\",\n browser: globalThis?.[\"navigator\"]?.userAgent,\n};\nconst pathRegex = /(?:(?:file|https?|global code|[^@]+)@)?(?:file:)?((?:\\/[^:/]+){2,})(?::(\\d+))?(?::(\\d+))?/;\nexport function getMeta(logLevelId, logLevelName, stackDepthLevel, hideLogPositionForPerformance, name, parentNames) {\n return Object.assign({}, meta, {\n name,\n parentNames,\n date: new Date(),\n logLevelId,\n logLevelName,\n path: !hideLogPositionForPerformance ? getCallerStackFrame(stackDepthLevel) : undefined,\n });\n}\nexport function getCallerStackFrame(stackDepthLevel, error = Error()) {\n return stackLineToStackFrame(error?.stack?.split(\"\\n\")?.filter((line) => !line.includes(\"Error: \"))?.[stackDepthLevel]);\n}\nexport function getErrorTrace(error) {\n return error?.stack\n ?.split(\"\\n\")\n ?.filter((line) => !line.includes(\"Error: \"))\n ?.reduce((result, line) => {\n result.push(stackLineToStackFrame(line));\n return result;\n }, []);\n}\nfunction stackLineToStackFrame(line) {\n const href = globalThis?.location?.origin;\n const pathResult = {\n fullFilePath: undefined,\n fileName: undefined,\n fileNameWithLine: undefined,\n fileColumn: undefined,\n fileLine: undefined,\n filePath: undefined,\n filePathWithLine: undefined,\n method: undefined,\n };\n if (line != null) {\n const match = line.match(pathRegex);\n if (match) {\n pathResult.filePath = match[1].replace(/\\?.*$/, \"\");\n pathResult.fullFilePath = `${href}${pathResult.filePath}`;\n const pathParts = pathResult.filePath.split(\"/\");\n pathResult.fileName = pathParts[pathParts.length - 1];\n pathResult.fileLine = match[2];\n pathResult.fileColumn = match[3];\n pathResult.filePathWithLine = `${pathResult.filePath}:${pathResult.fileLine}`;\n pathResult.fileNameWithLine = `${pathResult.fileName}:${pathResult.fileLine}`;\n }\n }\n return pathResult;\n}\nexport function isError(e) {\n return e instanceof Error;\n}\nexport function prettyFormatLogObj(maskedArgs, settings) {\n return maskedArgs.reduce((result, arg) => {\n isError(arg) ? result.errors.push(prettyFormatErrorObj(arg, settings)) : result.args.push(arg);\n return result;\n }, { args: [], errors: [] });\n}\nexport function prettyFormatErrorObj(error, settings) {\n const errorStackStr = getErrorTrace(error).map((stackFrame) => {\n return formatTemplate(settings, settings.prettyErrorStackTemplate, { ...stackFrame }, true);\n });\n const placeholderValuesError = {\n errorName: ` ${error.name} `,\n errorMessage: Object.getOwnPropertyNames(error)\n .reduce((result, key) => {\n if (key !== \"stack\") {\n result.push(error[key]);\n }\n return result;\n }, [])\n .join(\", \"),\n errorStack: errorStackStr.join(\"\\n\"),\n };\n return formatTemplate(settings, settings.prettyErrorTemplate, placeholderValuesError);\n}\nexport function transportFormatted(logMetaMarkup, logArgs, logErrors, settings) {\n const logErrorsStr = (logErrors.length > 0 && logArgs.length > 0 ? \"\\n\" : \"\") + logErrors.join(\"\\n\");\n settings.prettyInspectOptions.colors = settings.stylePrettyLogs;\n console.log(logMetaMarkup + formatWithOptions(settings.prettyInspectOptions, ...logArgs) + logErrorsStr);\n}\nexport function transportJSON(json) {\n console.log(jsonStringifyRecursive(json));\n}\nexport function isBuffer(arg) {\n return arg ? false : false;\n}\n","import { formatTemplate } from \"./formatTemplate.js\";\nimport { formatNumberAddZeros } from \"./formatNumberAddZeros.js\";\nimport { urlToObject } from \"./urlToObj.js\";\nimport Runtime from \"./runtime/nodejs/index.js\";\nexport * from \"./interfaces.js\";\nexport { Runtime };\nexport class BaseLogger {\n constructor(settings, logObj, stackDepthLevel = 4) {\n this.logObj = logObj;\n this.stackDepthLevel = stackDepthLevel;\n this.runtime = Runtime;\n this.settings = {\n type: settings?.type ?? \"pretty\",\n name: settings?.name,\n parentNames: settings?.parentNames,\n minLevel: settings?.minLevel ?? 0,\n argumentsArrayName: settings?.argumentsArrayName,\n hideLogPositionForProduction: settings?.hideLogPositionForProduction ?? false,\n prettyLogTemplate: settings?.prettyLogTemplate ??\n \"{{yyyy}}.{{mm}}.{{dd}} {{hh}}:{{MM}}:{{ss}}:{{ms}}\\t{{logLevelName}}\\t{{filePathWithLine}}{{nameWithDelimiterPrefix}}\\t\",\n prettyErrorTemplate: settings?.prettyErrorTemplate ?? \"\\n{{errorName}} {{errorMessage}}\\nerror stack:\\n{{errorStack}}\",\n prettyErrorStackTemplate: settings?.prettyErrorStackTemplate ?? \" • {{fileName}}\\t{{method}}\\n\\t{{filePathWithLine}}\",\n prettyErrorParentNamesSeparator: settings?.prettyErrorParentNamesSeparator ?? \":\",\n prettyErrorLoggerNameDelimiter: settings?.prettyErrorLoggerNameDelimiter ?? \"\\t\",\n stylePrettyLogs: settings?.stylePrettyLogs ?? true,\n prettyLogTimeZone: settings?.prettyLogTimeZone ?? \"UTC\",\n prettyLogStyles: settings?.prettyLogStyles ?? {\n logLevelName: {\n \"*\": [\"bold\", \"black\", \"bgWhiteBright\", \"dim\"],\n SILLY: [\"bold\", \"white\"],\n TRACE: [\"bold\", \"whiteBright\"],\n DEBUG: [\"bold\", \"green\"],\n INFO: [\"bold\", \"blue\"],\n WARN: [\"bold\", \"yellow\"],\n ERROR: [\"bold\", \"red\"],\n FATAL: [\"bold\", \"redBright\"],\n },\n dateIsoStr: \"white\",\n filePathWithLine: \"white\",\n name: [\"white\", \"bold\"],\n nameWithDelimiterPrefix: [\"white\", \"bold\"],\n nameWithDelimiterSuffix: [\"white\", \"bold\"],\n errorName: [\"bold\", \"bgRedBright\", \"whiteBright\"],\n fileName: [\"yellow\"],\n fileNameWithLine: \"white\",\n },\n prettyInspectOptions: settings?.prettyInspectOptions ?? {\n colors: true,\n compact: false,\n depth: Infinity,\n },\n metaProperty: settings?.metaProperty ?? \"_meta\",\n maskPlaceholder: settings?.maskPlaceholder ?? \"[***]\",\n maskValuesOfKeys: settings?.maskValuesOfKeys ?? [\"password\"],\n maskValuesOfKeysCaseInsensitive: settings?.maskValuesOfKeysCaseInsensitive ?? false,\n maskValuesRegEx: settings?.maskValuesRegEx,\n prefix: [...(settings?.prefix ?? [])],\n attachedTransports: [...(settings?.attachedTransports ?? [])],\n overwrite: {\n mask: settings?.overwrite?.mask,\n toLogObj: settings?.overwrite?.toLogObj,\n addMeta: settings?.overwrite?.addMeta,\n addPlaceholders: settings?.overwrite?.addPlaceholders,\n formatMeta: settings?.overwrite?.formatMeta,\n formatLogObj: settings?.overwrite?.formatLogObj,\n transportFormatted: settings?.overwrite?.transportFormatted,\n transportJSON: settings?.overwrite?.transportJSON,\n },\n };\n }\n log(logLevelId, logLevelName, ...args) {\n if (logLevelId < this.settings.minLevel) {\n return;\n }\n const logArgs = [...this.settings.prefix, ...args];\n const maskedArgs = this.settings.overwrite?.mask != null\n ? this.settings.overwrite?.mask(logArgs)\n : this.settings.maskValuesOfKeys != null && this.settings.maskValuesOfKeys.length > 0\n ? this._mask(logArgs)\n : logArgs;\n const thisLogObj = this.logObj != null ? this._recursiveCloneAndExecuteFunctions(this.logObj) : undefined;\n const logObj = this.settings.overwrite?.toLogObj != null ? this.settings.overwrite?.toLogObj(maskedArgs, thisLogObj) : this._toLogObj(maskedArgs, thisLogObj);\n const logObjWithMeta = this.settings.overwrite?.addMeta != null\n ? this.settings.overwrite?.addMeta(logObj, logLevelId, logLevelName)\n : this._addMetaToLogObj(logObj, logLevelId, logLevelName);\n let logMetaMarkup;\n let logArgsAndErrorsMarkup = undefined;\n if (this.settings.overwrite?.formatMeta != null) {\n logMetaMarkup = this.settings.overwrite?.formatMeta(logObjWithMeta?.[this.settings.metaProperty]);\n }\n if (this.settings.overwrite?.formatLogObj != null) {\n logArgsAndErrorsMarkup = this.settings.overwrite?.formatLogObj(maskedArgs, this.settings);\n }\n if (this.settings.type === \"pretty\") {\n logMetaMarkup = logMetaMarkup ?? this._prettyFormatLogObjMeta(logObjWithMeta?.[this.settings.metaProperty]);\n logArgsAndErrorsMarkup = logArgsAndErrorsMarkup ?? this.runtime.prettyFormatLogObj(maskedArgs, this.settings);\n }\n if (logMetaMarkup != null && logArgsAndErrorsMarkup != null) {\n this.settings.overwrite?.transportFormatted != null\n ? this.settings.overwrite?.transportFormatted(logMetaMarkup, logArgsAndErrorsMarkup.args, logArgsAndErrorsMarkup.errors, this.settings)\n : this.runtime.transportFormatted(logMetaMarkup, logArgsAndErrorsMarkup.args, logArgsAndErrorsMarkup.errors, this.settings);\n }\n else {\n this.settings.overwrite?.transportJSON != null\n ? this.settings.overwrite?.transportJSON(logObjWithMeta)\n : this.settings.type !== \"hidden\"\n ? this.runtime.transportJSON(logObjWithMeta)\n : undefined;\n }\n if (this.settings.attachedTransports != null && this.settings.attachedTransports.length > 0) {\n this.settings.attachedTransports.forEach((transportLogger) => {\n transportLogger(logObjWithMeta);\n });\n }\n return logObjWithMeta;\n }\n attachTransport(transportLogger) {\n this.settings.attachedTransports.push(transportLogger);\n }\n getSubLogger(settings, logObj) {\n const subLoggerSettings = {\n ...this.settings,\n ...settings,\n parentNames: this.settings?.parentNames != null && this.settings?.name != null\n ? [...this.settings.parentNames, this.settings.name]\n : this.settings?.name != null\n ? [this.settings.name]\n : undefined,\n prefix: [...this.settings.prefix, ...(settings?.prefix ?? [])],\n };\n const subLogger = new this.constructor(subLoggerSettings, logObj ?? this.logObj, this.stackDepthLevel);\n return subLogger;\n }\n _mask(args) {\n const maskValuesOfKeys = this.settings.maskValuesOfKeysCaseInsensitive !== true ? this.settings.maskValuesOfKeys : this.settings.maskValuesOfKeys.map((key) => key.toLowerCase());\n return args?.map((arg) => {\n return this._recursiveCloneAndMaskValuesOfKeys(arg, maskValuesOfKeys);\n });\n }\n _recursiveCloneAndMaskValuesOfKeys(source, keys, seen = []) {\n if (seen.includes(source)) {\n return { ...source };\n }\n if (typeof source === \"object\" && source !== null) {\n seen.push(source);\n }\n if (this.runtime.isError(source) || this.runtime.isBuffer(source)) {\n return source;\n }\n else if (source instanceof Map) {\n return new Map(source);\n }\n else if (source instanceof Set) {\n return new Set(source);\n }\n else if (Array.isArray(source)) {\n return source.map((item) => this._recursiveCloneAndMaskValuesOfKeys(item, keys, seen));\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (source instanceof URL) {\n return urlToObject(source);\n }\n else if (source !== null && typeof source === \"object\") {\n const baseObject = this.runtime.isError(source) ? this._cloneError(source) : Object.create(Object.getPrototypeOf(source));\n return Object.getOwnPropertyNames(source).reduce((o, prop) => {\n o[prop] = keys.includes(this.settings?.maskValuesOfKeysCaseInsensitive !== true ? prop : prop.toLowerCase())\n ? this.settings.maskPlaceholder\n : this._recursiveCloneAndMaskValuesOfKeys(source[prop], keys, seen);\n return o;\n }, baseObject);\n }\n else {\n if (typeof source === \"string\") {\n let modifiedSource = source;\n for (const regEx of this.settings?.maskValuesRegEx || []) {\n modifiedSource = modifiedSource.replace(regEx, this.settings?.maskPlaceholder || \"\");\n }\n return modifiedSource;\n }\n return source;\n }\n }\n _recursiveCloneAndExecuteFunctions(source, seen = []) {\n if (this.isObjectOrArray(source) && seen.includes(source)) {\n return this.shallowCopy(source);\n }\n if (this.isObjectOrArray(source)) {\n seen.push(source);\n }\n if (Array.isArray(source)) {\n return source.map((item) => this._recursiveCloneAndExecuteFunctions(item, seen));\n }\n else if (source instanceof Date) {\n return new Date(source.getTime());\n }\n else if (this.isObject(source)) {\n return Object.getOwnPropertyNames(source).reduce((o, prop) => {\n const descriptor = Object.getOwnPropertyDescriptor(source, prop);\n if (descriptor) {\n Object.defineProperty(o, prop, descriptor);\n const value = source[prop];\n o[prop] = typeof value === \"function\" ? value() : this._recursiveCloneAndExecuteFunctions(value, seen);\n }\n return o;\n }, Object.create(Object.getPrototypeOf(source)));\n }\n else {\n return source;\n }\n }\n isObjectOrArray(value) {\n return typeof value === \"object\" && value !== null;\n }\n isObject(value) {\n return typeof value === \"object\" && !Array.isArray(value) && value !== null;\n }\n shallowCopy(source) {\n if (Array.isArray(source)) {\n return [...source];\n }\n else {\n return { ...source };\n }\n }\n _toLogObj(args, clonedLogObj = {}) {\n args = args?.map((arg) => (this.runtime.isError(arg) ? this._toErrorObject(arg) : arg));\n if (this.settings.argumentsArrayName == null) {\n if (args.length === 1 && !Array.isArray(args[0]) && this.runtime.isBuffer(args[0]) !== true && !(args[0] instanceof Date)) {\n clonedLogObj = typeof args[0] === \"object\" && args[0] != null ? { ...args[0], ...clonedLogObj } : { 0: args[0], ...clonedLogObj };\n }\n else {\n clonedLogObj = { ...clonedLogObj, ...args };\n }\n }\n else {\n clonedLogObj = {\n ...clonedLogObj,\n [this.settings.argumentsArrayName]: args,\n };\n }\n return clonedLogObj;\n }\n _cloneError(error) {\n const cloned = new error.constructor();\n Object.getOwnPropertyNames(error).forEach((key) => {\n cloned[key] = error[key];\n });\n return cloned;\n }\n _toErrorObject(error) {\n return {\n nativeError: error,\n name: error.name ?? \"Error\",\n message: error.message,\n stack: this.runtime.getErrorTrace(error),\n };\n }\n _addMetaToLogObj(logObj, logLevelId, logLevelName) {\n return {\n ...logObj,\n [this.settings.metaProperty]: this.runtime.getMeta(logLevelId, logLevelName, this.stackDepthLevel, this.settings.hideLogPositionForProduction, this.settings.name, this.settings.parentNames),\n };\n }\n _prettyFormatLogObjMeta(logObjMeta) {\n if (logObjMeta == null) {\n return \"\";\n }\n let template = this.settings.prettyLogTemplate;\n const placeholderValues = {};\n if (template.includes(\"{{yyyy}}.{{mm}}.{{dd}} {{hh}}:{{MM}}:{{ss}}:{{ms}}\")) {\n template = template.replace(\"{{yyyy}}.{{mm}}.{{dd}} {{hh}}:{{MM}}:{{ss}}:{{ms}}\", \"{{dateIsoStr}}\");\n }\n else {\n if (this.settings.prettyLogTimeZone === \"UTC\") {\n placeholderValues[\"yyyy\"] = logObjMeta?.date?.getUTCFullYear() ?? \"----\";\n placeholderValues[\"mm\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCMonth(), 2, 1);\n placeholderValues[\"dd\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCDate(), 2);\n placeholderValues[\"hh\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCHours(), 2);\n placeholderValues[\"MM\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCMinutes(), 2);\n placeholderValues[\"ss\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCSeconds(), 2);\n placeholderValues[\"ms\"] = formatNumberAddZeros(logObjMeta?.date?.getUTCMilliseconds(), 3);\n }\n else {\n placeholderValues[\"yyyy\"] = logObjMeta?.date?.getFullYear() ?? \"----\";\n placeholderValues[\"mm\"] = formatNumberAddZeros(logObjMeta?.date?.getMonth(), 2, 1);\n placeholderValues[\"dd\"] = formatNumberAddZeros(logObjMeta?.date?.getDate(), 2);\n placeholderValues[\"hh\"] = formatNumberAddZeros(logObjMeta?.date?.getHours(), 2);\n placeholderValues[\"MM\"] = formatNumberAddZeros(logObjMeta?.date?.getMinutes(), 2);\n placeholderValues[\"ss\"] = formatNumberAddZeros(logObjMeta?.date?.getSeconds(), 2);\n placeholderValues[\"ms\"] = formatNumberAddZeros(logObjMeta?.date?.getMilliseconds(), 3);\n }\n }\n const dateInSettingsTimeZone = this.settings.prettyLogTimeZone === \"UTC\" ? logObjMeta?.date : new Date(logObjMeta?.date?.getTime() - logObjMeta?.date?.getTimezoneOffset() * 60000);\n placeholderValues[\"rawIsoStr\"] = dateInSettingsTimeZone?.toISOString();\n placeholderValues[\"dateIsoStr\"] = dateInSettingsTimeZone?.toISOString().replace(\"T\", \" \").replace(\"Z\", \"\");\n placeholderValues[\"logLevelName\"] = logObjMeta?.logLevelName;\n placeholderValues[\"fileNameWithLine\"] = logObjMeta?.path?.fileNameWithLine ?? \"\";\n placeholderValues[\"filePathWithLine\"] = logObjMeta?.path?.filePathWithLine ?? \"\";\n placeholderValues[\"fullFilePath\"] = logObjMeta?.path?.fullFilePath ?? \"\";\n let parentNamesString = this.settings.parentNames?.join(this.settings.prettyErrorParentNamesSeparator);\n parentNamesString = parentNamesString != null && logObjMeta?.name != null ? parentNamesString + this.settings.prettyErrorParentNamesSeparator : undefined;\n placeholderValues[\"name\"] = logObjMeta?.name != null || parentNamesString != null ? (parentNamesString ?? \"\") + logObjMeta?.name ?? \"\" : \"\";\n placeholderValues[\"nameWithDelimiterPrefix\"] =\n placeholderValues[\"name\"].length > 0 ? this.settings.prettyErrorLoggerNameDelimiter + placeholderValues[\"name\"] : \"\";\n placeholderValues[\"nameWithDelimiterSuffix\"] =\n placeholderValues[\"name\"].length > 0 ? placeholderValues[\"name\"] + this.settings.prettyErrorLoggerNameDelimiter : \"\";\n if (this.settings.overwrite?.addPlaceholders != null) {\n this.settings.overwrite?.addPlaceholders(logObjMeta, placeholderValues);\n }\n return formatTemplate(this.settings, template, placeholderValues);\n }\n}\n","import { BaseLogger } from \"./BaseLogger.js\";\nexport * from \"./interfaces.js\";\nexport * from \"./BaseLogger.js\";\nexport class Logger extends BaseLogger {\n constructor(settings, logObj) {\n const isBrowser = typeof window !== \"undefined\" && typeof document !== \"undefined\";\n const isBrowserBlinkEngine = isBrowser ? window.chrome !== undefined && window.CSS !== undefined && window.CSS.supports(\"color\", \"green\") : false;\n const isSafari = isBrowser ? /^((?!chrome|android).)*safari/i.test(navigator.userAgent) : false;\n settings = settings || {};\n settings.stylePrettyLogs = settings.stylePrettyLogs && isBrowser && !isBrowserBlinkEngine ? false : settings.stylePrettyLogs;\n super(settings, logObj, isSafari ? 4 : 5);\n }\n log(logLevelId, logLevelName, ...args) {\n return super.log(logLevelId, logLevelName, ...args);\n }\n silly(...args) {\n return super.log(0, \"SILLY\", ...args);\n }\n trace(...args) {\n return super.log(1, \"TRACE\", ...args);\n }\n debug(...args) {\n return super.log(2, \"DEBUG\", ...args);\n }\n info(...args) {\n return super.log(3, \"INFO\", ...args);\n }\n warn(...args) {\n return super.log(4, \"WARN\", ...args);\n }\n error(...args) {\n return super.log(5, \"ERROR\", ...args);\n }\n fatal(...args) {\n return super.log(6, \"FATAL\", ...args);\n }\n getSubLogger(settings, logObj) {\n return super.getSubLogger(settings, logObj);\n }\n}\n","import {Logger, type ILogObj} from 'tslog';\nimport {isFirefox} from '../utils/browser/isFirefox';\n\n/**\n * Default logger instance\n *\n * @example\n * logger.info('foo');\n */\nexport const logger = new Logger<ILogObj>({\n\thideLogPositionForProduction: true,\n\tmaskValuesOfKeysCaseInsensitive: true,\n\tminLevel: process.env.NODE_ENV === 'development' ? 0 : 3,\n\ttype: 'pretty',\n\t// https://github.com/fullstack-build/tslog/issues/262\n\t// https://bugzilla.mozilla.org/show_bug.cgi?id=1720116\n\tstylePrettyLogs: !isFirefox(),\n});\n\nconst separator = '>';\n\n/**\n * Get a prefixed logger\n * @param prefix What to prefix any logging with\n * @returns A logger with the provided prefix\n *\n * @example\n * const logger = getPrefixedLogger('foo bar');\n * logger.info('baz'); // 'foo bar > baz'\n */\nexport const getPrefixedLogger = (prefix: string) => {\n\treturn {\n\t\tdebug: (...args: any[]) =>\n\t\t\tlogger.debug.apply(logger, [prefix, separator, ...args]),\n\t\terror: (...args: any[]) =>\n\t\t\tlogger.error.apply(logger, [prefix, separator, ...args]),\n\t\tfatal: (...args: any[]) =>\n\t\t\tlogger.fatal.apply(logger, [prefix, separator, ...args]),\n\t\tinfo: (...args: any[]) =>\n\t\t\tlogger.info.apply(logger, [prefix, separator, ...args]),\n\t\tsilly: (...args: any[]) =>\n\t\t\tlogger.silly.apply(logger, [prefix, separator, ...args]),\n\t\ttrace: (...args: any[]) =>\n\t\t\tlogger.trace.apply(logger, [prefix, separator, ...args]),\n\t\twarn: (...args: any[]) =>\n\t\t\tlogger.warn.apply(logger, [prefix, separator, ...args]),\n\t};\n};\n","import Router from '@netx/core/lib/netx-routers-app';\n\n/**\n * App router instance\n */\nexport const appRouter = new Router();\nappRouter.routes = {};\n\nexport default appRouter;\n","import axios from 'axios';\nimport {QueryClient, type QueryClientConfig} from '@tanstack/react-query';\nimport {session} from '@netx/core-auth/collections/singleton/session';\nimport {dispatcher} from '../instance/dispatcher';\nimport {SortOrder} from '../schema';\nimport {URL} from '../url';\n\n// react-query client config\nconst queryConfig: QueryClientConfig = {\n\tdefaultOptions: {\n\t\tqueries: {\n\t\t\tnetworkMode: 'always',\n\t\t\trefetchOnMount: false,\n\t\t\trefetchOnWindowFocus: false,\n\t\t\tretry: false,\n\t\t},\n\t\tmutations: {\n\t\t\tnetworkMode: 'always',\n\t\t\tretry: false,\n\t\t},\n\t},\n};\n\n// react-query client instance\nexport const queryClient = new QueryClient(queryConfig);\n\n/**\n * Server error\n * @typeParam Codes - Error codes expected from the server\n */\nexport type ErrorResult<Codes extends number = number> = {\n\tcode: Codes;\n\tdata?: null;\n\tmessage: string;\n\tresult: string;\n};\n\n/**\n * Server error response\n * @typeParam T - Error type\n * @see ErrorResult\n */\nexport type ErrorResponse<T extends ErrorResult = ErrorResult> = {\n\terror: T;\n};\n\n/**\n * Server success response\n * @typeParam T - Result type\n */\nexport type SuccessResponse<T> = {\n\tresult: T;\n};\n\n/**\n * Query error\n * @typeParam Codes - Error codes expected from the server\n */\nexport class QueryError<Codes extends number = number> extends Error {\n\tcode: Codes = -1 as Codes;\n}\n\n/**\n * Server paging param (`PageDTO`)\n */\nexport type QueryPager = {\n\tstartIndex: number;\n\tsize: number;\n};\n\n/**\n * Server sort param (`SortDTO`)\n */\nexport type QuerySort<F extends string = string> = {\n\tfield: F;\n\torder: SortOrder;\n};\n\n// These are the error codes that we want to handle as session errors\nconst sessionErrors = [6, 3001, 3002, 3003];\n\ninterface QueryPromise<T = any> extends Promise<T> {\n\tcancel(): void;\n}\n\n/**\n * Netx query client.\\\n * Wrapper around axios to handle, session, session errors, and cancelation.\n *\n * @typeParam ErrorCodes - Error codes expected from the server\n *\n * @returns Wrapped axios client\n *\n * @example\n * const client = netxQueryClient<2102 | 1000>();\n * client.post('method', data).then((response) => {...});\n */\nexport const netxQueryClient = <ErrorCodes extends number = number>() => {\n\tconst client = axios.create({\n\t\tbaseURL: URL.api,\n\t});\n\tclient.defaults.headers.common['Content-Type'] = 'application/json';\n\n\tconst source = axios.CancelToken.source();\n\n\t// Back it up\n\tconst _post = client.post;\n\t// And wrap it\n\t// We can ignore ts check on this, because as long as we do not modify the response\n\t// data, we will still be getting proper types out\n\t// For some reason, assigning the _post call to a var and returning is not valid but\n\t// just returning the _post call is valid (something in the abstract types)\n\t// @ts-ignore\n\tclient.post = (method, data = [], config = {}) => {\n\t\t// every succesful sync resets the server's logout timer; reset our client one too.\n\t\tsession.resetLogoutTimer();\n\n\t\tif (!(session?.get('publicMethods') || []).includes(method)) {\n\t\t\t(data as unknown as any[]).unshift(\n\t\t\t\tsession.getToken() || session.getKey(),\n\t\t\t);\n\t\t}\n\n\t\tconst promise = _post(\n\t\t\tmethod,\n\t\t\t{\n\t\t\t\tid: Date.now(),\n\t\t\t\tdataContext: 'json',\n\t\t\t\tjsonrpc: '2.0',\n\t\t\t\tmethod,\n\t\t\t\tparams: data,\n\t\t\t} as unknown,\n\t\t\t{...config, cancelToken: source.token},\n\t\t).then((response) => {\n\t\t\tif (response.data.error as ErrorResponse) {\n\t\t\t\tconst code = response.data.error.code;\n\t\t\t\tif (sessionErrors.includes(code)) {\n\t\t\t\t\t// If we have a token, some calls with give sessionErrors while others will pass.\n\t\t\t\t\t// If not, a session error means our key is invalid.\n\t\t\t\t\tif (!session?.getToken()) dispatcher.trigger('session:expire');\n\t\t\t\t}\n\t\t\t\tconst error = new QueryError<ErrorCodes>(response.data.error.message);\n\t\t\t\terror.code = code;\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tsession?.resetLogoutTimer();\n\n\t\t\treturn response;\n\t\t});\n\n\t\t// For react query to cancel on unmount (or any other to cancel via the promise)\n\t\t// TODO: soon we can remove this as axios now supports passing signal\n\t\t// just need to hunt down anything depending on this behvior and pass along the signal\n\t\t// from react query\n\t\t(promise as QueryPromise).cancel = () => {\n\t\t\treturn source.cancel('cancelled by external script');\n\t\t};\n\n\t\treturn promise;\n\t};\n\n\treturn client;\n};\n\nexport default netxQueryClient;\n","/**\n * Supported languages\n */\nexport enum I18nLanguage {\n\tDE = 'de',\n\tEN = 'en',\n\tFR = 'fr',\n\tJA = 'ja',\n}\n\n// TODO: this is related to how these are referenced in the locales sheet\n/**\n * Supported locales as directly referenced in the locales sheet\n */\nexport enum I18nSupportedLocale {\n\tENGLISH = 'en-US',\n\tFRENCH = 'fr-FR',\n\tGERMAN = 'de-DE',\n\tJAPANESE = 'ja-JP',\n}\n\n/**\n * A map of language to its aliases\n */\nexport const I18N_LANGUAGE_ALIASES: Record<I18nLanguage, string[]> = {\n\t[I18nLanguage.DE]: ['de-DE', 'de'],\n\t[I18nLanguage.EN]: ['en-US', 'en'],\n\t[I18nLanguage.FR]: ['fr-CA', 'fr-FR', 'fr'],\n\t[I18nLanguage.JA]: ['ja-JP', 'jp-JP', 'ja'],\n};\n\n/**\n * A list of all supported languages\n */\nexport const I18N_SUPPORTED_LANGUAGES = Object.values(I18N_LANGUAGE_ALIASES)\n\t.flat()\n\t// this allows for no translation in storybook\n\t.concat(['none']);\n","import window from 'global/window';\nimport i18next, {type InitOptions} from 'i18next';\n\nwindow.i18n = window.i18next = i18next;\n// @ts-ignore\nif (globalThis) globalThis.i18n = globalThis.i18next = i18next;\n\nimport i18nextXHRBackend, {type BackendOptions} from 'i18next-xhr-backend';\nimport i18nextBrowserLanguageDetector from 'i18next-browser-languagedetector';\n// @ts-ignore\nimport jqueryI18next from 'jquery-i18next';\nimport {getPrefixedLogger} from '@netx/core-next/instance/logger';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\n// importing with full path for webpack/storybook alias support\nimport {backendOptions} from '@netx/core-next/locales/backend';\nimport {I18N_SUPPORTED_LANGUAGES} from './constants';\n\nconst logger = getPrefixedLogger('i18n');\n\n/**\n * Is i18n ready?\n */\nexport let i18nReady: Readonly<boolean> = false;\n\nlet resolver: () => void;\nlet rejector: (reason?: any) => void;\nexport const i18nInitialized = new Promise<void>((resolve, reject) => {\n\tresolver = resolve;\n\trejector = reject;\n});\n\n/**\n * i18next instance\n * @see https://www.i18next.com/\n */\nexport const i18n = i18next;\n\n/**\n * Initialize i18next\n * @returns i18next instance\n */\nexport const initializeI18n = () => {\n\tlogger.info('initializing');\n\n\treturn new Promise((resolve, reject) => {\n\t\t// TODO: make external file for easy overriding in things like storybook\n\t\tconst options: InitOptions<BackendOptions> = {\n\t\t\t// TODO: update translation files to be i18next JSON structure v3\n\t\t\tcompatibilityJSON: 'v1',\n\t\t\tinterpolation: {\n\t\t\t\tprefix: '__',\n\t\t\t\tsuffix: '__',\n\t\t\t\tescapeValue: false,\n\t\t\t},\n\t\t\tbackend: backendOptions,\n\t\t\tsupportedLngs: I18N_SUPPORTED_LANGUAGES,\n\t\t\tfallbackLng: false,\n\t\t\t// missingKeyNoValueFallbackToKey: true,\n\t\t\tload: 'currentOnly',\n\t\t\tns: ['translation'],\n\t\t\tdefaultNS: 'translation',\n\t\t\tdetection: {\n\t\t\t\torder: ['localStorage', 'navigator', 'htmlTag'],\n\t\t\t\tlookupLocalStorage: 'locale',\n\t\t\t\tcaches: ['localStorage'],\n\t\t\t},\n\t\t};\n\n\t\ti18next\n\t\t\t.use(i18nextXHRBackend)\n\t\t\t.use(i18nextBrowserLanguageDetector)\n\t\t\t.init(options, (error, instance) => {\n\t\t\t\t// ugh... backbone views\n\t\t\t\tjqueryI18next.init(i18next, $, {\n\t\t\t\t\t// appends $.t = i18next.t\n\t\t\t\t\ttName: 't',\n\t\t\t\t\t// appends $.i18n = i18next\n\t\t\t\t\ti18nName: 'i18n',\n\t\t\t\t\t// appends $(selector).localize(opts);\n\t\t\t\t\thandleName: 'localize',\n\t\t\t\t\t// selector for translating elements\n\t\t\t\t\tselectorAttr: 'data-i18n',\n\t\t\t\t\t// data-() attribute to grab target element to translate (if diffrent then itself)\n\t\t\t\t\ttargetAttr: 'i18n-target',\n\t\t\t\t\t// data-() attribute that contains options, will load/set if useOptionsAttr = true\n\t\t\t\t\toptionsAttr: 'i18n-options',\n\t\t\t\t\t// see optionsAttr\n\t\t\t\t\tuseOptionsAttr: false,\n\t\t\t\t\t// parses default values from content ele.val or ele.text\n\t\t\t\t\tparseDefaultValueFromContent: true,\n\t\t\t\t});\n\n\t\t\t\tif (error) {\n\t\t\t\t\ti18nReady = true;\n\t\t\t\t\trejector();\n\t\t\t\t\tlogger.error('failed');\n\t\t\t\t\treturn reject(error);\n\t\t\t\t}\n\n\t\t\t\t// Set on html tag\n\t\t\t\tdocument.documentElement.setAttribute('lang', i18next.language);\n\n\t\t\t\ti18nReady = true;\n\t\t\t\tlogger.info('initialized', i18next.language);\n\n\t\t\t\tdispatcher.trigger('app:i18n:ready');\n\t\t\t\t// i18n.on('languageChanged', (lng) => {\n\t\t\t\t// \tdocument.documentElement.setAttribute('lang', lng);\n\t\t\t\t// \tdispatcher.trigger('app:i18n:languageChanged', lng);\n\t\t\t\t// });\n\t\t\t\tresolve(i18next);\n\t\t\t\tresolver();\n\t\t\t});\n\t});\n};\n\nexport default i18next;\n","const consoleLogger = {\n type: 'logger',\n log(args) {\n this.output('log', args);\n },\n warn(args) {\n this.output('warn', args);\n },\n error(args) {\n this.output('error', args);\n },\n output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\nclass Logger {\n constructor(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.init(concreteLogger, options);\n }\n init(concreteLogger) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n return this.forward(args, 'log', '', true);\n }\n warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n return this.forward(args, 'warn', '', true);\n }\n error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n return this.forward(args, 'error', '');\n }\n deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = `${prefix}${this.prefix} ${args[0]}`;\n return this.logger[lvl](args);\n }\n create(moduleName) {\n return new Logger(this.logger, {\n ...{\n prefix: `${this.prefix}:${moduleName}:`\n },\n ...this.options\n });\n }\n clone(options) {\n options = options || this.options;\n options.prefix = options.prefix || this.prefix;\n return new Logger(this.logger, options);\n }\n}\nvar baseLogger = new Logger();\n\nclass EventEmitter {\n constructor() {\n this.observers = {};\n }\n on(events, listener) {\n events.split(' ').forEach(event => {\n this.observers[event] = this.observers[event] || [];\n this.observers[event].push(listener);\n });\n return this;\n }\n off(event, listener) {\n if (!this.observers[event]) return;\n if (!listener) {\n delete this.observers[event];\n return;\n }\n this.observers[event] = this.observers[event].filter(l => l !== listener);\n }\n emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n if (this.observers[event]) {\n const cloned = [].concat(this.observers[event]);\n cloned.forEach(observer => {\n observer(...args);\n });\n }\n if (this.observers['*']) {\n const cloned = [].concat(this.observers['*']);\n cloned.forEach(observer => {\n observer.apply(observer, [event, ...args]);\n });\n }\n }\n}\n\nfunction defer() {\n let res;\n let rej;\n const promise = new Promise((resolve, reject) => {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(m => {\n if (s[m]) t[m] = s[m];\n });\n}\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n const stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n const key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\nfunction setPath(object, path, newValue) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n const {\n obj,\n k\n } = getLastOfPath(object, path, Object);\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n const {\n obj,\n k\n } = getLastOfPath(object, path);\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n const value = getPath(data, key);\n if (value !== undefined) {\n return value;\n }\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (const prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, s => _entityMap[s]);\n }\n return data;\n}\nconst chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n nsSeparator = nsSeparator || '';\n keySeparator = keySeparator || '';\n const possibleChars = chars.filter(c => nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0);\n if (possibleChars.length === 0) return true;\n const r = new RegExp(`(${possibleChars.map(c => c === '?' ? '\\\\?' : c).join('|')})`);\n let matched = !r.test(key);\n if (!matched) {\n const ki = key.indexOf(keySeparator);\n if (ki > 0 && !r.test(key.substring(0, ki))) {\n matched = true;\n }\n }\n return matched;\n}\nfunction deepFind(obj, path) {\n let keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n const paths = path.split(keySeparator);\n let current = obj;\n for (let i = 0; i < paths.length; ++i) {\n if (!current) return undefined;\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n if (current[paths[i]] === undefined) {\n let j = 2;\n let p = paths.slice(i, i + j).join(keySeparator);\n let mix = current[p];\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n if (mix === undefined) return undefined;\n if (mix === null) return null;\n if (path.endsWith(p)) {\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n }\n const joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n current = current[paths[i]];\n }\n return current;\n}\nfunction getCleanedCode(code) {\n if (code && code.indexOf('_') > 0) return code.replace('_', '-');\n return code;\n}\n\nclass ResourceStore extends EventEmitter {\n constructor(data) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n super();\n this.data = data || {};\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n if (this.options.ignoreJSONStructure === undefined) {\n this.options.ignoreJSONStructure = true;\n }\n }\n addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n removeNamespaces(ns) {\n const index = this.options.ns.indexOf(ns);\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n getResource(lng, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n let path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n const result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n addResource(lng, ns, key, value) {\n let options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n addResources(lng, ns, resources) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n for (const m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n addResourceBundle(lng, ns, resources, deep, overwrite) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n let path = [lng, ns];\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n this.addNamespaces(ns);\n let pack = getPath(this.data, path) || {};\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = {\n ...pack,\n ...resources\n };\n }\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return {\n ...{},\n ...this.getResource(lng, ns)\n };\n return this.getResource(lng, ns);\n }\n getDataByLanguage(lng) {\n return this.data[lng];\n }\n hasLanguageSomeTranslations(lng) {\n const data = this.getDataByLanguage(lng);\n const n = data && Object.keys(data) || [];\n return !!n.find(v => data[v] && Object.keys(data[v]).length > 0);\n }\n toJSON() {\n return this.data;\n }\n}\n\nvar postProcessor = {\n processors: {},\n addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle(processors, value, key, options, translator) {\n processors.forEach(processor => {\n if (this.processors[processor]) value = this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nconst checkedLoadedFor = {};\nclass Translator extends EventEmitter {\n constructor(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super();\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, this);\n this.options = options;\n if (this.options.keySeparator === undefined) {\n this.options.keySeparator = '.';\n }\n this.logger = baseLogger.create('translator');\n }\n changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n exists(key) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n if (key === undefined || key === null) {\n return false;\n }\n const resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n extractFromKey(key, options) {\n let nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n let namespaces = options.ns || this.options.defaultNS || [];\n const wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n const seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n const m = key.match(this.interpolator.nestingRegexp);\n if (m && m.length > 0) {\n return {\n key,\n namespaces\n };\n }\n const parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key,\n namespaces\n };\n }\n translate(keys, options, lastKey) {\n if (typeof options !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n if (typeof options === 'object') options = {\n ...options\n };\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n const returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n const keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n const {\n key,\n namespaces\n } = this.extractFromKey(keys[keys.length - 1], options);\n const namespace = namespaces[namespaces.length - 1];\n const lng = options.lng || this.language;\n const appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n const nsSeparator = options.nsSeparator || this.options.nsSeparator;\n if (returnDetails) {\n return {\n res: `${namespace}${nsSeparator}${key}`,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return `${namespace}${nsSeparator}${key}`;\n }\n if (returnDetails) {\n return {\n res: key,\n usedKey: key,\n exactUsedKey: key,\n usedLng: lng,\n usedNS: namespace,\n usedParams: this.getUsedParamsDetails(options)\n };\n }\n return key;\n }\n const resolved = this.resolve(keys, options);\n let res = resolved && resolved.res;\n const resUsedKey = resolved && resolved.usedKey || key;\n const resExactUsedKey = resolved && resolved.exactUsedKey || key;\n const resType = Object.prototype.toString.apply(res);\n const noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n const joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n const handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n const handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n const r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, {\n ...options,\n ns: namespaces\n }) : `key '${key} (${this.language})' returned an object instead of string.`;\n if (returnDetails) {\n resolved.res = r;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return r;\n }\n if (keySeparator) {\n const resTypeIsArray = resType === '[object Array]';\n const copy = resTypeIsArray ? [] : {};\n const newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n for (const m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n const deepKey = `${newKeyToUse}${keySeparator}${m}`;\n copy[m] = this.translate(deepKey, {\n ...options,\n ...{\n joinArrays: false,\n ns: namespaces\n }\n });\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n let usedDefault = false;\n let usedKey = false;\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const hasDefaultValue = Translator.hasDefaultValue(options);\n const defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n const defaultValueSuffixOrdinalFallback = options.ordinal && needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, {\n ordinal: false\n }) : '';\n const defaultValue = options[`defaultValue${defaultValueSuffix}`] || options[`defaultValue${defaultValueSuffixOrdinalFallback}`] || options.defaultValue;\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n const missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n const resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n const updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n if (keySeparator) {\n const fk = this.resolve(key, {\n ...options,\n keySeparator: false\n });\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n let lngs = [];\n const fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (let i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n const send = (l, k, specificDefaultValue) => {\n const defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n if (this.options.missingKeyHandler) {\n this.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n } else if (this.backendConnector && this.backendConnector.saveMissing) {\n this.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n }\n this.emit('missingKey', l, namespace, k, res);\n };\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(language => {\n this.pluralResolver.getSuffixes(language, options).forEach(suffix => {\n send([language], key + suffix, options[`defaultValue${suffix}`] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = `${namespace}:${key}`;\n if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n if (this.options.compatibilityAPI !== 'v1') {\n res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${namespace}:${key}` : key, usedDefault ? res : undefined);\n } else {\n res = this.options.parseMissingKeyHandler(res);\n }\n }\n }\n if (returnDetails) {\n resolved.res = res;\n resolved.usedParams = this.getUsedParamsDetails(options);\n return resolved;\n }\n return res;\n }\n extendTranslation(res, key, options, resolved, lastKey) {\n var _this = this;\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, {\n ...this.options.interpolation.defaultVariables,\n ...options\n }, options.lng || this.language || resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init({\n ...options,\n ...{\n interpolation: {\n ...this.options.interpolation,\n ...options.interpolation\n }\n }\n });\n const skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n let nestBef;\n if (skipOnVariables) {\n const nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n let data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n if (skipOnVariables) {\n const na = res.match(this.interpolator.nestingRegexp);\n const nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this.logger.warn(`It seems you are nesting recursively key: ${args[0]} in key: ${key[0]}`);\n return null;\n }\n return _this.translate(...args, key);\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n const postProcess = options.postProcess || this.options.postProcess;\n const postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? {\n i18nResolved: {\n ...resolved,\n usedParams: this.getUsedParamsDetails(options)\n },\n ...options\n } : options, this);\n }\n return res;\n }\n resolve(keys) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let found;\n let usedKey;\n let exactUsedKey;\n let usedLng;\n let usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(k => {\n if (this.isValidLookup(found)) return;\n const extracted = this.extractFromKey(k, options);\n const key = extracted.key;\n usedKey = key;\n let namespaces = extracted.namespaces;\n if (this.options.fallbackNS) namespaces = namespaces.concat(this.options.fallbackNS);\n const needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n const needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && this.pluralResolver.shouldUseIntlApi();\n const needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n const codes = options.lngs ? options.lngs : this.languageUtils.toResolveHierarchy(options.lng || this.language, options.fallbackLng);\n namespaces.forEach(ns => {\n if (this.isValidLookup(found)) return;\n usedNS = ns;\n if (!checkedLoadedFor[`${codes[0]}-${ns}`] && this.utils && this.utils.hasLoadedNamespace && !this.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[`${codes[0]}-${ns}`] = true;\n this.logger.warn(`key \"${usedKey}\" for languages \"${codes.join(', ')}\" won't get resolved as namespace \"${usedNS}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n codes.forEach(code => {\n if (this.isValidLookup(found)) return;\n usedLng = code;\n const finalKeys = [key];\n if (this.i18nFormat && this.i18nFormat.addLookupKeys) {\n this.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n let pluralSuffix;\n if (needsPluralHandling) pluralSuffix = this.pluralResolver.getSuffix(code, options.count, options);\n const zeroSuffix = `${this.options.pluralSeparator}zero`;\n const ordinalPrefix = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;\n if (needsPluralHandling) {\n finalKeys.push(key + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(key + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(key + zeroSuffix);\n }\n }\n if (needsContextHandling) {\n const contextKey = `${key}${this.options.contextSeparator}${options.context}`;\n finalKeys.push(contextKey);\n if (needsPluralHandling) {\n finalKeys.push(contextKey + pluralSuffix);\n if (options.ordinal && pluralSuffix.indexOf(ordinalPrefix) === 0) {\n finalKeys.push(contextKey + pluralSuffix.replace(ordinalPrefix, this.options.pluralSeparator));\n }\n if (needsZeroSuffixLookup) {\n finalKeys.push(contextKey + zeroSuffix);\n }\n }\n }\n }\n let possibleKey;\n while (possibleKey = finalKeys.pop()) {\n if (!this.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = this.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey,\n exactUsedKey,\n usedLng,\n usedNS\n };\n }\n isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n getResource(code, ns, key) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n getUsedParamsDetails() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const optionsKeys = ['defaultValue', 'ordinal', 'context', 'replace', 'lng', 'lngs', 'fallbackLng', 'ns', 'keySeparator', 'nsSeparator', 'returnObjects', 'returnDetails', 'joinArrays', 'postProcess', 'interpolation'];\n const useOptionsReplaceForData = options.replace && typeof options.replace !== 'string';\n let data = useOptionsReplaceForData ? options.replace : options;\n if (useOptionsReplaceForData && typeof options.count !== 'undefined') {\n data.count = options.count;\n }\n if (this.options.interpolation.defaultVariables) {\n data = {\n ...this.options.interpolation.defaultVariables,\n ...data\n };\n }\n if (!useOptionsReplaceForData) {\n data = {\n ...data\n };\n for (const key of optionsKeys) {\n delete data[key];\n }\n }\n return data;\n }\n static hasDefaultValue(options) {\n const prefix = 'defaultValue';\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n return false;\n }\n}\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nclass LanguageUtil {\n constructor(options) {\n this.options = options;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n getScriptPartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return null;\n const p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n getLanguagePartFromCode(code) {\n code = getCleanedCode(code);\n if (!code || code.indexOf('-') < 0) return code;\n const p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n const specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n let p = code.split('-');\n if (this.options.lowerCaseLng) {\n p = p.map(part => part.toLowerCase());\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n return p.join('-');\n }\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n getBestMatchFromCodes(codes) {\n if (!codes) return null;\n let found;\n codes.forEach(code => {\n if (found) return;\n const cleanedLng = this.formatLanguageCode(code);\n if (!this.options.supportedLngs || this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n if (!found && this.options.supportedLngs) {\n codes.forEach(code => {\n if (found) return;\n const lngOnly = this.getLanguagePartFromCode(code);\n if (this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = this.options.supportedLngs.find(supportedLng => {\n if (supportedLng === lngOnly) return supportedLng;\n if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks.default || [];\n let found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks.default;\n return found || [];\n }\n toResolveHierarchy(code, fallbackCode) {\n const fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n const codes = [];\n const addCode = c => {\n if (!c) return;\n if (this.isSupportedCode(c)) {\n codes.push(c);\n } else {\n this.logger.warn(`rejecting language code not found in supportedLngs: ${c}`);\n }\n };\n if (typeof code === 'string' && (code.indexOf('-') > -1 || code.indexOf('_') > -1)) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n fallbackCodes.forEach(fc => {\n if (codes.indexOf(fc) < 0) addCode(this.formatLanguageCode(fc));\n });\n return codes;\n }\n}\n\nlet sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nlet _rulesPluralsTypes = {\n 1: function (n) {\n return Number(n > 1);\n },\n 2: function (n) {\n return Number(n != 1);\n },\n 3: function (n) {\n return 0;\n },\n 4: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function (n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function (n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function (n) {\n return Number(n >= 2);\n },\n 10: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function (n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function (n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function (n) {\n return Number(n !== 0);\n },\n 14: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function (n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function (n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function (n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function (n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function (n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function (n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\nconst nonIntlVersions = ['v1', 'v2', 'v3'];\nconst intlVersions = ['v4'];\nconst suffixesOrder = {\n zero: 0,\n one: 1,\n two: 2,\n few: 3,\n many: 4,\n other: 5\n};\nfunction createRules() {\n const rules = {};\n sets.forEach(set => {\n set.lngs.forEach(l => {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\nclass PluralResolver {\n constructor(languageUtils) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n if ((!this.options.compatibilityJSON || intlVersions.includes(this.options.compatibilityJSON)) && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n this.options.compatibilityJSON = 'v3';\n this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n }\n this.rules = createRules();\n }\n addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n getRule(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.shouldUseIntlApi()) {\n try {\n return new Intl.PluralRules(getCleanedCode(code), {\n type: options.ordinal ? 'ordinal' : 'cardinal'\n });\n } catch (err) {\n return;\n }\n }\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n needsPlural(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (this.shouldUseIntlApi()) {\n return rule && rule.resolvedOptions().pluralCategories.length > 1;\n }\n return rule && rule.numbers.length > 1;\n }\n getPluralFormsOfKey(code, key) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return this.getSuffixes(code, options).map(suffix => `${key}${suffix}`);\n }\n getSuffixes(code) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const rule = this.getRule(code, options);\n if (!rule) {\n return [];\n }\n if (this.shouldUseIntlApi()) {\n return rule.resolvedOptions().pluralCategories.sort((pluralCategory1, pluralCategory2) => suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2]).map(pluralCategory => `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${pluralCategory}`);\n }\n return rule.numbers.map(number => this.getSuffix(code, number, options));\n }\n getSuffix(code, count) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const rule = this.getRule(code, options);\n if (rule) {\n if (this.shouldUseIntlApi()) {\n return `${this.options.prepend}${options.ordinal ? `ordinal${this.options.prepend}` : ''}${rule.select(count)}`;\n }\n return this.getSuffixRetroCompatible(rule, count);\n }\n this.logger.warn(`no plural rule found for: ${code}`);\n return '';\n }\n getSuffixRetroCompatible(rule, count) {\n const idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n let suffix = rule.numbers[idx];\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n const returnSuffix = () => this.options.prepend && suffix.toString() ? this.options.prepend + suffix.toString() : suffix.toString();\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return `_plural_${suffix.toString()}`;\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n shouldUseIntlApi() {\n return !nonIntlVersions.includes(this.options.compatibilityJSON);\n }\n}\n\nfunction deepFindWithDefaults(data, defaultData, key) {\n let keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n let ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n let path = getPathWithDefaults(data, defaultData, key);\n if (!path && ignoreJSONStructure && typeof key === 'string') {\n path = deepFind(data, key, keySeparator);\n if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n }\n return path;\n}\nclass Interpolator {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n this.format = options.interpolation && options.interpolation.format || (value => value);\n this.init(options);\n }\n init() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n const iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n reset() {\n if (this.options) this.init(this.options);\n }\n resetRegExp() {\n const regexpStr = `${this.prefix}(.+?)${this.suffix}`;\n this.regexp = new RegExp(regexpStr, 'g');\n const regexpUnescapeStr = `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`;\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n const nestingRegexpStr = `${this.nestingPrefix}(.+?)${this.nestingSuffix}`;\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n interpolate(str, data, lng, options) {\n let match;\n let value;\n let replaces;\n const defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n const handleFormat = key => {\n if (key.indexOf(this.formatSeparator) < 0) {\n const path = deepFindWithDefaults(data, defaultData, key, this.options.keySeparator, this.options.ignoreJSONStructure);\n return this.alwaysFormat ? this.format(path, undefined, lng, {\n ...options,\n ...data,\n interpolationkey: key\n }) : path;\n }\n const p = key.split(this.formatSeparator);\n const k = p.shift().trim();\n const f = p.join(this.formatSeparator).trim();\n return this.format(deepFindWithDefaults(data, defaultData, k, this.options.keySeparator, this.options.ignoreJSONStructure), f, lng, {\n ...options,\n ...data,\n interpolationkey: k\n });\n };\n this.resetRegExp();\n const missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n const skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n const todos = [{\n regex: this.regexpUnescape,\n safeValue: val => regexSafe(val)\n }, {\n regex: this.regexp,\n safeValue: val => this.escapeValue ? regexSafe(this.escape(val)) : regexSafe(val)\n }];\n todos.forEach(todo => {\n replaces = 0;\n while (match = todo.regex.exec(str)) {\n const matchedVar = match[1].trim();\n value = handleFormat(matchedVar);\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n const temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n value = '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n this.logger.warn(`missed to pass in variable ${matchedVar} for interpolating ${str}`);\n value = '';\n }\n } else if (typeof value !== 'string' && !this.useRawValueToEscape) {\n value = makeString(value);\n }\n const safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n if (skipOnVariables) {\n todo.regex.lastIndex += value.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n replaces++;\n if (replaces >= this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n nest(str, fc) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let match;\n let value;\n let clonedOptions;\n function handleHasOptions(key, inheritedOptions) {\n const sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n const c = key.split(new RegExp(`${sep}[ ]*{`));\n let optionsString = `{${c[1]}`;\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n const matchedSingleQuotes = optionsString.match(/'/g);\n const matchedDoubleQuotes = optionsString.match(/\"/g);\n if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n optionsString = optionsString.replace(/'/g, '\"');\n }\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = {\n ...inheritedOptions,\n ...clonedOptions\n };\n } catch (e) {\n this.logger.warn(`failed parsing options string in nesting for key ${key}`, e);\n return `${key}${sep}${optionsString}`;\n }\n delete clonedOptions.defaultValue;\n return key;\n }\n while (match = this.nestingRegexp.exec(str)) {\n let formatters = [];\n clonedOptions = {\n ...options\n };\n clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n let doReduce = false;\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n const r = match[1].split(this.formatSeparator).map(elem => elem.trim());\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n if (!value) {\n this.logger.warn(`missed to resolve ${match[1]} for nesting ${str}`);\n value = '';\n }\n if (doReduce) {\n value = formatters.reduce((v, f) => this.format(v, f, options.lng, {\n ...options,\n interpolationkey: match[1].trim()\n }), value.trim());\n }\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n return str;\n }\n}\n\nfunction parseFormatStr(formatStr) {\n let formatName = formatStr.toLowerCase().trim();\n const formatOptions = {};\n if (formatStr.indexOf('(') > -1) {\n const p = formatStr.split('(');\n formatName = p[0].toLowerCase().trim();\n const optStr = p[1].substring(0, p[1].length - 1);\n if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n if (!formatOptions.range) formatOptions.range = optStr.trim();\n } else {\n const opts = optStr.split(';');\n opts.forEach(opt => {\n if (!opt) return;\n const [key, ...rest] = opt.split(':');\n const val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n if (val === 'false') formatOptions[key.trim()] = false;\n if (val === 'true') formatOptions[key.trim()] = true;\n if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n });\n }\n }\n return {\n formatName,\n formatOptions\n };\n}\nfunction createCachedFormatter(fn) {\n const cache = {};\n return function invokeFormatter(val, lng, options) {\n const key = lng + JSON.stringify(options);\n let formatter = cache[key];\n if (!formatter) {\n formatter = fn(getCleanedCode(lng), options);\n cache[key] = formatter;\n }\n return formatter(val);\n };\n}\nclass Formatter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.logger = baseLogger.create('formatter');\n this.options = options;\n this.formats = {\n number: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n currency: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.NumberFormat(lng, {\n ...opt,\n style: 'currency'\n });\n return val => formatter.format(val);\n }),\n datetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.DateTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n }),\n relativetime: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.RelativeTimeFormat(lng, {\n ...opt\n });\n return val => formatter.format(val, opt.range || 'day');\n }),\n list: createCachedFormatter((lng, opt) => {\n const formatter = new Intl.ListFormat(lng, {\n ...opt\n });\n return val => formatter.format(val);\n })\n };\n this.init(options);\n }\n init(services) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n const iOpts = options.interpolation;\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n }\n add(name, fc) {\n this.formats[name.toLowerCase().trim()] = fc;\n }\n addCached(name, fc) {\n this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n }\n format(value, format, lng) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n const formats = format.split(this.formatSeparator);\n const result = formats.reduce((mem, f) => {\n const {\n formatName,\n formatOptions\n } = parseFormatStr(f);\n if (this.formats[formatName]) {\n let formatted = mem;\n try {\n const valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n const l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n formatted = this.formats[formatName](mem, l, {\n ...formatOptions,\n ...options,\n ...valOptions\n });\n } catch (error) {\n this.logger.warn(error);\n }\n return formatted;\n } else {\n this.logger.warn(`there was no format function for ${formatName}`);\n }\n return mem;\n }, value);\n return result;\n }\n}\n\nfunction removePending(q, name) {\n if (q.pending[name] !== undefined) {\n delete q.pending[name];\n q.pendingCount--;\n }\n}\nclass Connector extends EventEmitter {\n constructor(backend, store, services) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super();\n this.backend = backend;\n this.store = store;\n this.services = services;\n this.languageUtils = services.languageUtils;\n this.options = options;\n this.logger = baseLogger.create('backendConnector');\n this.waitingReads = [];\n this.maxParallelReads = options.maxParallelReads || 10;\n this.readingCalls = 0;\n this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n this.state = {};\n this.queue = [];\n if (this.backend && this.backend.init) {\n this.backend.init(services, options.backend, options);\n }\n }\n queueLoad(languages, namespaces, options, callback) {\n const toLoad = {};\n const pending = {};\n const toLoadLanguages = {};\n const toLoadNamespaces = {};\n languages.forEach(lng => {\n let hasAllNamespaces = true;\n namespaces.forEach(ns => {\n const name = `${lng}|${ns}`;\n if (!options.reload && this.store.hasResourceBundle(lng, ns)) {\n this.state[name] = 2;\n } else if (this.state[name] < 0) ; else if (this.state[name] === 1) {\n if (pending[name] === undefined) pending[name] = true;\n } else {\n this.state[name] = 1;\n hasAllNamespaces = false;\n if (pending[name] === undefined) pending[name] = true;\n if (toLoad[name] === undefined) toLoad[name] = true;\n if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n }\n });\n if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n });\n if (Object.keys(toLoad).length || Object.keys(pending).length) {\n this.queue.push({\n pending,\n pendingCount: Object.keys(pending).length,\n loaded: {},\n errors: [],\n callback\n });\n }\n return {\n toLoad: Object.keys(toLoad),\n pending: Object.keys(pending),\n toLoadLanguages: Object.keys(toLoadLanguages),\n toLoadNamespaces: Object.keys(toLoadNamespaces)\n };\n }\n loaded(name, err, data) {\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n this.state[name] = err ? -1 : 2;\n const loaded = {};\n this.queue.forEach(q => {\n pushPath(q.loaded, [lng], ns);\n removePending(q, name);\n if (err) q.errors.push(err);\n if (q.pendingCount === 0 && !q.done) {\n Object.keys(q.loaded).forEach(l => {\n if (!loaded[l]) loaded[l] = {};\n const loadedKeys = q.loaded[l];\n if (loadedKeys.length) {\n loadedKeys.forEach(n => {\n if (loaded[l][n] === undefined) loaded[l][n] = true;\n });\n }\n });\n q.done = true;\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(q => !q.done);\n }\n read(lng, ns, fcName) {\n let tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n let wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n let callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n if (this.readingCalls >= this.maxParallelReads) {\n this.waitingReads.push({\n lng,\n ns,\n fcName,\n tried,\n wait,\n callback\n });\n return;\n }\n this.readingCalls++;\n const resolver = (err, data) => {\n this.readingCalls--;\n if (this.waitingReads.length > 0) {\n const next = this.waitingReads.shift();\n this.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n }\n if (err && data && tried < this.maxRetries) {\n setTimeout(() => {\n this.read.call(this, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n callback(err, data);\n };\n const fc = this.backend[fcName].bind(this.backend);\n if (fc.length === 2) {\n try {\n const r = fc(lng, ns);\n if (r && typeof r.then === 'function') {\n r.then(data => resolver(null, data)).catch(resolver);\n } else {\n resolver(null, r);\n }\n } catch (err) {\n resolver(err);\n }\n return;\n }\n return fc(lng, ns, resolver);\n }\n prepareLoading(languages, namespaces) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n let callback = arguments.length > 3 ? arguments[3] : undefined;\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n const toLoad = this.queueLoad(languages, namespaces, options, callback);\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n toLoad.toLoad.forEach(name => {\n this.loadOne(name);\n });\n }\n load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n loadOne(name) {\n let prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n const s = name.split('|');\n const lng = s[0];\n const ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, (err, data) => {\n if (err) this.logger.warn(`${prefix}loading namespace ${ns} for language ${lng} failed`, err);\n if (!err && data) this.logger.log(`${prefix}loaded namespace ${ns} for language ${lng}`, data);\n this.loaded(name, err, data);\n });\n }\n saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n let options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n let clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : () => {};\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(`did not save key \"${key}\" as the namespace \"${namespace}\" was not yet loaded`, 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n if (key === undefined || key === null || key === '') return;\n if (this.backend && this.backend.create) {\n const opts = {\n ...options,\n isUpdate\n };\n const fc = this.backend.create.bind(this.backend);\n if (fc.length < 6) {\n try {\n let r;\n if (fc.length === 5) {\n r = fc(languages, namespace, key, fallbackValue, opts);\n } else {\n r = fc(languages, namespace, key, fallbackValue);\n }\n if (r && typeof r.then === 'function') {\n r.then(data => clb(null, data)).catch(clb);\n } else {\n clb(null, r);\n }\n } catch (err) {\n clb(err);\n }\n } else {\n fc(languages, namespace, key, fallbackValue, clb, opts);\n }\n }\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n}\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: false,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n let ret = {};\n if (typeof args[1] === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n if (typeof args[2] === 'object' || typeof args[3] === 'object') {\n const options = args[3] || args[2];\n Object.keys(options).forEach(key => {\n ret[key] = options[key];\n });\n }\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: value => value,\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: true\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n return options;\n}\n\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n const mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n mems.forEach(mem => {\n if (typeof inst[mem] === 'function') {\n inst[mem] = inst[mem].bind(inst);\n }\n });\n}\nclass I18n extends EventEmitter {\n constructor() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n super();\n this.options = transformOptions(options);\n this.services = {};\n this.logger = baseLogger;\n this.modules = {\n external: []\n };\n bindMemberFunctions(this);\n if (callback && !this.isInitialized && !options.isClone) {\n if (!this.options.initImmediate) {\n this.init(options, callback);\n return this;\n }\n setTimeout(() => {\n this.init(options, callback);\n }, 0);\n }\n }\n init() {\n var _this = this;\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n if (typeof options.ns === 'string') {\n options.defaultNS = options.ns;\n } else if (options.ns.indexOf('translation') < 0) {\n options.defaultNS = options.ns[0];\n }\n }\n const defOpts = get();\n this.options = {\n ...defOpts,\n ...this.options,\n ...transformOptions(options)\n };\n if (this.options.compatibilityAPI !== 'v1') {\n this.options.interpolation = {\n ...defOpts.interpolation,\n ...this.options.interpolation\n };\n }\n if (options.keySeparator !== undefined) {\n this.options.userDefinedKeySeparator = options.keySeparator;\n }\n if (options.nsSeparator !== undefined) {\n this.options.userDefinedNsSeparator = options.nsSeparator;\n }\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n let formatter;\n if (this.modules.formatter) {\n formatter = this.modules.formatter;\n } else if (typeof Intl !== 'undefined') {\n formatter = Formatter;\n }\n const lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n const s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n s.formatter = createClassOnDemand(formatter);\n s.formatter.init(s, this.options);\n this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n }\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n _this.emit(event, ...args);\n });\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n }\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n _this.emit(event, ...args);\n });\n this.modules.external.forEach(m => {\n if (m.init) m.init(this);\n });\n }\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n const codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n const storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(fcName => {\n this[fcName] = function () {\n return _this.store[fcName](...arguments);\n };\n });\n const storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(fcName => {\n this[fcName] = function () {\n _this.store[fcName](...arguments);\n return _this;\n };\n });\n const deferred = defer();\n const load = () => {\n const finish = (err, t) => {\n if (this.isInitialized && !this.initializedStoreOnce) this.logger.warn('init: i18next is already initialized. You should call init just once!');\n this.isInitialized = true;\n if (!this.options.isClone) this.logger.log('initialized', this.options);\n this.emit('initialized', this.options);\n deferred.resolve(t);\n callback(err, t);\n };\n if (this.languages && this.options.compatibilityAPI !== 'v1' && !this.isInitialized) return finish(null, this.t.bind(this));\n this.changeLanguage(this.options.lng, finish);\n };\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n return deferred;\n }\n loadResources(language) {\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n let usedCallback = callback;\n const usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode' && (!this.options.preload || this.options.preload.length === 0)) return usedCallback();\n const toLoad = [];\n const append = lng => {\n if (!lng) return;\n if (lng === 'cimode') return;\n const lngs = this.services.languageUtils.toResolveHierarchy(lng);\n lngs.forEach(l => {\n if (l === 'cimode') return;\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n if (!usedLng) {\n const fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(l => append(l));\n } else {\n append(usedLng);\n }\n if (this.options.preload) {\n this.options.preload.forEach(l => append(l));\n }\n this.services.backendConnector.load(toLoad, this.options.ns, e => {\n if (!e && !this.resolvedLanguage && this.language) this.setResolvedLanguage(this.language);\n usedCallback(e);\n });\n } else {\n usedCallback(null);\n }\n }\n reloadResources(lngs, ns, callback) {\n const deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, err => {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n if (module.type === 'formatter') {\n this.modules.formatter = module;\n }\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n return this;\n }\n setResolvedLanguage(l) {\n if (!l || !this.languages) return;\n if (['cimode', 'dev'].indexOf(l) > -1) return;\n for (let li = 0; li < this.languages.length; li++) {\n const lngInLngs = this.languages[li];\n if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n this.resolvedLanguage = lngInLngs;\n break;\n }\n }\n }\n changeLanguage(lng, callback) {\n var _this2 = this;\n this.isLanguageChangingTo = lng;\n const deferred = defer();\n this.emit('languageChanging', lng);\n const setLngProps = l => {\n this.language = l;\n this.languages = this.services.languageUtils.toResolveHierarchy(l);\n this.resolvedLanguage = undefined;\n this.setResolvedLanguage(l);\n };\n const done = (err, l) => {\n if (l) {\n setLngProps(l);\n this.translator.changeLanguage(l);\n this.isLanguageChangingTo = undefined;\n this.emit('languageChanged', l);\n this.logger.log('languageChanged', l);\n } else {\n this.isLanguageChangingTo = undefined;\n }\n deferred.resolve(function () {\n return _this2.t(...arguments);\n });\n if (callback) callback(err, function () {\n return _this2.t(...arguments);\n });\n };\n const setLng = lngs => {\n if (!lng && !lngs && this.services.languageDetector) lngs = [];\n const l = typeof lngs === 'string' ? lngs : this.services.languageUtils.getBestMatchFromCodes(lngs);\n if (l) {\n if (!this.language) {\n setLngProps(l);\n }\n if (!this.translator.language) this.translator.changeLanguage(l);\n if (this.services.languageDetector && this.services.languageDetector.cacheUserLanguage) this.services.languageDetector.cacheUserLanguage(l);\n }\n this.loadResources(l, err => {\n done(err, l);\n });\n };\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n if (this.services.languageDetector.detect.length === 0) {\n this.services.languageDetector.detect().then(setLng);\n } else {\n this.services.languageDetector.detect(setLng);\n }\n } else {\n setLng(lng);\n }\n return deferred;\n }\n getFixedT(lng, ns, keyPrefix) {\n var _this3 = this;\n const fixedT = function (key, opts) {\n let options;\n if (typeof opts !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n options = _this3.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = {\n ...opts\n };\n }\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n const keySeparator = _this3.options.keySeparator || '.';\n let resultKey;\n if (options.keyPrefix && Array.isArray(key)) {\n resultKey = key.map(k => `${options.keyPrefix}${keySeparator}${k}`);\n } else {\n resultKey = options.keyPrefix ? `${options.keyPrefix}${keySeparator}${key}` : key;\n }\n return _this3.t(resultKey, options);\n };\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n fixedT.ns = ns;\n fixedT.keyPrefix = keyPrefix;\n return fixedT;\n }\n t() {\n return this.translator && this.translator.translate(...arguments);\n }\n exists() {\n return this.translator && this.translator.exists(...arguments);\n }\n setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n hasLoadedNamespace(ns) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n const lng = options.lng || this.resolvedLanguage || this.languages[0];\n const fallbackLng = this.options ? this.options.fallbackLng : false;\n const lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n const loadNotPending = (l, n) => {\n const loadState = this.services.backendConnector.state[`${l}|${n}`];\n return loadState === -1 || loadState === 2;\n };\n if (options.precheck) {\n const preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n loadNamespaces(ns, callback) {\n const deferred = defer();\n if (!this.options.ns) {\n if (callback) callback();\n return Promise.resolve();\n }\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(n => {\n if (this.options.ns.indexOf(n) < 0) this.options.ns.push(n);\n });\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n loadLanguages(lngs, callback) {\n const deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n const preloaded = this.options.preload || [];\n const newLngs = lngs.filter(lng => preloaded.indexOf(lng) < 0);\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(err => {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n dir(lng) {\n if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n if (!lng) return 'rtl';\n const rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n const languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n }\n static createInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n cloneInstance() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n const forkResourceStore = options.forkResourceStore;\n if (forkResourceStore) delete options.forkResourceStore;\n const mergedOptions = {\n ...this.options,\n ...options,\n ...{\n isClone: true\n }\n };\n const clone = new I18n(mergedOptions);\n if (options.debug !== undefined || options.prefix !== undefined) {\n clone.logger = clone.logger.clone(options);\n }\n const membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(m => {\n clone[m] = this[m];\n });\n clone.services = {\n ...this.services\n };\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n if (forkResourceStore) {\n clone.store = new ResourceStore(this.store.data, mergedOptions);\n clone.services.resourceStore = clone.store;\n }\n clone.translator = new Translator(clone.services, mergedOptions);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n clone.emit(event, ...args);\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = mergedOptions;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages,\n resolvedLanguage: this.resolvedLanguage\n };\n }\n}\nconst instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nconst createInstance = instance.createInstance;\nconst dir = instance.dir;\nconst init = instance.init;\nconst loadResources = instance.loadResources;\nconst reloadResources = instance.reloadResources;\nconst use = instance.use;\nconst changeLanguage = instance.changeLanguage;\nconst getFixedT = instance.getFixedT;\nconst t = instance.t;\nconst exists = instance.exists;\nconst setDefaultNamespace = instance.setDefaultNamespace;\nconst hasLoadedNamespace = instance.hasLoadedNamespace;\nconst loadNamespaces = instance.loadNamespaces;\nconst loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n\nfunction addQueryString(url, params) {\n if (params && _typeof(params) === 'object') {\n var queryString = '',\n e = encodeURIComponent; // Must encode data\n\n for (var paramName in params) {\n queryString += '&' + e(paramName) + '=' + e(params[paramName]);\n }\n\n if (!queryString) {\n return url;\n }\n\n url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n }\n\n return url;\n} // https://gist.github.com/Xeoncross/7663273\n\n\nfunction ajax(url, options, callback, data, cache) {\n if (data && _typeof(data) === 'object') {\n if (!cache) {\n data['_t'] = new Date();\n } // URL encoded form data must be in querystring format\n\n\n data = addQueryString('', data).slice(1);\n }\n\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n\n try {\n var x;\n\n if (XMLHttpRequest) {\n x = new XMLHttpRequest();\n } else {\n x = new ActiveXObject('MSXML2.XMLHTTP.3.0');\n }\n\n x.open(data ? 'POST' : 'GET', url, 1);\n\n if (!options.crossDomain) {\n x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n x.withCredentials = !!options.withCredentials;\n\n if (data) {\n x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n }\n\n if (x.overrideMimeType) {\n x.overrideMimeType(\"application/json\");\n }\n\n var h = options.customHeaders;\n h = typeof h === 'function' ? h() : h;\n\n if (h) {\n for (var i in h) {\n x.setRequestHeader(i, h[i]);\n }\n }\n\n x.onreadystatechange = function () {\n x.readyState > 3 && callback && callback(x.responseText, x);\n };\n\n x.send(data);\n } catch (e) {\n console && console.log(e);\n }\n}\n\nfunction getDefaults() {\n return {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n allowMultiLoading: false,\n parse: JSON.parse,\n parsePayload: function parsePayload(namespace, key, fallbackValue) {\n return _defineProperty({}, key, fallbackValue || '');\n },\n crossDomain: false,\n ajax: ajax\n };\n}\n\nvar Backend =\n/*#__PURE__*/\nfunction () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Backend);\n\n this.init(services, options);\n this.type = 'backend';\n }\n\n _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n }\n }, {\n key: \"readMulti\",\n value: function readMulti(languages, namespaces, callback) {\n var loadPath = this.options.loadPath;\n\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath(languages, namespaces);\n }\n\n var url = this.services.interpolator.interpolate(loadPath, {\n lng: languages.join('+'),\n ns: namespaces.join('+')\n });\n this.loadUrl(url, callback);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n var loadPath = this.options.loadPath;\n\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath([language], [namespace]);\n }\n\n var url = this.services.interpolator.interpolate(loadPath, {\n lng: language,\n ns: namespace\n });\n this.loadUrl(url, callback);\n }\n }, {\n key: \"loadUrl\",\n value: function loadUrl(url, callback) {\n var _this = this;\n\n this.options.ajax(url, this.options, function (data, xhr) {\n if (xhr.status >= 500 && xhr.status < 600) return callback('failed loading ' + url, true\n /* retry */\n );\n if (xhr.status >= 400 && xhr.status < 500) return callback('failed loading ' + url, false\n /* no retry */\n );\n var ret, err;\n\n try {\n ret = _this.options.parse(data, url);\n } catch (e) {\n err = 'failed parsing ' + url + ' to json';\n }\n\n if (err) return callback(err, false);\n callback(null, ret);\n });\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue) {\n var _this2 = this;\n\n if (typeof languages === 'string') languages = [languages];\n var payload = this.options.parsePayload(namespace, key, fallbackValue);\n languages.forEach(function (lng) {\n var url = _this2.services.interpolator.interpolate(_this2.options.addPath, {\n lng: lng,\n ns: namespace\n });\n\n _this2.options.ajax(url, _this2.options, function (data, xhr) {//const statusCode = xhr.status.toString();\n // TODO: if statusCode === 4xx do log\n }, payload);\n });\n }\n }]);\n\n return Backend;\n}();\n\nBackend.type = 'backend';\n\nexport default Backend;\n","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n\n// eslint-disable-next-line no-control-regex\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nvar serializeCookie = function serializeCookie(name, val, options) {\n var opt = options || {};\n opt.path = opt.path || '/';\n var value = encodeURIComponent(val);\n var str = \"\".concat(name, \"=\").concat(value);\n if (opt.maxAge > 0) {\n var maxAge = opt.maxAge - 0;\n if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += \"; Max-Age=\".concat(Math.floor(maxAge));\n }\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n str += \"; Domain=\".concat(opt.domain);\n }\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n str += \"; Path=\".concat(opt.path);\n }\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n str += \"; Expires=\".concat(opt.expires.toUTCString());\n }\n if (opt.httpOnly) str += '; HttpOnly';\n if (opt.secure) str += '; Secure';\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n return str;\n};\nvar cookie = {\n create: function create(name, value, minutes, domain) {\n var cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: '/',\n sameSite: 'strict'\n };\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n },\n read: function read(name) {\n var nameEQ = \"\".concat(name, \"=\");\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) === ' ') c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n },\n remove: function remove(name) {\n this.create(name, '', -1);\n }\n};\nvar cookie$1 = {\n name: 'cookie',\n lookup: function lookup(options) {\n var found;\n if (options.lookupCookie && typeof document !== 'undefined') {\n var c = cookie.read(options.lookupCookie);\n if (c) found = c;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupCookie && typeof document !== 'undefined') {\n cookie.create(options.lookupCookie, lng, options.cookieMinutes, options.cookieDomain, options.cookieOptions);\n }\n }\n};\n\nvar querystring = {\n name: 'querystring',\n lookup: function lookup(options) {\n var found;\n if (typeof window !== 'undefined') {\n var search = window.location.search;\n if (!window.location.search && window.location.hash && window.location.hash.indexOf('?') > -1) {\n search = window.location.hash.substring(window.location.hash.indexOf('?'));\n }\n var query = search.substring(1);\n var params = query.split('&');\n for (var i = 0; i < params.length; i++) {\n var pos = params[i].indexOf('=');\n if (pos > 0) {\n var key = params[i].substring(0, pos);\n if (key === options.lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n return found;\n }\n};\n\nvar hasLocalStorageSupport = null;\nvar localStorageAvailable = function localStorageAvailable() {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n try {\n hasLocalStorageSupport = window !== 'undefined' && window.localStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.localStorage.setItem(testKey, 'foo');\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n return hasLocalStorageSupport;\n};\nvar localStorage = {\n name: 'localStorage',\n lookup: function lookup(options) {\n var found;\n if (options.lookupLocalStorage && localStorageAvailable()) {\n var lng = window.localStorage.getItem(options.lookupLocalStorage);\n if (lng) found = lng;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(options.lookupLocalStorage, lng);\n }\n }\n};\n\nvar hasSessionStorageSupport = null;\nvar sessionStorageAvailable = function sessionStorageAvailable() {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n try {\n hasSessionStorageSupport = window !== 'undefined' && window.sessionStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.sessionStorage.setItem(testKey, 'foo');\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n name: 'sessionStorage',\n lookup: function lookup(options) {\n var found;\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n var lng = window.sessionStorage.getItem(options.lookupSessionStorage);\n if (lng) found = lng;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(options.lookupSessionStorage, lng);\n }\n }\n};\n\nvar navigator$1 = {\n name: 'navigator',\n lookup: function lookup(options) {\n var found = [];\n if (typeof navigator !== 'undefined') {\n if (navigator.languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (var i = 0; i < navigator.languages.length; i++) {\n found.push(navigator.languages[i]);\n }\n }\n if (navigator.userLanguage) {\n found.push(navigator.userLanguage);\n }\n if (navigator.language) {\n found.push(navigator.language);\n }\n }\n return found.length > 0 ? found : undefined;\n }\n};\n\nvar htmlTag = {\n name: 'htmlTag',\n lookup: function lookup(options) {\n var found;\n var htmlTag = options.htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n if (htmlTag && typeof htmlTag.getAttribute === 'function') {\n found = htmlTag.getAttribute('lang');\n }\n return found;\n }\n};\n\nvar path = {\n name: 'path',\n lookup: function lookup(options) {\n var found;\n if (typeof window !== 'undefined') {\n var language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n if (language instanceof Array) {\n if (typeof options.lookupFromPathIndex === 'number') {\n if (typeof language[options.lookupFromPathIndex] !== 'string') {\n return undefined;\n }\n found = language[options.lookupFromPathIndex].replace('/', '');\n } else {\n found = language[0].replace('/', '');\n }\n }\n }\n return found;\n }\n};\n\nvar subdomain = {\n name: 'subdomain',\n lookup: function lookup(options) {\n // If given get the subdomain index else 1\n var lookupFromSubdomainIndex = typeof options.lookupFromSubdomainIndex === 'number' ? options.lookupFromSubdomainIndex + 1 : 1;\n // get all matches if window.location. is existing\n // first item of match is the match itself and the second is the first group macht which sould be the first subdomain match\n // is the hostname no public domain get the or option of localhost\n var language = typeof window !== 'undefined' && window.location && window.location.hostname && window.location.hostname.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i);\n\n // if there is no match (null) return undefined\n if (!language) return undefined;\n // return the given group match\n return language[lookupFromSubdomainIndex];\n }\n};\n\nfunction getDefaults() {\n return {\n order: ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'],\n lookupQuerystring: 'lng',\n lookupCookie: 'i18next',\n lookupLocalStorage: 'i18nextLng',\n lookupSessionStorage: 'i18nextLng',\n // cache user language\n caches: ['localStorage'],\n excludeCacheFor: ['cimode'],\n // cookieMinutes: 10,\n // cookieDomain: 'myDomain'\n\n convertDetectedLanguage: function convertDetectedLanguage(l) {\n return l;\n }\n };\n}\nvar Browser = /*#__PURE__*/function () {\n function Browser(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Browser);\n this.type = 'languageDetector';\n this.detectors = {};\n this.init(services, options);\n }\n _createClass(Browser, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services || {\n languageUtils: {}\n }; // this way the language detector can be used without i18next\n this.options = defaults(options, this.options || {}, getDefaults());\n if (typeof this.options.convertDetectedLanguage === 'string' && this.options.convertDetectedLanguage.indexOf('15897') > -1) {\n this.options.convertDetectedLanguage = function (l) {\n return l.replace('-', '_');\n };\n }\n\n // backwards compatibility\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n }\n }, {\n key: \"addDetector\",\n value: function addDetector(detector) {\n this.detectors[detector.name] = detector;\n }\n }, {\n key: \"detect\",\n value: function detect(detectionOrder) {\n var _this = this;\n if (!detectionOrder) detectionOrder = this.options.order;\n var detected = [];\n detectionOrder.forEach(function (detectorName) {\n if (_this.detectors[detectorName]) {\n var lookup = _this.detectors[detectorName].lookup(_this.options);\n if (lookup && typeof lookup === 'string') lookup = [lookup];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n detected = detected.map(function (d) {\n return _this.options.convertDetectedLanguage(d);\n });\n if (this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n }, {\n key: \"cacheUserLanguage\",\n value: function cacheUserLanguage(lng, caches) {\n var _this2 = this;\n if (!caches) caches = this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(function (cacheName) {\n if (_this2.detectors[cacheName]) _this2.detectors[cacheName].cacheUserLanguage(lng, _this2.options);\n });\n }\n }]);\n return Browser;\n}();\nBrowser.type = 'languageDetector';\n\nexport { Browser as default };\n","import {type BackendOptions} from 'i18next-xhr-backend';\nimport {I18N_SUPPORTED_LANGUAGES} from './constants';\n\n/**\n * i18next backend options\n */\nexport const backendOptions: BackendOptions = {\n\tallowMultiLoading: false,\n\tloadPath: (lngs) => {\n\t\tconst lng = I18N_SUPPORTED_LANGUAGES.includes(lngs[0]) ? lngs[0] : 'en-US';\n\t\treturn `/locales/${lng}/locales`;\n\t},\n};\n\nexport default backendOptions;\n","import {I18nSupportedLocale} from './constants';\nimport {Locales} from './utils';\n\nexport const I18nSupportedLocaleLabel = Locales<\n\tRecord<I18nSupportedLocale, string>\n>((i18n) => ({\n\t[I18nSupportedLocale.ENGLISH]: i18n('i18n.languageEnglish'),\n\t[I18nSupportedLocale.FRENCH]: i18n('i18n.languageFrench'),\n\t[I18nSupportedLocale.GERMAN]: i18n('i18n.languageGerman'),\n\t[I18nSupportedLocale.JAPANESE]: i18n('i18n.languageJapanese'),\n}));\n","import {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {I18nSupportedLocale} from '../constants';\n\nexport const getAvailableLocales = () => {\n\tconst localesPref = getPreference('i18n.userSelectableLocales');\n\tif (!localesPref) return Object.values(I18nSupportedLocale);\n\tconst localesFilter = localesPref.split(/[ ,]+/);\n\treturn Object.values(I18nSupportedLocale).filter((locale) =>\n\t\tlocalesFilter.includes(locale),\n\t);\n};\n\nexport default getAvailableLocales;\n","import {i18n} from '../i18n';\n\nexport const i18nLocaleCompare = (a: string, b: string) =>\n\tIntl.Collator(i18n.language).compare(a, b);\n\nexport default i18nLocaleCompare;\n","import {i18n as _i18n, i18nInitialized, i18nReady} from '../i18n';\n\n/**\n * Locales wrapper to ensure that values are set when i18n has been initialized\n * @param cb Callback function that returns the localized strings\n * @returns Localized strings\n *\n * @example\n * export const SchemaValidationErrorLabel = Locales((i18n) => ({\n * \tDATE_INVALID: i18n('i18n.invalidDate'),\n * \tREQUIRED: i18n('i18n.required'),\n * }));\n */\nexport const Locales = <\n\tT extends Record<string | number, string> = Record<string | number, string>,\n\tF extends (...args: any[]) => any = (\n\t\ti18n: typeof _i18n.t,\n\t\tlanguage: string,\n\t) => T,\n>(\n\tcb: F,\n): ReturnType<F> => {\n\tlet currentLanguage = _i18n.language;\n\n\tconst listen = () => {\n\t\t_i18n.on('languageChanged', (lng) => {\n\t\t\tif (currentLanguage === lng) return;\n\n\t\t\tif (!_i18n.hasResourceBundle(lng, 'translation')) {\n\t\t\t\tconst handleLoaded = () => {\n\t\t\t\t\tObject.assign(results, cb(_i18n.t.bind(_i18n), _i18n.language));\n\t\t\t\t\t_i18n.off('loaded', handleLoaded);\n\t\t\t\t};\n\t\t\t\t_i18n.on('loaded', handleLoaded);\n\t\t\t} else {\n\t\t\t\tObject.assign(results, cb(_i18n.t.bind(_i18n), _i18n.language));\n\t\t\t}\n\t\t\tcurrentLanguage = _i18n.language;\n\t\t});\n\t};\n\n\t// we will just abuse the object reference\n\t// we are still going to need to make a react hook for locales\n\t// so that one day we don't have to reload the entire site when that changes\n\t// just update the app context and any components rendered will re-render with\n\t// the updated locales\n\t// in any event, still think it may be nice to keep things wrapped in this so\n\t// that we can deal with the lib directly here and not a thousand places\n\tconst results = {} as ReturnType<F>;\n\tif (!i18nReady) {\n\t\tObject.assign(results, cb(_i18n.t.bind(_i18n), _i18n.language));\n\t\ti18nInitialized.then(() => {\n\t\t\tObject.assign(results, cb(_i18n.t.bind(_i18n), _i18n.language));\n\t\t\tlisten();\n\t\t});\n\t} else {\n\t\tObject.assign(results, cb(_i18n.t.bind(_i18n), _i18n.language));\n\t\tlisten();\n\t}\n\n\treturn results;\n};\n\nexport default Locales;\n","import {z} from 'zod';\n\n/**\n * The backend uses what is called a \"label value\" pattern in quite a few places.\\\n * This is a simple schema to represent that pattern.\n */\nexport const LabelValueSchema = z.object({\n\tlabel: z.string(),\n\tvalue: z.string(),\n});\n\n/** LabelValue type */\nexport type ILabelValue = z.infer<typeof LabelValueSchema>;\n\nexport default LabelValueSchema;\n","import {z} from 'zod';\n\nexport const ProgressReportWarningObjectSchema = z.object({});\n\nexport const ProgressReportSchema = z.object({\n\tpercentComplete: z.number().int().positive(),\n\tpercentLastLogged: z.number().int().positive(),\n\tjobTitle: z.string(),\n\tsecondsToReload: z.number().int().positive(),\n\tcompleteUrl: z.string().nullable(),\n\tdetails: z.string(),\n\tincrement: z.number().int().positive(),\n\tstartTime: z.number().int().positive(),\n\trunningTime: z.number().int().positive(),\n\trunningTimeLabel: z.string().nullable(),\n\testimatedTime: z.number().int().positive().nullable(),\n\tuserId: z.number().int().positive(),\n\tnotifyOnComplete: z.boolean(),\n\tsize: z.number().int().positive(),\n\tprogressMessages: z.string().nullable(),\n\tprogressMessageCount: z.number().int().positive(),\n\twarningObject: ProgressReportWarningObjectSchema.nullable(),\n});\n\nexport type IProgressReport = z.infer<typeof ProgressReportSchema>;\n\nexport type IProgressReportWarningObject = z.infer<\n\ttypeof ProgressReportWarningObjectSchema\n>;\n","import {z} from 'zod';\n\n/**\n * Sort order for a field.\n */\nexport enum SortOrder {\n\tASCENDING = 'asc',\n\tDESCENDING = 'desc',\n}\n\n/**\n * Sort schema.\n */\nexport const SortSchema = z.object({\n\tfield: z.string(),\n\torder: z.nativeEnum(SortOrder),\n});\n","import {Locales} from '@netx/core-next/locales';\n\n/**\n * Common schema validation error labels\n */\nexport const SchemaValidationErrorLabel = Locales((i18n) => ({\n\tDATE_INVALID: i18n('i18n.invalidDate'),\n\tDATE_MUST_BE_IN_THE_FUTURE: i18n('i18n.validationDateMustBeInTheFuture'),\n\tINVALID_VALUE: i18n('i18n.invalidValue'),\n\tREQUIRED: i18n('i18n.required'),\n}));\n","import {type ZodString} from 'zod';\nimport {SchemaValidationErrorLabel} from '../locales';\n\nconst URL_REGEX =\n\t// eslint-disable-next-line security/detect-unsafe-regex\n\t/^(http|https|:\\/\\/|\\.|@){2,}(localhost|\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\S*:\\w*@)*([a-zA-Z]|(\\d{1,3}|\\.){7}){1,}(\\w|\\.{2,}|\\.[a-zA-Z]{2,3}|\\/|\\?|&|:\\d|@|=|\\/|\\(.*\\)|#|-|%)*$/;\n\nexport const refineUrl = (s: ZodString) =>\n\ts.refine(\n\t\t(v) => {\n\t\t\treturn !v || URL_REGEX.test(v);\n\t\t},\n\t\t{message: SchemaValidationErrorLabel.INVALID_VALUE},\n\t);\n","import {z} from 'zod';\n\n// https://github.com/colinhacks/zod/issues/831\n/**\n * Zod Helper for creating a tuple of literals. This is otherwise very verbose\n * because each array entry need to wrapped in `z.literal` call\n */\nfunction createZodLiterals<Literals extends ReadonlyArray<z.Primitive>>(\n\t...literals: Literals\n): {[Index in keyof Literals]: z.ZodLiteral<Literals[Index]>};\n\nfunction createZodLiterals<Literals extends ReadonlyArray<z.Primitive>>(\n\t...literals: Literals\n) {\n\treturn literals.map((e) => z.literal(e));\n}\n\nexport {createZodLiterals};\n\nexport default createZodLiterals;\n","import type {ISort} from '../types';\n\nexport type EditEffectsSortOrderParams<D extends object, S extends keyof D> = {\n\tsortableFields: Readonly<S[]> | S[];\n\toriginalData?: D;\n\tsort: ISort<S>;\n\tupdatedData: D;\n};\n\nexport const editEffectsSortOrder = <D extends object, S extends keyof D>({\n\tsortableFields,\n\toriginalData,\n\tupdatedData,\n\tsort,\n}: EditEffectsSortOrderParams<D, S>) => {\n\t// we cant know\n\tif (!originalData) return true;\n\treturn sortableFields.some(\n\t\t(field) =>\n\t\t\tsort.field === field && originalData[field] !== updatedData[field],\n\t);\n};\n\nexport default editEffectsSortOrder;\n","export const caseInsensitiveStringIncludes = (str: string, includes: string) =>\n\tstr.toLocaleLowerCase().includes(includes.toLowerCase());\n\nexport default caseInsensitiveStringIncludes;\n","import {z} from 'zod';\nimport {caseInsensitiveStringIncludes} from '@netx/core/utils/caseInsensitiveStringIncludes';\n\nexport type EditRemovesFromFilterParams<D extends object, F extends object> = {\n\tfilters: F;\n\toriginalData?: D;\n\tupdatedData: D;\n\tschema: z.ZodObject<Record<string, z.ZodTypeAny>>;\n};\n\nexport const editRemovesFromFilter = <D extends object, F extends object>({\n\toriginalData,\n\tupdatedData,\n\tfilters,\n\tschema,\n}: EditRemovesFromFilterParams<D, F>) => {\n\tif (!originalData) return false;\n\n\t// TODO: fix this typing - in a hurry trying some things\n\treturn (Object.keys(filters) as unknown as Array<keyof D>).some((field) => {\n\t\tif (filters[field as unknown as keyof F] === null) return false;\n\t\tif (schema.shape[field as string] instanceof z.ZodString) {\n\t\t\treturn !caseInsensitiveStringIncludes(\n\t\t\t\toriginalData[field as keyof typeof originalData] as string,\n\t\t\t\tupdatedData[field as keyof typeof updatedData] as string,\n\t\t\t);\n\t\t}\n\n\t\treturn updatedData[field] !== originalData[field];\n\t});\n};\n\nexport default editRemovesFromFilter;\n","export type GetDefaultFiltersParams<F extends Record<string, any>> = {\n\tfilters?: Partial<F>;\n\tfilterableFields: readonly (keyof F)[];\n};\n\nexport const getDefaultFilters = <F extends Record<string, any>>({\n\tfilters,\n\tfilterableFields,\n}: GetDefaultFiltersParams<F>): F => {\n\treturn filterableFields.reduce<F>((accum, field) => {\n\t\treturn {\n\t\t\t...accum,\n\t\t\t[field]: filters?.[field] ?? null,\n\t\t};\n\t}, {} as F);\n};\n\nexport default getDefaultFilters;\n","export type GetSortFieldParams<S extends string> = {\n\tsortField?: string | null;\n\tsortableFields: readonly S[] | S[];\n\tdefaultSortField: S;\n};\n\nexport const getSortField = <S extends string>({\n\tsortField,\n\tsortableFields,\n\tdefaultSortField,\n}: GetSortFieldParams<S>): S =>\n\tsortField != null && sortableFields.includes(sortField as S)\n\t\t? (sortField as S)\n\t\t: defaultSortField;\n\nexport default getSortField;\n","import {SortOrder} from '../constants';\n\nexport type GetSortOrderParams = {\n\tsortOrder?: string | null;\n\tdefaultSortOrder?: SortOrder;\n};\n\n/** will return the passed in sort order if valid, otherwise will return the default sort order */\nexport const geSortOrder = ({\n\tsortOrder,\n\tdefaultSortOrder,\n}: GetSortOrderParams): SortOrder =>\n\tObject.values(SortOrder).includes(sortOrder as SortOrder)\n\t\t? (sortOrder as SortOrder)\n\t\t: defaultSortOrder || SortOrder.DESCENDING;\n\nexport default geSortOrder;\n","import {z} from 'zod';\n\nexport const makeOptionalPropsNullable = <Schema extends z.AnyZodObject>(\n\tschema: Schema,\n) => {\n\tconst entries = Object.entries(schema.shape) as [\n\t\tkeyof Schema['shape'],\n\t\tz.ZodTypeAny,\n\t][];\n\tconst newProps = entries.reduce(\n\t\t(acc, [key, value]) => {\n\t\t\tacc[key] =\n\t\t\t\tvalue instanceof z.ZodOptional ? value.unwrap().nullable() : value;\n\t\t\treturn acc;\n\t\t},\n\t\t{} as {\n\t\t\t[key in keyof Schema['shape']]: Schema['shape'][key] extends z.ZodOptional<\n\t\t\t\tinfer T\n\t\t\t>\n\t\t\t\t? z.ZodNullable<T>\n\t\t\t\t: Schema['shape'][key];\n\t\t},\n\t);\n\treturn z.object(newProps);\n};\n\nexport default makeOptionalPropsNullable;\n","import {z} from 'zod';\n\nconst literalSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);\n\ntype Literal = z.infer<typeof literalSchema>;\n\ntype Json = Literal | {[key: string]: Json} | Json[];\n\nconst jsonSchema: z.ZodType<Json> = z.lazy(() =>\n\tz.union([literalSchema, z.array(jsonSchema), z.record(jsonSchema)]),\n);\n\nexport const json = () => jsonSchema;\n\nexport const stringToJSONSchema = z\n\t.string()\n\t.transform((str, ctx): z.infer<ReturnType<typeof json>> => {\n\t\ttry {\n\t\t\treturn JSON.parse(str);\n\t\t} catch (e) {\n\t\t\tctx.addIssue({code: 'custom', message: 'Invalid JSON'});\n\t\t\treturn z.NEVER;\n\t\t}\n\t});\n\nexport const stringToJSON = () => stringToJSONSchema;\n","import window from 'global/window';\n\n/*******\n * The following logic builds the Netx.URL object\n * which contains all relevant path information\n * such as host, protocol, query string, base, api\n * endpoint, etc.\n */\n\nexport const apiVersion = `v1.2`;\nexport const apiEndpoint = `/x7/${apiVersion}/json`;\n\nconst host: string = window.location.host;\nconst location: string = window.location.href.toString();\nconst protocol: string = location.split(host)[0];\nconst queryString = location.split(host)[1];\nconst baseDir: string = window.location.pathname;\nconst base = protocol + host + baseDir;\n\nexport let themeName = baseDir.match(/\\/portals\\/(.*)\\//)?.[1] || 'netx';\n\nconst api = protocol + host + apiEndpoint;\nconst proxyApiEndpoint = '/core/proxy/';\nconst proxyApi = protocol + host + proxyApiEndpoint;\n\nconst uploadEndpoint = '/servlet/FileUploader';\nconst upload = protocol + host + uploadEndpoint;\nconst uploads3Endpoint = `${protocol}${host}/`;\n\n/** Asset retrieval servlet (for zoom) */\nconst assetEndpoint = '/file/asset';\nconst asset = protocol + host + assetEndpoint;\n\nconst assetFileApiEndpoint = `${protocol}${host}/api/file/asset/`;\n\n// Branding\n// Login background (only for netx theme currently)\nconst loginBackgroundEndpoint = '/theme/netx/background';\nconst loginBackground = protocol + host + loginBackgroundEndpoint;\n\nconst watermarkEndpoint = `/theme/${themeName}/watermark`;\nconst watermark = `${protocol}${host}${watermarkEndpoint}`;\n\n// CSS Properties (vars)\nconst customCssPropertiesEndpoint = `/theme/${themeName}/cssCustomProperties`;\nconst customCssProperties = protocol + host + customCssPropertiesEndpoint;\n\n// Logos (only for netx theme currently)\nconst logoLightEndpoint = '/theme/netx/logo-light';\nconst logoDarkEndpoint = '/theme/netx/logo-dark';\nconst logoLight = protocol + host + logoLightEndpoint;\nconst logoDark = protocol + host + logoDarkEndpoint;\n\n// This is to holdover portal until both `netx` and `portal` use the same branding mechanism\nconst themeLogo = themeName !== 'netx' ? `/theme/${themeName}/logo` : '';\n\n/**\n * Common URLs\n */\nexport const URL = {\n\tapi,\n\tasset,\n\tassetEndpoint,\n\tassetFileApiEndpoint,\n\tbase,\n\tbaseDir,\n\tcustomCssProperties,\n\tcustomCssPropertiesEndpoint,\n\thost,\n\tlocation,\n\tloginBackground,\n\tloginBackgroundEndpoint,\n\tlogoDarkEndpoint,\n\tlogoDark,\n\tlogoLightEndpoint,\n\tlogoLight,\n\tprotocol,\n\tproxyApi,\n\tproxyApiEndpoint,\n\tqueryString,\n\tthemeLogo,\n\tupload,\n\tuploadEndpoint,\n\tuploads3Endpoint,\n\twatermark,\n\twatermarkEndpoint,\n};\n\nexport default URL;\n","import type {ReactAction} from '@netx/core/bootstrap';\nimport {i18nLocaleCompare} from '../../locales/utils';\n\n/**\n * Provided a list of actions, this function will return an array of actions\n * that are ordered by their `order` property. If `disableSort` is true, the\n * actions will not be sorted by their `label`.\n * @param actions Actions\n * @param disableSort Disable sort\n * @returns Ordered actions\n *\n * @example\n * ```ts\n * const orderedActions = actionsToOrderedActions(actions);\n * ```\n */\nexport const actionsToOrderedActions = (\n\tactions: ReactAction[],\n\tdisableSort?: boolean,\n): ReactAction[] | ReactAction[][] => {\n\tconst groups = actions\n\t\t// Group actions by their `group` property\n\t\t.reduce<ReactAction[][]>((groups, action) => {\n\t\t\tconst group = Math.max(action.group ?? 0, 0);\n\t\t\t// Create a new group if it does not exist\n\t\t\tconst actionGroup = (groups[group] = groups[group] ?? []);\n\t\t\t// Add the action to the group\n\t\t\tactionGroup.push(action);\n\t\t\treturn groups;\n\t\t}, [])\n\t\t// Remove empty groups\n\t\t.filter(Boolean)\n\t\t// Sort actions within each group\n\t\t.map((actionGroup) => {\n\t\t\t// if `disableSort` is true, do not sort the actions by their `label`\n\t\t\tif (!disableSort) {\n\t\t\t\tactionGroup.sort((a, b) => i18nLocaleCompare(a.label, b.label));\n\t\t\t}\n\n\t\t\t// Split the actions into two arrays: ordered and unordered\n\t\t\tconst {ordered, unordered} = actionGroup.reduce(\n\t\t\t\t({ordered, unordered}, action) => ({\n\t\t\t\t\tordered: action.order != null ? [...ordered, action] : ordered,\n\t\t\t\t\tunordered: action.order == null ? [...unordered, action] : unordered,\n\t\t\t\t}),\n\t\t\t\t{\n\t\t\t\t\tordered: [] as ReactAction[],\n\t\t\t\t\tunordered: [] as ReactAction[],\n\t\t\t\t},\n\t\t\t);\n\n\t\t\t// Sort the ordered actions by their `order` property\n\t\t\t// and return the ordered actions followed by the unordered actions\n\t\t\treturn [\n\t\t\t\t...ordered.sort((a, b) => (a.order ?? 0) - (b.order ?? 0)),\n\t\t\t\t...unordered,\n\t\t\t];\n\t\t});\n\n\t// If there is only one group, unwrap and simply return the group\n\treturn groups.length === 1 ? groups[0] : groups;\n};\n","import {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport {appRouter} from '@netx/core-next/instance/router';\nimport {getPrefixedLogger} from '@netx/core-next/instance/logger';\nimport {spawnNewWindow} from '@netx/core-next/utils/browser';\nimport {FindLegacyAction} from '@netx/core/legacyActionManager';\n\nconst logger = getPrefixedLogger('utils/performLegacyAction');\n\nexport const performLegacyAction = (\n\tactionStr: string,\n\tactionArgs: any[] = [],\n) => {\n\tlogger.silly('utils/performAction', actionStr);\n\n\tconst action = FindLegacyAction(actionStr);\n\tif (!action) throw new Error(`'${actionStr}' is not a registered action`);\n\n\t// Generic handler for all Action clicks:\n\tif (action.fake) {\n\t\tlogger.warn(`The action '${action.event}' has not been registered`);\n\t}\n\t// or else, if the action itself defined a wrapper, run the arguments through that.\n\telse if (typeof action.wrapper === 'function') {\n\t\tactionArgs = action.wrapper.apply(this, actionArgs);\n\t\tif (!Array.isArray(actionArgs)) {\n\t\t\tthrow new Error(\n\t\t\t\t`Action wrapper for '${action.event}' did not return an array`,\n\t\t\t);\n\t\t}\n\t}\n\n\t// close any/all open dropdown menus\n\tdispatcher.trigger('app:close:menus');\n\n\t// If this action has a route, route to it\n\tif (typeof action.route === 'function') {\n\t\t// route can be a function that takes args & returns a string\n\t\tappRouter.navigate(action.route.apply(action, actionArgs) as string, true);\n\t} else if (typeof action.route === 'string') {\n\t\t// it can also be a plain string.\n\t\t// TODO: such actions could be rendered as simple hrefs that can be enabled/disabled, so the browser can do this part ...\n\t\tappRouter.navigate(action.route, true);\n\t}\n\t// If this action has a link, send the browser to it.\n\t// (Again, this could have been rendered as a simple href ...)\n\telse if (typeof action.link === 'string') {\n\t\tspawnNewWindow(action.link);\n\t\t// a link could be of the format \"#route\", or \"/other/site/on/this/host\" or even \"http://google.com\"\n\t\t// window.location = action.link;\n\t}\n\t// If no view & no route, trigger this action's event\n\telse {\n\t\tactionArgs.unshift(action.event);\n\t\tdispatcher.trigger.apply(dispatcher, actionArgs as unknown as any);\n\t}\n};\n","import {type AxiosResponse} from 'axios';\n\nexport const getResponseResults = <T>(\n\tresponse: AxiosResponse<{result: T}, any>,\n) => response.data.result;\n","/**\n * Convert an array to a CSV string\n * @param array Array to convert\n * @param spaces Add spaces after commas\n * @returns CSV string\n *\n * @example\n * ```ts\n * const csv = arrayToCsv(['a', 'b', 'c']); // \"a\",\"b\",\"c\"\n * ```\n */\nexport const arrayToCsv = (\n\tarray?: string | (number | string)[],\n\tspaces?: boolean,\n) => {\n\tif (typeof array === 'string') return array;\n\tif (!array || !Array.isArray(array)) return '';\n\treturn array.map((v) => `\"${v}\"`).join(`,${spaces ? ' ' : ''}`);\n};\n\nexport default arrayToCsv;\n","/**\n * Util to convert from the DAM's quoted-csv format for multiselects to a normal array\n * @param csv CSV string to convert\n * @param sep Separator\n * @returns Array\n *\n * @example\n * ```ts\n * const array = csvToArray('a,b,c'); // ['a', 'b', 'c']\n * ```\n */\nexport const csvToArray = (csv?: string[] | string, sep = ',') => {\n\tif (!csv) return [];\n\tif (Array.isArray(csv)) return csv;\n\n\t// the server will not wrap values in additional quotes if there is only 1 value\n\t// if we parse that one value we may end up splitting a value that contains commas\n\t// so, if we start with a \" and end with a \"\n\t// single value example string: \"Half sunk a shattered visage lies, whose frown,\"\n\t// multiple value example string: \"\\\"Who said—“Two vast and trunkless legs of stone\\\",\\\"\\\"I met a traveller from an antique land,\\\"\"\n\tif (csv.slice(0, 1) !== '\"' && csv.slice(-1) !== '\"') {\n\t\treturn [csv];\n\t}\n\n\t// https://greywyvern.com/?post=258\n\tfor (\n\t\t// eslint-disable-next-line no-var\n\t\tvar foo = csv.split((sep = sep || ',')), x = foo.length - 1, tl;\n\t\tx >= 0;\n\t\tx--\n\t) {\n\t\tif (foo[x].replace(/\"\\s+$/, '\"').charAt(foo[x].length - 1) == '\"') {\n\t\t\tif (\n\t\t\t\t(tl = foo[x].replace(/^\\s+\"/, '\"')).length > 1 &&\n\t\t\t\ttl.charAt(0) == '\"'\n\t\t\t) {\n\t\t\t\tfoo[x] = foo[x].replace(/^\\s*\"|\"\\s*$/g, '').replace(/\"\"/g, '\"');\n\t\t\t} else if (x) {\n\t\t\t\tfoo.splice(x - 1, 2, [foo[x - 1], foo[x]].join(sep));\n\t\t\t} else foo = foo.shift()?.split(sep).concat(foo) || [''];\n\t\t} else foo[x].replace(/\"\"/g, '\"');\n\t}\n\treturn foo\n\t\t.map((f) => f.replace(/\\\\'/g, \"'\"))\n\t\t.filter((f) => f != null && f !== '');\n};\n\nexport default csvToArray;\n","import type {SyntheticEvent} from 'react';\n\n/**\n * Prevent default event\n * @param event Event\n * @param args Arguments\n *\n * @example\n * ```ts\n * preventDefault(event);\n * ```\n */\nexport const preventDefault = <E extends SyntheticEvent | Event>(event: E) => {\n\tevent.preventDefault();\n};\n\nexport default preventDefault;\n","import type {SyntheticEvent} from 'react';\n\n/**\n * Stop event propagation\n * @param event Event\n *\n * @example\n * ```ts\n * stopPropagation(event);\n * ```\n */\nexport const stopPropagation = <E extends SyntheticEvent | Event>(event: E) => {\n\tevent.stopPropagation();\n};\n\nexport default stopPropagation;\n","import type {SyntheticEvent} from 'react';\nimport {preventDefault} from './preventDefault';\nimport {stopPropagation} from './stopPropagation';\n\n/**\n * Silence an event\n * @param event Event\n *\n * @example\n * ```ts\n * silenceEvent(event);\n * ```\n */\nexport const silenceEvent = <E extends SyntheticEvent | Event>(event: E) => {\n\tpreventDefault(event);\n\tstopPropagation(event);\n};\n\nexport default silenceEvent;\n","/**\n * Simulate click event on body\n */\nexport const simulateClickBody = () => {\n\tconst evt = new MouseEvent('click', {\n\t\tbubbles: true,\n\t\tcancelable: true,\n\t\tview: window,\n\t});\n\tconst canceled = !document.body.dispatchEvent(evt);\n};\n","/**\n * Spawn a new window with the given URL\n * @param url URL\n * @returns Window object\n *\n * @example\n * ```ts\n * const newWindow = spawnNewWindow('https://example.com');\n * ```\n */\nexport const spawnNewWindow = (url: string) => {\n\t// it is what it is\n\t// eslint-disable-next-line security/detect-non-literal-fs-filename\n\treturn window.open(url, '_blank');\n};\n","export const isFirefox = () =>\n\tnavigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n","// whatever we want to test here for touch devices\nconst isTouchDevice = () => window.matchMedia?.('(pointer: coarse)').matches;\nimport Modernizr from 'core-libs/modernizr/modernizr';\n\n/**\n * Is this a touch device and smaller than mobile-breakpoint-max?\n * @param testTouch Inlcude testing for touch\n * @return Is mobile\n */\nexport const isMobile = (testTocuh = true, threshhold = 767) =>\n\t(!testTocuh || (Modernizr as any).touch) && window.innerWidth < threshhold;\n","import window from 'global/window';\n\nexport const isSafari = window.safari != null;\n","// NOTE: if we trigger a download via window.location, safari (15.2, and maybe a little earlier) will interupt any outgoing calls\n// in cases of things like checking out an asset, we refetch the asset at the same time we are triggering the download - the `getAssetBean`\n// call is interupted and the fetch never goes through (in fact throws a generic error because the call was not resolved)\n\n/**\n * Will trigger a download in the borwser for the provided link\n * @param link Link to download\n *\n * @example\n * ```ts\n * openDownloadLink('https://example.com/file.zip');\n * ```\n */\nexport const openDownloadLink = (link: string, name?: string) => {\n\t// Safari (at least v15.2) ¯\\_(ツ)_/¯\n\t// window.location = link;\n\tconst anchor = document.createElement('a');\n\tanchor.setAttribute('download', name ?? '');\n\tanchor.href = link;\n\tdocument.body.appendChild(anchor);\n\tanchor.click();\n\tanchor.remove();\n};\n\nexport default openDownloadLink;\n","// An enum member cannot have a numeric name\n// An enum value can be a string or a number\nexport const enumToObject = <T extends {}>(enumObject: T) => {\n\treturn Object.entries(enumObject).reduce((accum, [key, value]) => {\n\t\tif (!isNaN(parseInt(key))) return accum;\n\t\treturn {\n\t\t\t...accum,\n\t\t\t[key]: value,\n\t\t};\n\t}, {} as T);\n};\n","import {enumToObject} from './enumToObject';\n\nexport const enumToValues = <T extends object>(enumObject: T) =>\n\tObject.values(enumToObject(enumObject)) as T[keyof T][];\n","// https://www.typescriptlang.org/play?exactOptionalPropertyTypes=true#code/C4TwDgpgBAKgrmANhAogO2AJxAHhlCAD2AjQBMBnKTCAQzIHs1EQo40BrNBgdzQG0AugBooASQLFSlNp258hUALxQhogErKoaCADcImAHzKAUFFiSS5KjXpMWqgJZoAZgagAJOmVEA6f85umLC0joiCUAD8ZuawCMjoWLgwoYii-P6+YqLsXLxoIlCaAD6qAAYAJADeYvwA5MhoAObAABZ1ggC+ZaJe9ILGAFwx5uomJqCQUADyAEYAVhAAxsCJ2HiW0lRVncZKMfhEVjIMC8vAUSNQVaoA0lDOUBwQIAwusIKDdxoQAI5wjhoZDwhn4t0EEU6-Ger3eMAiRy2D1c7hQl1isTRiOsThRwVuokC7gAahFohiMfdsTIKFhnE0oKU0HAALazdzkikY-iVKq3bqiUlQYZcjE6fTBEWi8XuKVivSyq4yzDjIhgBiYC6TaBrZKbHE7PYHfUyWyMZisfi5eRoPz+a35IRkq7wJCoDDrGBDF0mqjqbz2EAAQUwmFouCJwQAqsZOdzecy2QYBVAoxE5bE5osVrqQarCOrNVAXOwVo4mFBtWQ1o4IBQNtTtrsABSnbPAL4wACUX39dgtIbDuFzXuMVRiNGAcEwaBmZxWvlIdLrrfnwC7UFoVAdfE3foDA9D4ZwI8MhgA3CZOuNtVAAMp05q3F7+pYa6se1gqXOv984WmYPSoizAwDDILQaBniYAD00GqABQFQCBYF0AUN7gNAAByrLspgz4gL+mAfkkWg-ssf6JrhwGgeBkGGDBcE8tUlHJj0SE0ahgjoVMUZoOWaD4YRxHYKRn44EJOB1C4oF1IyUB1LMtCYHU1EoRBUGwaoUkyaptERKU9SKcpumcdx0BZucMAYVo47mLQXwsZgwgxLMkRfAhzTOeYSwOTh7ilOwZAQC4zgQD4MRkG5UAeQyAXkMFoVkFeZlzu2VmQLqolJDgFkrOlED0ZpjjvGQjgULQszIGQki0Cs0xgMA-G0IgAAKmAMJAmogPlVAdY1TAMbE-AAES0MNoiOfpqjDbM43RY+TRTSNSxzY5cmBQlOhkEtw1kHNMVcUV7ykBVVU1XVDVNa17WdaAPVQH1-GDeYI1jRNfmYDts2iAdcnLatH3rfFIVbTte0-QtQNBSDYVcSYb5oLSUAI7SuUXCotmbl8w3SQw40uV8AAsABMXnI18LjNRQEBkwAjF8NzatjjnDVA16dHuyNMLSl4TNZADC3PAGjmXfmJ2pvFziPC2uhWMaNc046Bw1fXNJM7StoiU4g1M7bTc03GagaVhhzMfcN55s3Dt68fxaNaM2MQ3C0UVrRzABkTtQIgwCu4D14bsUXvssAPAQKQXz8I571Jp9bMpbbTAi5+WXrInaBo3L00tADsc7T7ue4V9ECh+HaBzVHH0x0XcMoxcFAMCyEB3iAbJgVoLdt4gzZ1A3Td1F2vPOCQmCU0s0BiC1BgN7OmO0E0EB+7Hl7mGgtBN+5C0r-BjfN63IHhF8AAitAkMlfNTGIGAGGP7okWL2WT9PTBZ69C+FwYO1r03+0Ldb1mDnDKLKAuZAG4EchpRiCYPopkmilPs5oWBgOAWRfsSCjy4GQrRSB5RmIwLYlg0yF9oDp2QSnB+6wwE4DWqUQh6lX7QNjrAwGtCOIQX-lMV0yAyH3xAWJfgMVq4GBMuw1+w0AAMv9ALND1h-OOBlhrEzmnQtC8MhZS1pFw6AKgRq4zVqTa4TwXjY10M1OAEBWadAiFuDRwBea3kFtLLRPCRIUNwBLd4dctFiMkaIJWeNZGiHVn9RRBtqAHgcDCExZiLGWysUAA\n\ntype TupleEntry<\n\tT extends readonly unknown[],\n\tI extends unknown[] = [],\n\tR = never,\n> = T extends readonly [infer Head, ...infer Tail]\n\t? TupleEntry<Tail, [...I, unknown], R | [`${I['length']}`, Head]>\n\t: R;\n\ntype ObjectEntry<T extends {}> = T extends object\n\t? {[K in keyof T]: [K, Required<T>[K]]}[keyof T] extends infer E\n\t\t? E extends [infer K, infer V]\n\t\t\t? K extends string | number\n\t\t\t\t? [`${K}`, V]\n\t\t\t\t: never\n\t\t\t: never\n\t\t: never\n\t: never;\n\n/**\n * Helper for casting typed `Object.entries`\n *\n * @typeParam T - The infered object type\n *\n * @example\n * const typedEntries = Object.entries({a: 1, b: 2}) as unknown as ReadonlyArray<Entry<{a: number, b: number}>>;\n */\nexport type Entry<T extends {}> = T extends readonly [unknown, ...unknown[]]\n\t? TupleEntry<T>\n\t: T extends ReadonlyArray<infer U>\n\t? [`${number}`, U]\n\t: ObjectEntry<T>;\n\n/**\n * This is a typed version of `Object.entries`\n * @typeParam T - The infered object type\n * @param object The object to get entries from\n * @returns A typed array of entries from the object\n *\n * @example\n * ```ts\n * typedEntries(obj).some(([key, value]) => {...});\n * ```\n */\nexport const typedEntries = <T extends {}>(\n\tobject: T,\n): ReadonlyArray<Entry<T>> =>\n\tObject.entries(object) as unknown as ReadonlyArray<Entry<T>>;\n","import window from 'global/window';\n\nimport {getPrefixedLogger} from '@netx/core-next/instance/logger';\nconst logger = getPrefixedLogger('core/utils/setGlobal');\n\n/**\n * We have a global namespace issue in our app.\\\n * With old backbone code we have a lot of circular dependencies that are only\n * resolved by using a global namespace at the moment. There is also just a lot\n * of old code expecting to find things in the global namespace.\\\n * Rather than have all of that code just use `window.Netx` directly, we can\n * use this function to set the global namespace in a more controlled way - while\n * also logging its usage.\n * @param object An object or an function that returns an object to add to the global namespace\n *\n * @example\n * // adding to/overriding on the global namespace\n * setGlobal({\n * \tcms: {\n * \t\tportal: 'foo',\n * \t}\n * }); // accessible at Netx.cms\n *\n * @example\n * // merging with an existing object\n * setGlobal((Netx) => ({\n * \tcms: {\n * \t\t...Netx.cms,\n * \t\tportal: 'foo',\n *\t},\n * }));\n */\nexport const setGlobal = (object: Object | ((object: Object) => Object)) => {\n\t// the netx global object may not have been setup yet\n\tconst Netx = (window.Netx = window.Netx || {});\n\tconst obj = typeof object === 'function' ? object(Netx) : object;\n\tlogger.silly('adding to `Netx` namespace >', Object.keys(obj).join(', '));\n\tObject.assign(Netx, obj);\n};\n\nexport default setGlobal;\n","import {isBefore, parse} from 'date-fns';\n\n/**\n * Is date in the past\n * @param date `yyyy-MM-dd`\n * @return `true` if date is in the past\n *\n * @example\n * ```ts\n * const inThePast = isDateInThePast('2021-01-01');\n * ```\n */\nexport const isDateInThePast = (date?: string | null) => {\n\treturn (\n\t\tdate != null &&\n\t\tdate != '' &&\n\t\tisBefore(parse(date, 'yyyy-MM-dd', new Date()), new Date())\n\t);\n};\n","/**\n * Convert seconds to HH:MM:SS.\\\n * If seconds exceeds 24 hours, hours will be greater than 24 (30:05:10)\n * @param seconds Seconds to convert\n * @returns HH:MM:SS\n */\nexport const secondsToHms = (\n\tseconds: number,\n\ttotalSeconds?: number,\n): string => {\n\tconst totalHours = totalSeconds ? Math.floor(totalSeconds / 3600) : null;\n\tconst days = Math.floor(seconds / 86400);\n\tconst remainderSeconds = seconds % 86400;\n\tconst hms = new Date(remainderSeconds * 1000).toISOString().substring(11, 19);\n\tlet str = hms.replace(/^(\\d+)/, (h) =>\n\t\t`${Number(h) + days * 24}`.padStart(2, '0'),\n\t);\n\n\tif (totalSeconds != null && (!totalHours || totalHours < 1)) {\n\t\tstr = str.replace(/^00:/, '');\n\t}\n\n\treturn str;\n};\n","/**\n * Converts a time string to PT format\n * @param time The time to convert to PT format\n * @returns The time in PT format\n *\n * @example\n * ```ts\n * timeToPTFormat('1:30'); // 'PT0H1M30S'\n * timeToPTFormat('1:30:45'); // 'PT1H30M45S'\n * ```\n */\nexport const timeToPTFormat = (time: string): string => {\n\tconst parts = time.split(':').map(Number);\n\tlet hours = 0;\n\tlet minutes = 0;\n\tlet seconds = 0;\n\n\tswitch (parts.length) {\n\t\tcase 3:\n\t\t\t[hours, minutes, seconds] = parts;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\t[minutes, seconds] = parts;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error('Invalid time format');\n\t}\n\n\treturn `PT${hours}H${minutes}M${seconds}S`;\n};\n","/**\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/participant';\n\nimport PagerModel from '@netx/core-app/models/pager';\nimport SorterModel from '@netx/core-app/models/sorter';\n\nexport default class Participants extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} methods - Collection methods\n\t * @property {method} methods.read - Fetch participants\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'getParticipants',\n\t\t\t\t\tthis.resourceName,\n\t\t\t\t\tthis.resourceId,\n\t\t\t\t\tthis.filterStr,\n\t\t\t\t\tthis.sorter.getSortDTO(),\n\t\t\t\t\tthis.pager.getPageDTO(),\n\t\t\t\t];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Collection parsers\n\t * @property {function} parsers.read - Parse participants\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} participants Participants\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(participants, opts) {\n\t\t\t\treturn _.map(participants, (participant) => {\n\t\t\t\t\t// We want to combine the type and id `<type>-<id>`\n\t\t\t\t\t// `all` has no id and is just \"all\"\n\t\t\t\t\tconst uniqueId = _.compact(\n\t\t\t\t\t\t_.values(_.pick(participant, 'type', 'id')),\n\t\t\t\t\t).join('-');\n\n\t\t\t\t\treturn _.extend(participant, {\n\t\t\t\t\t\tuniqueId: uniqueId,\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {array} models An array of models or model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * @memberof module:asset/collections/participants\n\t\t * @alias resourceId\n\t\t * @type {number}\n\t\t */\n\t\tthis.resourceId = opts.resourceId;\n\n\t\t/**\n\t\t * @memberof module:asset/collections/participants\n\t\t * @alias resourceName\n\t\t * @type {string}\n\t\t */\n\t\tthis.resourceName = opts.resourceName;\n\n\t\t/**\n\t\t * Paging model\n\t\t * @memberof module:asset/collections/participants\n\t\t * @alias pager\n\t\t * @type {module:app/models/pager}\n\t\t */\n\t\tthis.pager = new PagerModel(\n\t\t\t{},\n\t\t\t{\n\t\t\t\tcollection: this,\n\t\t\t},\n\t\t);\n\n\t\t/**\n\t\t * Sorting model\n\t\t * @memberof module:asset/collections/participants\n\t\t * @alias sorter\n\t\t * @type {module:app/models/sorter}\n\t\t */\n\t\tthis.sorter = new SorterModel(\n\t\t\t{\n\t\t\t\tfield: opts.sortField || 'label',\n\t\t\t\torder: opts.sortOrder || 'desc',\n\t\t\t},\n\t\t\t{\n\t\t\t\tcollection: this,\n\t\t\t},\n\t\t);\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t'permissions:participant:edit:success',\n\t\t\t(participant, isNew) => {\n\t\t\t\tif (\n\t\t\t\t\tparticipant.get('resourceName') !== this.resourceName ||\n\t\t\t\t\tparticipant.get('resourceId') !== this.resourceId ||\n\t\t\t\t\tthis.get(participant.id)\n\t\t\t\t)\n\t\t\t\t\treturn;\n\n\t\t\t\tthis.add(participant);\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} participant Participant object\n\t * @param {object} opts Request options\n\t */\n\taddParticipant(participant, opts) {\n\t\tconst model = new this.model(\n\t\t\t_.extend(\n\t\t\t\t_.pick.apply(_, [participant].concat(_.keys(this.model.GetDefaults()))),\n\t\t\t\t{\n\t\t\t\t\tresourceId: this.resourceId,\n\t\t\t\t\tresourceName: this.resourceName,\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\n\t\treturn model.save().then(() => this.add(model, opts));\n\t}\n\n\t/**\n\t * Filter by participant type\n\t * @param {string} type Type (user/group/all)\n\t * @return {module:permissions/collections/participants} Participants\n\t */\n\tfilterByType(type) {\n\t\treturn new this.constructor(\n\t\t\tthis.filter((model) => model.get('type') === type),\n\t\t\t{\n\t\t\t\tresourceName: this.resourceName,\n\t\t\t\tresourceId: this.resourceId,\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * Get participant by type (and id)\n\t * @param {string} type Type\n\t * @param {number} id ID\n\t * @return {module:permissions/models/participant} Participant\n\t */\n\tgetParticipant(type, id) {\n\t\tif (type === 'all') {\n\t\t\treturn this.findWhere({type: type});\n\t\t}\n\t\treturn this.findWhere({type: type, id: id});\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} id Participant id\n\t */\n\tremoveParticipant(id) {\n\t\tconst model = this.get(id);\n\n\t\tif (!model) {\n\t\t\treturn new $.Deferred().reject(\n\t\t\t\tnew Error('Participant model with id `' + id + '` not found.'),\n\t\t\t);\n\t\t}\n\n\t\treturn model.destroy({wait: true});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Participants';\n\t}\n}\n","export enum PermissionMatrixName {\n\tADD = 'add',\n\tALL = 'all',\n\tDELETE = 'delete',\n\tDOWNLOAD = 'download',\n\tMODIFY = 'modify',\n\tREAD = 'read',\n}\n\n// NOTE: keep these ordered as they would be in the permission matrix\nexport const PERMISSION_MATRIX_NAMES = [\n\tPermissionMatrixName.READ,\n\tPermissionMatrixName.DOWNLOAD,\n\tPermissionMatrixName.ADD,\n\tPermissionMatrixName.MODIFY,\n\tPermissionMatrixName.DELETE,\n\tPermissionMatrixName.ALL,\n] as const;\n\nexport enum PermissionMode {\n\tREAD = 'read',\n\tWRITE = 'write',\n\tDELETE = 'delete',\n}\n","/**\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nexport default class Participant extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'uniqueId';\n\t}\n\t/** @type {string} */\n\tget titleAttribute() {\n\t\treturn 'label';\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - Model defaults\n\t * @property {string} defaults.uniqueId - Participant `<type>-<id>`\n\t * @property {number} defaults.id - Participant id\n\t * @property {string} defaults.label - Participant label\n\t * @property {string} defaults.permission - Participant permission\n\t * @property {number} defaults.resourceId - Participant resource id\n\t * @property {string} defaults.resourceName - Participant resource name\n\t * @property {string} defaults.type - Participant type (all, group, user)\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tid: 0,\n\t\t\tlabel: '',\n\t\t\tpermission: 'read',\n\t\t\tresourceId: 0,\n\t\t\tresourceName: '',\n\t\t\ttype: 'user',\n\n\t\t\t// We have an issue - the unique id for these records are two keys: id and type\n\t\t\t// Backbone does not support this, so we have to make our own single id on the client of the two\n\t\t\t// uniqueId : ''\n\t\t};\n\t}\n\n\t/** @type {array} */\n\tget clientAttrs() {\n\t\treturn ['uniqueId'];\n\t}\n\n\t/**\n\t * @property {object} methods - Model methods\n\t * @property {method} methods.create - Add particpant to shared resource\n\t * @property {method} methods.remove - Remove participant from shared resource\n\t * @property {method} methods.update - Update participant on shared resource\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tcreate: function (opts) {\n\t\t\t\treturn ['addParticipant', this.self()];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tremove: function (opts) {\n\t\t\t\treturn ['removeParticipant', this.self()];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tupdate: function (opts) {\n\t\t\t\treturn ['updateParticipant', this.self()];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Model parsers\n\t * @property {method} parsers.create - Parse newly created participant\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} participant Participant\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tcreate: function (participant, opts) {\n\t\t\t\t// We want to combine the type and id `<type>-<id>`\n\t\t\t\t// `all` has no id and is just \"all\"\n\t\t\t\tvar uniqueId = _.compact(\n\t\t\t\t\t_.values(_.pick(participant, 'type', 'id')),\n\t\t\t\t).join('-');\n\n\t\t\t\treturn _.extend(participant, {\n\t\t\t\t\tuniqueId: uniqueId,\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {string} attr Attribute\n\t * @return {mixed} Value\n\t */\n\tget(attr) {\n\t\tif (attr === 'label' && this.attributes.type === 'all') {\n\t\t\treturn i18n.t('i18n.allUsers');\n\t\t}\n\t\treturn super.get(attr);\n\t}\n\n\t/** @override */\n\tgetLabel() {\n\t\treturn this.get('type') === 'all'\n\t\t\t? i18n.t('i18n.allUsers')\n\t\t\t: super.getLabel();\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} data Data\n\t * @param {object} opts Request options\n\t */\n\tparseAndSave(data, opts) {\n\t\treturn this.save(\n\t\t\t_.pick.apply(_, [data].concat(_.keys(this.constructor.GetDefaults()))),\n\t\t\topts,\n\t\t);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Participant';\n\t}\n}\n","/**\n * Permission model\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nexport default class Permission extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'permissionId';\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - The default permission values\n\t * @property {number} defaults.permissionsId - The default permission id\n\t * @property {string} defaults.type - The default permission type (read/deny)\n\t * @property {string} defaults.mode - The default permission mode\n\t * @property {object} defaults.resource - The default permission resource\n\t * @property {number} defaults.resource.id - The default permission resource id\n\t * @property {string} defaults.resource.type - The default permission resource type\n\t * @property {string} defaults.resource.scope - The default permission resource scope\n\t * @property {number} defaults.resource.attributeScope - The default permission resource attribute scope\n\t * @property {object} defaults.userSelector - The default permission user selector https://kb.netx.net/display/DEV/UserSelector\n\t * @property {boolean} defaults.userSelector.all - The default permission user selector all\n\t * @property {array} defaults.userSelector.emails - The default permission user selector emails\n\t * @property {array} defaults.userSelector.groupIds - The default permission user selector group ids\n\t * @property {boolean} defaults.userSelector.none - The default permission user selector none\n\t * @property {array} defaults.userSelector.userIds - The default permission user selector user ids\n\t * @property {array} defaults.category - The default permission category scope\n\t * @property {array} defaults.resourceScopes - The default permission resource scopes\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t// permissionId : 0,\n\t\t\ttype: 'permit',\n\t\t\tmode: 'read',\n\t\t\tresource: {\n\t\t\t\tid: 0,\n\t\t\t\ttype: '',\n\t\t\t\tscope: '',\n\t\t\t\tattributeScope: 0,\n\t\t\t},\n\t\t\tuserSelector: {\n\t\t\t\tall: false,\n\t\t\t\temails: [],\n\t\t\t\tgroupIds: [],\n\t\t\t\tnone: false,\n\t\t\t\tuserIds: [],\n\t\t\t},\n\t\t\tcategoryScope: [],\n\t\t\tresourceScopes: [],\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} methods - Model RPC methods\n\t * @property {array} methods.create - Create new permission\n\t * @property {array} methods.remove - Destroy permission\n\t * @property {array} methods.update - Update permission\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tcreate(opts) {\n\t\t\t\treturn ['setPermission', this.self()];\n\t\t\t},\n\t\t\tremove: ['deletePermission', 'permissionId'],\n\t\t\tupdate(opts) {\n\t\t\t\treturn ['setPermission', this.self()];\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts) {\n\t\tsuper(attrs, opts);\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(this, 'change:mode', (model, mode) => {\n\t\t\t// `attribute` resources do not have a category scope when in `read` mode\n\t\t\tif (mode === 'read' && this.getResourceType() === 'attribute') {\n\t\t\t\tthis.set('categoryScope', []);\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} type Selector type (user/group)\n\t * @param {array} ids Selector ids\n\t * @param {object} opts Options\n\t */\n\taddSelectorItems(type, ids, opts = {}) {\n\t\tif (!_.isArray(ids)) ids = [ids];\n\n\t\tconst userSelector = this.get('userSelector') || {};\n\t\tconst existingIds = userSelector[`${type}Ids`];\n\n\t\tconst newIds = _.compact(\n\t\t\tids.map((id) => (existingIds.indexOf(id) > -1 ? null : id)),\n\t\t);\n\n\t\tif (!newIds.length) return this;\n\n\t\tuserSelector[`${type}Ids`] = existingIds.concat(newIds);\n\n\t\tif (opts.silent) return this;\n\n\t\treturn this.trigger('change', this, opts)\n\t\t\t.trigger('change:userSelector', this, userSelector, opts)\n\t\t\t.trigger(`userSelector:add:${type}Ids`, this, newIds, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @return {string}\n\t */\n\tgetResourceType() {\n\t\treturn this.get('resource').type || '';\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean} Has selectors\n\t */\n\thasSelectors() {\n\t\tconst userSelector = this.get('userSelector');\n\t\treturn !(\n\t\t\t!userSelector.all &&\n\t\t\t!userSelector.groupIds.length &&\n\t\t\t!userSelector.userIds.length\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} data Data\n\t * @param {object} opts Options\n\t */\n\tparseAndSave(data, opts) {\n\t\treturn this.save(\n\t\t\t_.pick.apply(_, [data].concat(_.keys(this.getDefaults()))),\n\t\t\topts,\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} type Selector type (user/group)\n\t * @param {array} ids Selector ids\n\t * @param {object} opts Options\n\t */\n\tremoveSelectorItems(type, ids, opts = {}) {\n\t\tif (!_.isArray(ids)) ids = [ids];\n\n\t\tconst userSelector = this.get('userSelector') || {};\n\t\tconst existingIds = userSelector[`${type}Ids`];\n\n\t\tconst removedIds = _.compact(\n\t\t\tids.map((id) => {\n\t\t\t\tconst idx = existingIds.indexOf(id);\n\t\t\t\tif (idx < 0) return;\n\n\t\t\t\texistingIds.splice(idx, 1);\n\t\t\t\treturn id;\n\t\t\t}),\n\t\t);\n\n\t\tif (!removedIds.length) return;\n\n\t\tuserSelector[`${type}Ids`] = existingIds;\n\n\t\tif (opts.silent) return this;\n\n\t\treturn this.trigger('change', this, opts)\n\t\t\t.trigger('change:userSelector', this, userSelector, opts)\n\t\t\t.trigger(`userSelector:remove:${type}Ids`, this, removedIds, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {boolean} selectAll Select all\n\t * @param {object} opts Options\n\t */\n\ttoggleSelectAll(selectAll, opts = {}) {\n\t\tconst userSelector = this.get('userSelector');\n\n\t\tif (selectAll == null) selectAll = !userSelector.all;\n\n\t\tuserSelector.all = selectAll;\n\n\t\tif (opts.silent) return this;\n\n\t\treturn this.trigger('change', this, opts)\n\t\t\t.trigger('change:userSelector', this, userSelector, opts)\n\t\t\t.trigger('change:userSelector:all', this, selectAll, opts);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Permission';\n\t}\n}\n","/**\n * A model layer for making permissions play like participants in 8.12\n * @class\n */\nimport Base from './participant';\n\nexport default class PermissionParticipant extends Base {\n\t/** @override */\n\tconstructor(attrs, opts) {\n\t\t// This model does not have calls to the server\n\t\topts.rpc = false;\n\t\tsuper(attrs, opts);\n\t}\n\n\t/**\n\t * We do not save to the serve rourselves\n\t * @override\n\t */\n\tdestroy() {\n\t\t// Just remove and let the underlying permissions handle the saving\n\t\tthis.collection.remove(this.id);\n\t\treturn new $.Deferred().resolveWith(this);\n\t}\n\n\t/**\n\t * We do not save to the serve rourselves\n\t * @override\n\t * @param {object} data Data\n\t * @param {object} opts Options\n\t */\n\tparseAndSave(data, opts) {\n\t\t// Just set and let the underlying permissions handle the saving\n\t\tthis.set(data, opts);\n\n\t\treturn new $.Deferred().resolveWith(this);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'PermissionParticipant';\n\t}\n}\n","/**\n * A collection layer for making permissions play like participants in 8.12\n * @class\n */\nimport Base from './participants';\nimport Model from '../models/permissionParticipant';\n\nimport GroupsCollection from '@netx/core-user/collections/groups';\nimport UsersCollection from '@netx/core-user/collections/users';\n\nexport default class PermissionsParticipants extends Base {\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.comparator = opts.comparator || 'label';\n\t\topts.model = opts.model || Model;\n\t\t// This collection does not have calls to the server\n\t\topts.rpc = false;\n\n\t\tsuper(models, opts);\n\n\t\t// Debounced/throttled methods\n\t\tthis.groupsSynced = _.debounce(this.groupsSynced, 50);\n\t\tthis.labelsUpdated = _.debounce(this.labelsUpdated, 25);\n\t\tthis.usersSynced = _.debounce(this.usersSynced, 50);\n\n\t\t/**\n\t\t * @memberof module:permissions/collections/permissionsParticipants\n\t\t * @alias permissionsCollection\n\t\t * @type {module:permissions/collections/permissions}\n\t\t */\n\t\tthis.permissionsCollection = opts.collection;\n\n\t\t/**\n\t\t * Store group models for particpant labeling\n\t\t * @memberof module:permissions/collections/permissionsParticipants\n\t\t * @alias groups\n\t\t * @type {module:user/collections/groups}\n\t\t */\n\t\tthis.groups = new GroupsCollection();\n\n\t\t/**\n\t\t * Store user models for particpant labeling\n\t\t * @memberof module:permissions/collections/permissionsParticipants\n\t\t * @alias users\n\t\t * @type {module:user/collections/users}\n\t\t */\n\t\tthis.users = new UsersCollection();\n\n\t\t// Hey, listen!\n\t\tthis\n\t\t\t// Underlying `userSelector`\n\t\t\t.listenTo(\n\t\t\t\tthis.permissionsCollection,\n\t\t\t\t'change:userSelector:all',\n\t\t\t\tthis.userSelectorAllToggled,\n\t\t\t)\n\t\t\t.listenTo(\n\t\t\t\tthis.permissionsCollection,\n\t\t\t\t'userSelector:add:groupIds',\n\t\t\t\tthis.userSelectorAddedGroups,\n\t\t\t)\n\t\t\t.listenTo(\n\t\t\t\tthis.permissionsCollection,\n\t\t\t\t'userSelector:add:userIds',\n\t\t\t\tthis.userSelectorAddedUsers,\n\t\t\t)\n\t\t\t// Selector object collections\n\t\t\t.listenTo(this.groups, 'sync', this.groupsSynced)\n\t\t\t.listenTo(this.users, 'sync', this.usersSynced)\n\t\t\t// A permission participant's permission has changed\n\t\t\t// We need to reflect that on the underlying userSelector\n\t\t\t.listenTo(this, 'change:permission', (model, permission) => {\n\t\t\t\t// Remove participant from the old permission\n\t\t\t\tthis.removeParticipant(\n\t\t\t\t\tmodel.get('type'),\n\t\t\t\t\tmodel._previousAttributes.permission,\n\t\t\t\t\tmodel.get('id'),\n\t\t\t\t);\n\t\t\t\t// Add to the new permission\n\t\t\t\tthis.addParticipant(model.attributes);\n\t\t\t})\n\t\t\t// A permission participant has been removed\n\t\t\t// We need to reflect that on the underlying userSelector\n\t\t\t.listenTo(this, 'remove', (model, collection, opts) => {\n\t\t\t\topts = opts || {};\n\n\t\t\t\t// From places like backgrid filter...\n\t\t\t\tif (!this.permissionsCollection) return;\n\n\t\t\t\tthis.removeParticipant(\n\t\t\t\t\tmodel.get('type'),\n\t\t\t\t\tmodel.get('permission'),\n\t\t\t\t\tmodel.get('id'),\n\t\t\t\t);\n\t\t\t});\n\t}\n\n\t/**\n\t * Add participants for permission\n\t * @method\n\t * @param {module:permissions/models/permission} permission Permission\n\t */\n\taddByPermission(permission) {\n\t\tconst userSelector = permission.get('userSelector');\n\t\tconst mode = permission.get('mode');\n\t\tconst toSet = [];\n\n\t\t// I hate wild carding it... but I am not typing it all twice\n\t\t_.each(['group', 'user'], (selector) => {\n\t\t\tconst ids = userSelector[selector + 'Ids'];\n\n\t\t\t_.each(ids, (id) => {\n\t\t\t\ttoSet.push({\n\t\t\t\t\tuniqueId: selector + '-' + id,\n\t\t\t\t\tid: id,\n\t\t\t\t\tpermission: mode,\n\t\t\t\t\tpermissionId: permission.id,\n\t\t\t\t\ttype: selector,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// Fetch selector objects\n\t\t\tids.length &&\n\t\t\t\tthis[selector + 's'].getByIds(ids, {\n\t\t\t\t\tmerge: true,\n\t\t\t\t\tremove: false,\n\t\t\t\t});\n\t\t});\n\n\t\tif (userSelector.all === true) {\n\t\t\ttoSet.push({\n\t\t\t\tuniqueId: 'all',\n\t\t\t\tid: null,\n\t\t\t\ttype: 'all',\n\t\t\t\tpermission: mode,\n\t\t\t\tpermissionId: permission.id,\n\t\t\t});\n\t\t}\n\n\t\treturn this.set(toSet, {merge: true, remove: false});\n\t}\n\n\t/**\n\t * Addidng a participant will modify the underlying userSelector\n\t * @override\n\t * @param {object} participant Participant object\n\t * @param {object} opts Request options\n\t */\n\taddParticipant(participant, opts) {\n\t\t// Backgrid...\n\t\tif (!this.permissionsCollection) {\n\t\t\treturn new $.Deferred().resolveWith(this);\n\t\t}\n\n\t\tconst collection = this.permissionsCollection;\n\t\tlet permission = collection.findWhere({mode: participant.permission});\n\n\t\t// Add the permission if there is not already one for this mode\n\t\tif (!permission) {\n\t\t\tpermission = collection.addPermission({\n\t\t\t\tmode: participant.permission,\n\t\t\t});\n\t\t}\n\n\t\t// Add to the underlying userSelector\n\t\tconst type = participant.type;\n\t\tswitch (type) {\n\t\t\tcase 'user':\n\t\t\tcase 'group':\n\t\t\t\tpermission.addSelectorItems(type, parseInt(participant.id), opts);\n\t\t\t\tbreak;\n\t\t\tcase 'all':\n\t\t\t\tpermission.toggleSelectAll(true);\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Normal pariticpant code gets saved immediately\n\t\treturn new $.Deferred().resolveWith(this, [permission]);\n\t}\n\n\t/**\n\t * @method\n\t * @param {module:user/collections/groups} collection Collection\n\t */\n\tgroupsSynced(collection) {\n\t\tconst groups = this.groups;\n\t\tif (collection !== groups) return;\n\n\t\tthis.filterByType('group').each((m) => {\n\t\t\tconst group = groups.get(m.get('id'));\n\t\t\tgroup && m.set('label', group.getLabel());\n\t\t});\n\n\t\tthis.labelsUpdated();\n\t}\n\n\t/**\n\t * @method\n\t */\n\tlabelsUpdated() {\n\t\tthis.sort();\n\t}\n\n\t/**\n\t * Remove participants for permission\n\t * @method\n\t * @param {module:permissions/models/permission} permission Permission\n\t */\n\tremoveByPermission(permission) {\n\t\tconst userSelector = permission.get('userSelector');\n\t\tconst mode = permission.get('mode');\n\n\t\t_.each(['group', 'user'], (selector) => {\n\t\t\tvar ids = userSelector[selector + 'Ids'];\n\t\t\t_.each(ids, (id) => {\n\t\t\t\tthis.remove(selector + '-' + id);\n\t\t\t});\n\t\t});\n\n\t\tif (userSelector.all === true) {\n\t\t\tthis.remove('all');\n\t\t}\n\t}\n\n\t/**\n\t * Removing a participant will modify the underlying userSelector\n\t * @override\n\t * @param {string} type Selector type (user/group/all)\n\t * @param {string} mode Mode (read/write/delete)\n\t * @param {number} id Selector id (null for `all`)\n\t * @param {object} opts Options\n\t */\n\tremoveParticipant(type, mode, id, opts) {\n\t\tconst permission =\n\t\t\tthis.permissionsCollection &&\n\t\t\tthis.permissionsCollection.findWhere({mode: mode});\n\n\t\tif (!permission) return new $.Deferred().resolveWith(this);\n\n\t\tswitch (type) {\n\t\t\tcase 'user':\n\t\t\tcase 'group':\n\t\t\t\tpermission.removeSelectorItems(type, id, opts);\n\t\t\t\tbreak;\n\t\t\tcase 'all':\n\t\t\t\tpermission.toggleSelectAll(false);\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Normal pariticpant code gets saved immediately\n\t\treturn new $.Deferred().resolveWith(this, [permission]);\n\t}\n\n\t/**\n\t * The underlying userSelector has changed whether all users are selected or not\n\t * We need to reflect that here as a participant\n\t * @param {module:permissions/models/permission} Permission\n\t * @param {boolean} allSelected All selected\n\t * @param {object} opts Options\n\t */\n\tuserSelectorAllToggled(permission, allSelected, opts) {\n\t\tif (!allSelected) {\n\t\t\tthis.remove('all');\n\t\t\treturn;\n\t\t}\n\n\t\tthis.add(\n\t\t\t{\n\t\t\t\tuniqueId: 'all',\n\t\t\t\tid: null,\n\t\t\t\ttype: 'all',\n\t\t\t\tpermission: permission.get('mode'),\n\t\t\t\tpermissionId: permission.id,\n\t\t\t},\n\t\t\t{merge: true},\n\t\t);\n\t}\n\n\t/**\n\t * Groups have been added to the underlying userSelector\n\t * We need to reflect that here as a participants\n\t * @method\n\t * @param {module:permissions/models/permission} Permission\n\t * @param {array} groupIds Added group ids\n\t * @param {object} opts Options\n\t */\n\tuserSelectorAddedGroups(permission, ids, opts) {\n\t\tconst mode = permission.get('mode');\n\t\tthis.set(\n\t\t\tids.map((id) => {\n\t\t\t\treturn {\n\t\t\t\t\tuniqueId: 'group-' + id,\n\t\t\t\t\tid: id,\n\t\t\t\t\tpermission: mode,\n\t\t\t\t\tpermissionId: permission.id,\n\t\t\t\t\ttype: 'group',\n\t\t\t\t};\n\t\t\t}),\n\t\t\t{\n\t\t\t\tmerge: true,\n\t\t\t\tremove: false,\n\t\t\t},\n\t\t);\n\t\tthis.groups.getByIds(ids);\n\t}\n\n\t/**\n\t * Users have been added to the underlying userSelector\n\t * We need to reflect that here as a participants\n\t * @method\n\t * @param {module:permissions/models/permission} Permission\n\t * @param {array} ids Added user ids\n\t * @param {object} opts Options\n\t */\n\tuserSelectorAddedUsers(permission, ids, opts) {\n\t\tconst mode = permission.get('mode');\n\t\tthis.set(\n\t\t\tids.map((id) => {\n\t\t\t\treturn {\n\t\t\t\t\tuniqueId: 'user-' + id,\n\t\t\t\t\tid: id,\n\t\t\t\t\tpermission: mode,\n\t\t\t\t\tpermissionId: permission.id,\n\t\t\t\t\ttype: 'user',\n\t\t\t\t};\n\t\t\t}),\n\t\t\t{\n\t\t\t\tmerge: true,\n\t\t\t\tremove: false,\n\t\t\t},\n\t\t);\n\t\tthis.users.getByIds(ids);\n\t}\n\n\t/**\n\t * @method\n\t * @param {module:user/collections/users} collection Collection\n\t */\n\tusersSynced(collection) {\n\t\tconst users = this.users;\n\t\tif (collection !== users) return;\n\n\t\tthis.filterByType('user').each((m) => {\n\t\t\tconst user = users.get(m.get('id'));\n\t\t\tuser && m.set('label', user.getLexicographicName());\n\t\t});\n\t\tthis.labelsUpdated();\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'PermissionsParticipants';\n\t}\n}\n","/**\n * Permsissions collection\n * This collection contains all permissions for a given resource [Asset, Attribute, Attribute Set, Category, Cart, Module, Search]\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/permission';\n\nimport PagerModel from '@netx/core-app/models/pager';\nimport PermissionsParticipants from './permissionsParticipants';\n\nexport default class Permissions extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} methods - Collection RPC methods\n\t * @property {array} methods.read - Get all permissions for resource\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tread(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'getPermissionsByResource',\n\t\t\t\t\tthis.resourceName,\n\t\t\t\t\tthis.resourceId,\n\t\t\t\t\tthis.pager.getPageDTO(),\n\t\t\t\t\tthis.modeFilters,\n\t\t\t\t];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Collection parsers\n\t * @property {function} parsers.read - Parse permissions\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * Make sure we do not have duplicate modes\n\t\t\t * @function\n\t\t\t * @param {array} permissions Permissions\n\t\t\t * @param {object} opts Options\n\t\t\t */\n\t\t\tread(permissions, opts) {\n\t\t\t\tconst uniquePerms = [];\n\t\t\t\tlet groupIds = [];\n\t\t\t\tlet userIds = [];\n\n\t\t\t\t_.each(permissions, (permission) => {\n\t\t\t\t\t// No deny permissions\n\t\t\t\t\tif (permission.type === 'deny') {\n\t\t\t\t\t\tthis.toRemove.push(permission.permissionId);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet selectors = permission.userSelector;\n\n\t\t\t\t\tconst existing = _.findWhere(uniquePerms, {mode: permission.mode});\n\t\t\t\t\tif (!existing) {\n\t\t\t\t\t\tuserIds = userIds.concat(selectors.userIds);\n\t\t\t\t\t\tgroupIds = groupIds.concat(selectors.groupIds);\n\t\t\t\t\t\tuniquePerms.push(permission);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Remove the duplicate\n\t\t\t\t\tthis.toRemove.push(permission.permissionId);\n\t\t\t\t\t// Update the existing\n\t\t\t\t\tthis.toSave.push(existing.permissionId);\n\n\t\t\t\t\tconst existingSelectors = existing.userSelector;\n\n\t\t\t\t\t// Do not let a user be in multiple permission modes\n\t\t\t\t\tconst newGroupIds = _.without(\n\t\t\t\t\t\tselectors.groupIds,\n\t\t\t\t\t\t_.intersection(userIds, selectors.groupIds),\n\t\t\t\t\t);\n\t\t\t\t\tconst newUserIds = _.without(\n\t\t\t\t\t\tselectors.userIds,\n\t\t\t\t\t\t_.intersection(userIds, selectors.userIds),\n\t\t\t\t\t);\n\n\t\t\t\t\t// Merge user selectors\n\t\t\t\t\texisting.userSelector = {\n\t\t\t\t\t\tall: existingSelectors.all || selectors.all,\n\t\t\t\t\t\tgroupIds: existingSelectors.groupIds.concat(newGroupIds),\n\t\t\t\t\t\tuserIds: existingSelectors.userIds.concat(newUserIds),\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\treturn uniquePerms;\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * Paging model\n\t\t * @memberOf Netx.Collections.Users\n\t\t * @alias pager\n\t\t * @type {Netx.Models.Pager}\n\t\t * @todo We need to trigger unsaved changes warning for when paging permissions\n\t\t */\n\t\tthis.pager = new PagerModel({pageSize: 0x7fffffff}, {collection: this});\n\n\t\t/**\n\t\t * Mode filters (read/write/delete/favorite)\n\t\t * @memberOf Netx.Collections.Permissions\n\t\t * @alias modeFilters\n\t\t * @type {object}\n\t\t */\n\t\tthis.modeFilters = opts.modeFilters || null;\n\n\t\t/**\n\t\t * Resource name\n\t\t * @memberOf Netx.Collections.Permissions\n\t\t * @alias resourceName\n\t\t * @type {string}\n\t\t */\n\t\tthis.resourceName = opts.resourceName || '';\n\n\t\t/**\n\t\t * Resource id\n\t\t * @memberOf Netx.Collections.Permissions\n\t\t * @alias resourceId\n\t\t * @type {number}\n\t\t */\n\t\tthis.resourceId = opts.resourceId || null;\n\n\t\t/**\n\t\t * A layer for making permissions play like participants in 8.12\n\t\t * @memberof module:permissions/collections/permissions\n\t\t * @alias participants\n\t\t * @type {module:permissions/collections/permissionsParticipants}\n\t\t */\n\t\tthis.participants = new PermissionsParticipants([], {\n\t\t\tcollection: this,\n\t\t\tresourceId: this.resourceId,\n\t\t\tresourceName: this.resourceName,\n\t\t});\n\n\t\t/**\n\t\t * Store models that need to be created on the server\n\t\t * @memberof module:permissions/collections/permissions\n\t\t * @alias toAdd\n\t\t * @type {array}\n\t\t */\n\t\tthis.toAdd = [];\n\t\t/**\n\t\t * Store model ids that need to be updated on the server\n\t\t * @memberof module:permissions/collections/permissions\n\t\t * @alias toSave\n\t\t * @type {array}\n\t\t */\n\t\tthis.toSave = [];\n\t\t/**\n\t\t * Store model ids that need to be destroyed on the server\n\t\t * @memberof module:permissions/collections/permissions\n\t\t * @alias toRemove\n\t\t * @type {array}\n\t\t */\n\t\tthis.toRemove = [];\n\n\t\t// Hey, listen!\n\t\t// For making permissions play like participants in 8.12\n\t\tthis.listenTo(this, 'request:read', (collection, xhr, opts) => {\n\t\t\t// Reset\n\t\t\tthis.stopListening(this, 'add remove change sync');\n\t\t\tthis.participants.reset([]);\n\n\t\t\tthis.listenTo(this, 'sync', (collection) => {\n\t\t\t\t// Could be an underlying model\n\t\t\t\tif (collection !== this) return;\n\n\t\t\t\t// Add existing records\n\t\t\t\tthis.each(this.participants.addByPermission, this.participants);\n\n\t\t\t\t// Keep track additions, removals and changes\n\t\t\t\tthis.listenTo(this, 'add', (model, collection) => {\n\t\t\t\t\t// If we do not already have and id, we need to be created on the server\n\t\t\t\t\t!model.id && this.toAdd.push(model);\n\t\t\t\t})\n\t\t\t\t\t.listenTo(this, 'remove', (model, collection) => {\n\t\t\t\t\t\tlet idx;\n\t\t\t\t\t\t// If we were new and removed before ever being saved,\n\t\t\t\t\t\t// we no longer need to be created on the server\n\t\t\t\t\t\tif (!model.id) {\n\t\t\t\t\t\t\tidx = this.toAdd.indexOf(model);\n\t\t\t\t\t\t\treturn idx > -1 && this.toAdd.splice(idx, 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tidx = this.toSave.indexOf(model.id);\n\t\t\t\t\t\tidx > -1 && this.toSave.splice(idx, 1);\n\t\t\t\t\t\tthis.toRemove.push(model.id);\n\t\t\t\t\t})\n\t\t\t\t\t.listenTo(this, 'change', (model) => {\n\t\t\t\t\t\t// If the model does not have an id then we have not been created\n\t\t\t\t\t\t// on the server yet and do not need saving\n\t\t\t\t\t\tif (!model.id) return;\n\t\t\t\t\t\tthis.toSave.indexOf(model.id) < 0 && this.toSave.push(model.id);\n\t\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Add a new default permission for this resource\n\t * The permission is not yet saved - just added to the collection\n\t * @method\n\t * @param {object} attrs Attributes\n\t * @param {object} opts Options\n\t */\n\taddPermission(attrs = {}, opts = {}) {\n\t\treturn this.add(\n\t\t\t_.extend(attrs, {\n\t\t\t\tresource: {\n\t\t\t\t\tid: this.resourceId,\n\t\t\t\t\ttype: this.resourceName,\n\t\t\t\t},\n\t\t\t}),\n\t\t\topts,\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Options\n\t */\n\tsave(opts = {}) {\n\t\tlet toRemove = this.toRemove;\n\t\tlet toAdd = this.toAdd;\n\t\tlet toSave = this.toSave;\n\n\t\t// Part of the particpants hack for this collection\n\t\t// We will trigger a sync when done\n\t\tthis.stopListening(this, 'add remove change sync');\n\n\t\t// All permissions with empty userSelectors will be set for removal\n\t\tthis.forEach((perm) => {\n\t\t\tif (perm.hasSelectors()) return;\n\t\t\t!_.contains(toRemove, perm.id) && toRemove.push(perm.id);\n\t\t});\n\n\t\t// Remove\n\t\tconst removePromises = _.compact(\n\t\t\t_.map(toRemove, (id) => {\n\t\t\t\tconst model = this.get(id) || new this.model({permissionId: id});\n\t\t\t\treturn model.destroy(_.extend({wait: true}, opts));\n\t\t\t}),\n\t\t);\n\n\t\t// Create\n\t\tconst addPromises = _.compact(\n\t\t\t_.map(toAdd, (model) => {\n\t\t\t\t// We will not be adding it if there are no selectors\n\t\t\t\tif (!model.hasSelectors() || model.id) return;\n\t\t\t\treturn model.save(opts);\n\t\t\t}),\n\t\t);\n\n\t\t// Update\n\t\tconst savePromises = _.compact(\n\t\t\t_.map(toSave, (id) => {\n\t\t\t\t// We will not be updating it if it was removed\n\t\t\t\tif (_.contains(toRemove, id)) return;\n\t\t\t\tconst model = this.get(id);\n\t\t\t\treturn model && model.save(opts);\n\t\t\t}),\n\t\t);\n\n\t\tthis.toRemove = [];\n\t\tthis.toAdd = [];\n\t\tthis.toSave = [];\n\n\t\tconst allPromises = removePromises.concat(addPromises, savePromises);\n\n\t\tconst p = this.when.apply(this, allPromises);\n\t\tp.then(() => {\n\t\t\t!opts.silent && allPromises.length && this.trigger('sync', this, opts);\n\t\t});\n\n\t\treturn p;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Permissions';\n\t}\n}\n","/**\n * Permission resource model\n * This model does not have defaults as it is intended to be extended for functionality only\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport PermissionsCollection from '@netx/core-permissions/collections/permissions';\nimport {resourceLabels} from '../properties/permissions';\n\nexport default class PermissionResource extends Base {\n\t/**\n\t * Not all models that extend us use the same attribute for their title\n\t * Things like attributes (which do not extend Netx.Models.SharedResource) use `name`\n\t * @type {string}\n\t */\n\tget titleAttribute() {\n\t\treturn 'title';\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * Resource type name\n\t\t * Must be set by extending model or at initialize\n\t\t * @type {string}\n\t\t */\n\t\tthis.resourceName = opts.resourceName;\n\t\t// Need a `resourceName` for any permission fetching to work\n\t\tif (this.resourceName == null) {\n\t\t\tthrow new Error('Permission resource instatiated without `resourceName`');\n\t\t}\n\n\t\t/**\n\t\t * @memberof module:share/model/sharedResource\n\t\t * @alias participants\n\t\t * @type {module:permissions/collections/permissions}\n\t\t */\n\t\tthis.permissions = new PermissionsCollection([], {\n\t\t\tresourceName: this.resourceName,\n\t\t\tresourceId: this.id,\n\t\t});\n\t\tthis.addSubCollection(this.permissions);\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(this, 'change:id', function (model, id) {\n\t\t\tthis.permissions.resourceId = this.id;\n\t\t}).listenTo(this.permissions, 'sync', function (permissions) {\n\t\t\tif (permissions !== this.permissions) return;\n\t\t\t// Defer so that all other sync related logic has run\n\t\t\t_.defer(this.permissionsUpdated.bind(this));\n\t\t});\n\t}\n\n\t/**\n\t * Get applicable permissions\n\t * @method\n\t * @return {module:permissions/collections/permissions}\n\t */\n\tgetPermissions() {\n\t\tif (\n\t\t\t!this.permissionsEnabled() ||\n\t\t\tthis.isNew()\n\t\t\t// Just resolve so the normal workflow can occur\n\t\t)\n\t\t\treturn new $.Deferred().resolve();\n\n\t\treturn this.permissions.fetch();\n\t}\n\n\t/**\n\t * @method\n\t * @return {string}\n\t */\n\tgetResourceLabel() {\n\t\treturn resourceLabels[this.resourceName] || '';\n\t}\n\n\t/**\n\t * @method\n\t * @return {string}\n\t */\n\tgetTitle() {\n\t\treturn this.get(this.titleAttribute) || '';\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean}\n\t */\n\thasParticipants() {\n\t\treturn this.permissions.participants.length !== 0;\n\t}\n\n\t/**\n\t * Are permissions for this resource enabled\n\t * Override this method as needed - default return is `true`\n\t * @override\n\t * @return {boolean}\n\t */\n\tpermissionsEnabled() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @method\n\t */\n\tpermissionsUpdated() {\n\t\tthis.set('hasPermissions', this.hasParticipants());\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'PermissionResource';\n\t}\n}\n","import {i18n, Locales} from '@netx/core-next/locales';\n\nimport {PERMISSION_MATRIX_NAMES} from '../constants';\n\n// Names for the six bits on a permissionsMatrix, in the order they appear on asset & category models:\nexport const matrixNames = PERMISSION_MATRIX_NAMES;\n\nexport const AssetPermissionTypeLabel = Locales((i18n) => ({\n\tALL: i18n('i18n.acl-ALL'),\n\tREAD: i18n('i18n.acl-READ'),\n\tDOWNLOAD: i18n('i18n.acl-DOWNLOAD'),\n\tADD: i18n('i18n.acl-ADD'),\n\tMODIFY: i18n('i18n.acl-MODIFY'),\n\tDELETE: i18n('i18n.acl-DELETE'),\n}));\n\n// These *Types data structures are optimized for creating OPTION lists in forms. Their order must be preserved.\nexport const permissionTypes = [\n\t{\n\t\tkey: 'ALL',\n\t\tlabel: i18n.t('i18n.acl-ALL'),\n\t\tvalue: 9,\n\t},\n\t{\n\t\tkey: 'READ',\n\t\tlabel: i18n.t('i18n.acl-READ'),\n\t\tvalue: 1,\n\t},\n\t{\n\t\tkey: 'DOWNLOAD',\n\t\tlabel: i18n.t('i18n.acl-DOWNLOAD'),\n\t\tvalue: 2,\n\t},\n\t{\n\t\tkey: 'ADD',\n\t\tlabel: i18n.t('i18n.acl-ADD'),\n\t\tvalue: 3,\n\t},\n\t{\n\t\tkey: 'MODIFY',\n\t\tlabel: i18n.t('i18n.acl-MODIFY'),\n\t\tvalue: 5,\n\t},\n\t{\n\t\tkey: 'DELETE',\n\t\tlabel: i18n.t('i18n.acl-DELETE'),\n\t\tvalue: 7,\n\t},\n];\n\nexport const AssetPermissionPrincipalLabel = Locales((i18n) => ({\n\tANY: i18n('i18n.acl-ANY'),\n\tGROUP: i18n('i18n.acl-GROUP'),\n\tUSER: i18n('i18n.acl-USER'),\n}));\n\nexport const principalTypes = [\n\t{\n\t\tkey: 'ANY',\n\t\tlabel: i18n.t('i18n.acl-ANY'),\n\t\tvalue: 0,\n\t},\n\t{\n\t\tkey: 'GROUP',\n\t\tlabel: i18n.t('i18n.acl-GROUP'),\n\t\tvalue: 1,\n\t},\n\t{\n\t\tkey: 'USER',\n\t\tlabel: i18n.t('i18n.acl-USER'),\n\t\tvalue: 2,\n\t},\n];\n\nexport const AssetPermissionTargetLabel = Locales((i18n) => ({\n\tcategory: i18n('i18n.category'),\n\tasset: i18n('i18n.asset'),\n}));\n\nexport const targetTypes = [\n\t{\n\t\tkey: 'category',\n\t\tlabel: i18n.t('i18n.category'),\n\t\tvalue: 0,\n\t},\n\t{\n\t\tkey: 'asset',\n\t\tlabel: i18n.t('i18n.asset'),\n\t\tvalue: 1,\n\t},\n];\n\nexport const AssetPermissionPermitTypeLabel = Locales((i18n) => ({\n\tPERMIT: i18n('i18n.acl-PERMIT'),\n\tDENY: i18n('i18n.acl-DENY'),\n}));\n\nexport const typeTypes = [\n\t{\n\t\tkey: 'PERMIT',\n\t\tlabel: i18n.t('i18n.acl-PERMIT'),\n\t\tvalue: 1,\n\t},\n\t{\n\t\tkey: 'DENY',\n\t\tlabel: i18n.t('i18n.acl-DENY'),\n\t\tvalue: 0,\n\t},\n];\n\nconst properties = {\n\tmatrixNames,\n\tpermissionIds: {},\n\tpermissionLabels: {},\n\tpermissionTypes,\n\tprincipalIds: {},\n\tprincipalLabels: {},\n\tprincipalTypes,\n\ttargetIds: {},\n\ttargetLabels: {},\n\ttargetTypes,\n\ttypeIds: {},\n\ttypeLabels: {},\n\ttypeTypes,\n};\n\n// Parse the *Types data structures into *Ids data structures optimized for looking up ID by label or vise versa:\n(['permission', 'principal', 'target', 'type'] as const).forEach((thing) => {\n\tconst obj: Record<string, number> = {};\n\tconst obj2: Record<number, string> = {};\n\tObject.entries(properties[`${thing}Types`]).forEach(([, entry]) => {\n\t\tobj[entry.key] = entry.value;\n\t\tobj2[entry.value] = entry.label;\n\t});\n\tproperties[`${thing}Ids`] = obj;\n\tproperties[`${thing}Labels`] = obj2;\n});\n\nexport const targetIds = properties.targetIds;\nexport const targetLabels = properties.targetLabels;\nexport const permissionIds = properties.permissionIds;\nexport const permissionLabels = properties.permissionLabels;\nexport const principalIds = properties.principalIds;\nexport const principalLabels = properties.principalLabels;\nexport const typeIds = properties.typeIds;\nexport const typeLabels = properties.typeLabels;\n\nexport default properties;\n","// Attribute specific permission props\nimport {Locales} from '@netx/core-next/locales';\n\n// TODO: Explain why - I cannot remember why - is it that only admins can administer the attibute templates themeselves?\nexport const attribute = {\n\tmodes: ['read', 'write'],\n};\n\nexport const modes = Locales((i18n) => ({\n\tread: i18n('i18n.read'),\n\twrite: i18n('i18n.write'),\n\tdelete: i18n('i18n.delete'),\n}));\n\nexport const specialModes = Locales((i18n) => ({\n\tread: i18n('i18n.viewer'),\n\twrite: i18n('i18n.contributor'),\n\tdelete: i18n('i18n.manager'),\n}));\n\nexport const resourceLabels = Locales((i18n) => ({\n\tattribute: i18n('i18n.attribute'),\n\tattributeSet: i18n('i18n.attributeSet'),\n\tsavedCart: i18n('i18n.savedCart'),\n\tsavedSearch: i18n('i18n.savedSearch'),\n}));\n\nexport const targets = Locales((i18n) => ({\n\tall: i18n('i18n.all'),\n\tgroup: i18n('i18n.group'),\n\tuser: i18n('i18n.user'),\n}));\n\nexport default {\n\tattribute: attribute,\n\tmodes: modes,\n\tresourceLabels: resourceLabels,\n\tspecialModes: specialModes,\n\ttargets: targets,\n};\n","import {z} from 'zod';\n\nexport const PermissionMatrixEntrySchema = z.union([\n\tz.literal(1),\n\tz.literal(0),\n]);\n\n/** `['read', 'download', 'add', 'modify', 'delete', 'all']` (represented by 1s and 0s) */\nexport const PermissionMatrixSchema = z.tuple([\n\t/** read */\n\tPermissionMatrixEntrySchema,\n\t/** download */\n\tPermissionMatrixEntrySchema,\n\t/** add */\n\tPermissionMatrixEntrySchema,\n\t/** modify */\n\tPermissionMatrixEntrySchema,\n\t/** delete */\n\tPermissionMatrixEntrySchema,\n\t/** all */\n\tPermissionMatrixEntrySchema,\n]);\n\nexport type IPermissionMatrixEntry = z.infer<\n\ttypeof PermissionMatrixEntrySchema\n>;\n\n/** `['read', 'download', 'add', 'modify', 'delete', 'all']` (represented by 1s and 0s) */\nexport type IPermissionMatrix = z.infer<typeof PermissionMatrixSchema>;\n","import type {PermissionMatrix} from '../types';\nimport {PERMISSION_MATRIX_NAMES, PermissionMatrixName} from '../constants';\n\nexport {PermissionMatrixName} from '../constants';\n\nexport const allows = (\n\tpermissionMatrix: PermissionMatrix,\n\tperm?: PermissionMatrixName | null,\n) => {\n\tif (perm == null) return false;\n\tconst matrixIndex = PERMISSION_MATRIX_NAMES.indexOf(perm);\n\treturn permissionMatrix[matrixIndex] === 1;\n};\n\nexport default allows;\n","/**\n * @classdesc\n * Netx.Collections.SearchRules contains all the data to make up a DAM Search Bean, the argument to various API calls including searchAssetListObjects().\n * It is used heavily by Netx.Collections.Assets and its many subclasses, to define what assets should be fetched.\n * Its models describe a set of up to ten individual searches; multiple searches are combined\n * logically with \"AND\", \"OR\" or \"NOT\". The collection also has eight search parameters, stored as non-Backbone\n * object properties. which affect the search as a whole.\n * Options for all of these fields are defined more completely in the object search/properties/search.\n *\n * NOTE: The search parameter properties on the collection are manipulated via standard JS syntax, not via backbone's get() and set(), because this is a Collection, not a Model.\n *\n * @param {string} sortField Name of the field to sort results by.\n * @param {int} sortOrder 0 == ascending order, 1 == descending order.\n * @param {int} matchCriteria How to logically combine multiple type searches: 0 is \"AND\", 1 is \"OR\", 2 is \"NOT\".\n * @param {string} saveSearch If this string is not empty, the search will be saved under this name.\n * @param {int} notifyType If search is saved, how should the user be notified of updates to the search set?\n * @param {boolean} ignoreStat Should this search be recorded against asset statistics? true = no, false = yes.\n * @param {int} startPosition Of the complete ordered set of search results, return results starting at this position.\n * @param {int} maxItems Of the complete ordered set of search results, return this many items or fewer.\n *\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/searchRule';\n\nimport Netx from '@netx/core/bootstrap';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\n\nimport base64 from 'core-libs/base64';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\n\nimport {\n\tfileFormatFamilies,\n\tfileTypes,\n\tsearchProperties,\n} from '../properties/search';\n\nexport default class SearchRules extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Methods for this model\n\t * @type {object}\n\t * @property {object} methods - Methods for this model\n\t * @property {method} methods.read - Get asset search bean for saved search\n\t * @property {method} methods.fetchFileTypes - We need to get this list of file types from the server at start up, for the use of Advanced Search, and put it in search/properties/search\n\t * @property {method} methods.fetchFormatFamilies - We need to get this list of file format families from the server at start up, for the use of Advanced Search, and put it in search/properties/search\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * Fetch\n\t\t\t * @method\n\t\t\t */\n\t\t\tread: ['getAssetSearchBeanForSavedSearch', 'savedSearchId'],\n\t\t\t// We need to get this list of file types from the server at start up, for the use of Advanced Search, and put it in search/properties/search.\n\t\t\t// Rather than create a File Types collection just for that, I'm adding a method call here; the results are filed away by the parser, below.\n\t\t\t/**\n\t\t\t * Get file types\n\t\t\t * @method\n\t\t\t */\n\t\t\tfetchFileTypes(opts) {\n\t\t\t\treturn ['getChoiceList', 'file_type_list'];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Get format families\n\t\t\t * @method\n\t\t\t */\n\t\t\tfetchFormatFamilies(opts) {\n\t\t\t\treturn ['getChoiceList', 'fileFormatFamilies'];\n\t\t\t},\n\t\t};\n\t}\n\n\t/*\n\t * Parse the searchBean output of getAssetSearchBeanForSavedSearch into this object.\n\t * @method\n\t * @param {object} data Search rules data\n\t * @return {object} PArsed search rules\n\t */\n\tparse(data) {\n\t\t// if the data looks right:\n\t\tif (_.has(data, 'element1Type')) {\n\t\t\tconst rxElement = /^element(\\d+)(.*)/;\n\t\t\tconst searchRules = [];\n\n\t\t\tfor (let x = 0; x < 10; x++) {\n\t\t\t\tsearchRules.push({});\n\t\t\t}\n\n\t\t\t_.each(data, (v, k, l) => {\n\t\t\t\tconst match = k.match(rxElement);\n\t\t\t\tif (match) {\n\t\t\t\t\tconst elIdx = match[1];\n\t\t\t\t\tconst elPart = match[2];\n\t\t\t\t\tconst idx = parseInt(elIdx) - 1;\n\n\t\t\t\t\t_.extend(searchRules[idx], {\n\t\t\t\t\t\t[`element${elPart}`]: v,\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// found a search property\n\t\t\t\t\tif (searchProperties.indexOf(k) > -1) {\n\t\t\t\t\t\tthis[k] = v;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`unknown search element '${k}' from getAssetSearchBeanForSavedSearch()`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// return just the rules that mean something\n\t\t\treturn _.filter(searchRules, (r) => {\n\t\t\t\treturn r.elementType > 0;\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Parsers for this model\n\t * @type {object}\n\t * @property {object} parsers - Parsers for this model\n\t * @property {object} parsers.fetchFileTypes - File types fetched\n\t * @property {object} parsers.fetchFormatFamilies - File format families fetched\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * File types fetched\n\t\t\t * @method\n\t\t\t * @param {mixed} data Cart asset data\n\t\t\t */\n\t\t\tfetchFileTypes(data) {\n\t\t\t\t_.each(data, (ft) => {\n\t\t\t\t\t// Filter out null strings and all-digit strings -- they are bad data introduced by DAM-1911; that bug is fixed but the bad data may persist.\n\t\t\t\t\tif (ft.label.length > 0 && !ft.label.match(/^\\d+$/)) {\n\t\t\t\t\t\tfileTypes[ft.label] = ft.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t/**\n\t\t\t * File format families fetched\n\t\t\t * @method\n\t\t\t * @param {mixed} data Cart asset data\n\t\t\t */\n\t\t\tfetchFormatFamilies(data) {\n\t\t\t\t_.each(data, (ff) => {\n\t\t\t\t\tif (ff.label.length > 0 && !ff.label.match(/^\\d+$/)) {\n\t\t\t\t\t\tfileFormatFamilies[ff.label] = ff.value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * If a SearchRules object is initialized without any arguments, it will contain a single default SearchRule.\n\t * If it is passed an array of N objects containing SearchRule attributes, N SearchRule models will be added.\n\t * with those attributes set and all other attributes default. An optional second argument can be\n\t * an object specifying any subset of the eight general search parameters.\n\t * @override\n\t */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.matchCriteria = 0;\n\n\t\t/**\n\t\t * Max items to fetch (0 is all)\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.maxItems = 0;\n\n\t\t/**\n\t\t * sALO string map\n\t\t * @memberOf Netx.Collections.SearchRules\n\t\t * @property {object} sALOstrMap - sALO string map\n\t\t * @property {string} sALOstrMap.a - Sort field\n\t\t * @property {string} sALOstrMap.b - Sort order\n\t\t * @property {string} sALOstrMap.c - Match criteria\n\t\t * @property {string} sALOstrMap.d - Element types\n\t\t * @property {string} sALOstrMap.e - Element sub type 1\n\t\t * @property {string} sALOstrMap.f - Element sub type 2\n\t\t * @property {string} sALOstrMap.g - Element value 1\n\t\t * @property {string} sALOstrMap.h - Element value 2\n\t\t * @property {string} sALOstrMap.i - Element value 3\n\t\t * @property {string} sALOstrMap.j - Save search\n\t\t * @property {string} sALOstrMap.k - Notify type\n\t\t * @property {string} sALOstrMap.l - Ignore stat\n\t\t * @property {string} sALOstrMap.m - Start position\n\t\t * @property {string} sALOstrMap.n - Max items\n\t\t */\n\t\tthis.sALOstrMap = opts.sALOstrMap || {\n\t\t\ta: 'sortField',\n\t\t\tb: 'sortOrder',\n\t\t\tc: 'matchCriteria',\n\t\t\td: 'elementTypes',\n\t\t\te: 'elementSubType1s',\n\t\t\tf: 'elementSubType2s',\n\t\t\tg: 'elementValue1s',\n\t\t\th: 'elementValue2s',\n\t\t\ti: 'elementValue3s',\n\t\t\tj: 'saveSearch',\n\t\t\tk: 'notifyType',\n\t\t\tl: 'ignoreStat',\n\t\t\tm: 'startPosition',\n\t\t\tn: 'maxItems',\n\t\t};\n\n\t\t/**\n\t\t * For fetching a saved search from the DAM\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.savedSearchId = 0;\n\n\t\t/**\n\t\t * The field to sort by\n\t\t * @type {string}\n\t\t * @default\n\t\t */\n\t\tthis.sortField = 'file';\n\n\t\t/**\n\t\t * The sort order\n\t\t * Ascending: 0, Descending: 1\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.sortOrder = 0;\n\n\t\t/**\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.startPosition = 1;\n\n\t\t// Set non-rule defaults.\n\t\tthis.initProperties(opts);\n\n\t\t// If we are initialized without models, insert a default rule.\n\t\tif (!models) {\n\t\t\tthis.add(new Model());\n\t\t}\n\t\t// else {\n\t\t// \t// TODO: This seems to be necessary, but I don't get why. The parent constructor was handed 'objects' and should have\n\t\t// \t// turned it into objects, but it didn't. Need to figure this out ... -m-\n\t\t// \tthis.set( objects );\n\t\t// }\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} option Option name\n\t * @param {mixed} value Option value\n\t * @param {object} opts Options\n\t */\n\tchangeOption(option, value, opts = {}) {\n\t\tswitch (option) {\n\t\t\tcase 'matchCriteria':\n\t\t\t\tvalue = parseInt(value);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst oldValue = this[option];\n\t\tthis[option] = value;\n\n\t\tif (opts.silent && oldValue !== value) {\n\t\t\tthis.trigger('change:' + option, this, value, opts).trigger(\n\t\t\t\t'change:option',\n\t\t\t\tthis,\n\t\t\t\toption,\n\t\t\t\tvalue,\n\t\t\t\topts,\n\t\t\t);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Aggregate the various arguments used by our search API calls\n\t * (such as searchAssetListObjects(), aka \"sALO\"),\n\t * into one handy object.\n\t *\n\t * @method\n\t * @param {boolean} ignoreQuirks Ignore quirks\n\t * @return {object} Asset search object\n\t */\n\tcreateSearchObject(ignoreQuirks = false) {\n\t\tlet elementTypes = [];\n\t\tlet elementSubType1s = [];\n\t\tlet elementSubType2s = [];\n\t\tlet elementValue1s = [];\n\t\tlet elementValue2s = [];\n\t\tlet elementValue3s = [];\n\n\t\tthis.forEach((model) => {\n\t\t\tconst searchObject = model.getSearchObject(ignoreQuirks);\n\t\t\tconst values = searchObject.elementValue1;\n\n\t\t\t// Either we care not about the quirks of our sALO params\n\t\t\t// or we do not have any multiple value search rules\n\t\t\tif (ignoreQuirks || !_.isArray(values)) {\n\t\t\t\telementTypes.push(searchObject.elementType);\n\t\t\t\telementSubType1s.push(searchObject.elementSubType1);\n\t\t\t\telementSubType2s.push(searchObject.elementSubType2);\n\t\t\t\telementValue1s.push(searchObject.elementValue1);\n\t\t\t\telementValue2s.push(searchObject.elementValue2);\n\t\t\t\telementValue3s.push(searchObject.elementValue3);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Support for multiple value search rules\n\t\t\t// We must create a new rule in the sALO params for each\n\t\t\t// value passed on a rule\n\t\t\tconst {\n\t\t\t\telementType,\n\t\t\t\telementSubType1,\n\t\t\t\telementSubType2,\n\t\t\t\telementValue2,\n\t\t\t\telementValue3,\n\t\t\t} = searchObject;\n\t\t\tvalues.forEach((value) => {\n\t\t\t\telementTypes.push(elementType);\n\t\t\t\telementSubType1s.push(elementSubType1);\n\t\t\t\telementSubType2s.push(elementSubType2);\n\t\t\t\telementValue1s.push(value);\n\t\t\t\telementValue2s.push(elementValue2);\n\t\t\t\telementValue3s.push(elementValue3);\n\t\t\t});\n\t\t});\n\n\t\treturn {\n\t\t\tsortField: this.sortField,\n\t\t\tsortOrder: this.sortOrder,\n\t\t\tmatchCriteria: this.matchCriteria,\n\t\t\telementTypes,\n\t\t\telementSubType1s,\n\t\t\telementSubType2s,\n\t\t\telementValue1s,\n\t\t\telementValue2s,\n\t\t\telementValue3s,\n\t\t\tstartPosition: this.startPosition,\n\t\t\tmaxItems: this.maxItems,\n\t\t};\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Request options\n\t */\n\tfetchSearchCriteria(opts) {\n\t\treturn $.when(this.fetchFileTypes(opts), this.fetchFormatFamilies(opts));\n\t}\n\n\t/**\n\t * Intialize the Asset Search Object Properties\n\t * @method\n\t * @param {object} opts Properties to set\n\t */\n\tinitProperties(opts = {}) {\n\t\tconst userPrefKeys = this.userPrefKeys || {};\n\n\t\tlet preferredSortOrder = parseInt(getPreference(userPrefKeys.sortOrder));\n\t\tif (isNaN(preferredSortOrder)) {\n\t\t\tpreferredSortOrder = this.sortOrder;\n\t\t}\n\n\t\t_.extend(this, {\n\t\t\t// Asset attribute to sort on\n\t\t\tsortField:\n\t\t\t\topts.sortField ||\n\t\t\t\tgetPreference(userPrefKeys.sortField) ||\n\t\t\t\tthis.sortField,\n\t\t\t// Ascending: 0, Descending: 1\n\t\t\tsortOrder: opts.sortOrder != null ? opts.sortOrder : preferredSortOrder,\n\t\t\t// Match ALL: 0, Match ANY: 1\n\t\t\tmatchCriteria:\n\t\t\t\topts.matchCriteria != null ? opts.matchCriteria : this.matchCriteria,\n\t\t\t// First asset in query to fetch\n\t\t\tstartPosition:\n\t\t\t\topts.startPosition != null ? opts.startPosition : this.startPosition,\n\t\t\t// Maximum number of items to return (zero == all items?)\n\t\t\tmaxItems: opts.maxItems != null ? opts.maxItems : this.maxItems,\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Non-sALO replacement for above strTosALO\n\t * @method\n\t * @param {string} str Base64 encoded search string\n\t */\n\tloadFromStr(str) {\n\t\tlet small = '';\n\t\ttry {\n\t\t\tsmall = JSON.parse(base64.decode(str));\n\t\t} catch (e) {\n\t\t\t// a bogus URL did not decode into a legit object.\n\t\t\tdispatcher.trigger('app:alert', 'Search not found.', 'Info');\n\t\t\treturn;\n\t\t}\n\n\t\t// clear out any existing rules.\n\t\tthis.reset();\n\t\tthis.initProperties();\n\n\t\t_.each(this.sALOstrMap, (realName, smallName) => {\n\t\t\tif (small[smallName] == null) return;\n\n\t\t\t// the elements of a search object are arrays with pluralized names 'element*s';\n\t\t\t// break those into individual searchRule properties, which are singular\n\t\t\tif (/^element.*s$/.test(realName)) {\n\t\t\t\trealName = realName.replace(/s$/, '');\n\t\t\t\t_.each(small[smallName], (val, idx) => {\n\t\t\t\t\tif (!this.at(idx)) {\n\t\t\t\t\t\tthis.add(new this.model());\n\t\t\t\t\t}\n\t\t\t\t\tthis.at(idx).set(realName, val);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// unpack searchRules properties too:\n\t\t\t\tthis[realName] = small[smallName];\n\t\t\t}\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SearchRules';\n\t}\n}\n","/**\n * @class\n */\nimport {AttributeType} from '@netx/core-attribute/constants';\nimport {assetAttributes, getAttribute} from '@netx/core-attribute/singletons';\nimport {dateSubTypes1_default} from '../properties/search';\nimport Base from './searchRule';\n\nexport default class SearchRule_Asset extends Base {\n\t/** @type {module/@netx/core-asset/models/attribute} */\n\tget attributeTemplate() {\n\t\tif (!this.searchTargetIsMetadata()) return undefined;\n\n\t\treturn this.assetAttributes.findWhere({\n\t\t\tname: this.get('elementValue2'),\n\t\t});\n\t}\n\n\t/** @type {boolean} */\n\tget isRange() {\n\t\tconst elementType = this.get('elementType');\n\t\treturn (\n\t\t\t(elementType === 3 && this.get('elementSubType1') === 6) ||\n\t\t\t(elementType === 4 && this.get('elementSubType2') === 6)\n\t\t);\n\t}\n\n\t/** @type {boolean} */\n\tget isRangeCompatible() {\n\t\tconst attrName = this.get('elementValue2');\n\t\tconst attr = this.assetAttributes.findWhere({name: attrName});\n\t\tif (!attr) return false;\n\n\t\tconst type = attr.get('type');\n\t\treturn [AttributeType.DATE, AttributeType.NUMBER].includes(type);\n\t}\n\n\t/**\n\t * What search type are we dealing with\n\t * @type {string}\n\t * @default\n\t */\n\tget searchApi() {\n\t\treturn 'assets';\n\t}\n\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\t...super.defaults,\n\t\t\telementType: 1, // KEYWORD\n\t\t\telementSubType1: 4, // AND matching of keywords\n\t\t\telementSubType2: 0,\n\t\t\telementValue1: '',\n\t\t\telementValue2: '',\n\t\t\telementValue3: '',\n\n\t\t\t// Client attrs\n\t\t\telementValue1Label: '',\n\t\t};\n\t}\n\n\t/** @type {array} */\n\tget clientAttrs() {\n\t\treturn ['elementValue1Label'];\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\tthis.assetAttributes = assetAttributes;\n\n\t\t// Hey, listen\n\t\tthis.on('change:elementValue1', (self, elementValue1) => {\n\t\t\tif (elementValue1 !== '') return;\n\t\t\tthis.set('elementValue1Label', '');\n\t\t});\n\t}\n\n\t/** @override */\n\tgetSearchObject(ignoreQuirks) {\n\t\tconst searchObject = this.self();\n\t\tif (ignoreQuirks) return searchObject;\n\n\t\tconst elementType = searchObject.elementType;\n\n\t\t// Attribute\n\t\tif (elementType === 3) {\n\t\t\t// assetId -> objectId ¯\\_(ツ)_/¯\n\t\t\tif (searchObject.elementValue2 === 'assetId') {\n\t\t\t\tsearchObject.elementValue2 = 'objectId';\n\t\t\t}\n\t\t}\n\t\t// DAM-16349 - in-between date search rules needs adjusting (and refactoring)\n\t\t// so it does not need the below date hacking\n\t\t// (even grosser) Do not apply this hack if it was a system defined date\n\t\telse if (\n\t\t\telementType === 4 &&\n\t\t\tsearchObject.elementSubType2 === 6 &&\n\t\t\t// Not the system defined ones\n\t\t\t[0, 1, 3].includes(searchObject.elementSubType1) &&\n\t\t\tsearchObject.elementValue3 !== ''\n\t\t) {\n\t\t\tsearchObject.elementValue2 = searchObject.elementValue3;\n\t\t\tsearchObject.elementValue3 = '';\n\t\t}\n\t\t// All other dates\n\t\telse if (elementType === 4) {\n\t\t\t// DEVNOTE: obscure corner case bug here.\n\t\t\t// .. then it's an attribute Date search.\n\t\t\t// In the UI, Date attributes automagically show up on the 'date' search type UI, and have subtype ids other than the standard set of them.\n\t\t\t// But these searches are encoded differently.\n\t\t\t// In order for this search to work, elementSubType1 can not reference the option in the dropdown but needs to use the value of 2 to signify that we want to use a\n\t\t\t// date attribute - and the value we have chosen via elementSubType1 becomes the value for elementValue3\n\t\t\t// Therefore: change elementSubType1 to 2 and elementValue3 to the name of the attr, which is the elementSubType1 value\n\t\t\tconst elementSubType1 = searchObject.elementSubType1;\n\t\t\tif (\n\t\t\t\t!dateSubTypes1_default.find((item) => item.val === elementSubType1) &&\n\t\t\t\tsearchObject.elementSubType1 !== 2\n\t\t\t) {\n\t\t\t\tsearchObject.elementValue2 = searchObject.elementValue3;\n\t\t\t\tsearchObject.elementValue3 = elementSubType1;\n\t\t\t\tsearchObject.elementSubType1 = 2;\n\t\t\t}\n\t\t}\n\t\t// Checkouts - if all is selected, java seems to want user id to be 0\n\t\tif (elementType === 13 && searchObject.elementSubType1 === 0) {\n\t\t\tsearchObject.elementValue1 = 0;\n\t\t}\n\n\t\treturn searchObject;\n\t}\n\n\t/**\n\t * Is this rule searching on dynamic metadata?\n\t * (as opposed to system metadata or any other type of search.)\n\t * @method\n\t * @return {boolean}\n\t */\n\tsearchTargetIsMetadata() {\n\t\treturn (\n\t\t\tthis.get('elementType') == 3 &&\n\t\t\t!_.isUndefined(getAttribute(null, this.get('elementValue2')))\n\t\t);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SearchRule_Asset';\n\t}\n}\n","/**\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport {systemFacetOptions} from '../properties/search';\n\nexport default class SearchFacetOption extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'value';\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {number} defaults.count - Option asset match\n\t * @property {boolean} defaults.selected - Option selected\n\t * @property {string} defaults.value - Option value (an attribute value)\n\t * @property {string} defaults.facetId - Facet id\n\t * @property {string} defaults.facetLabel - Facet label\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tcount: 0,\n\t\t\tselected: false,\n\t\t\tvalue: '',\n\t\t\tfacetId: 0,\n\t\t\tfacetLabel: '',\n\t\t};\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} attr Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts) {\n\t\tsuper(attrs, opts);\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(dispatcher, 'search:facet:option:toggle', (model) => {\n\t\t\t// Only if it concerns us\n\t\t\t// And it concerns us if both value and facetId match\n\t\t\t// As well as matching parent collections\n\t\t\tif (\n\t\t\t\t(!model.collection ||\n\t\t\t\t\tmodel.collection._listenId === this.collection._listenId) &&\n\t\t\t\tmodel.get('facetId') === this.get('facetId') &&\n\t\t\t\tmodel.get('value') === this.get('value')\n\t\t\t) {\n\t\t\t\tthis.toggle();\n\t\t\t}\n\t\t});\n\n\t\t// Set human readable title\n\t\tconst value = this.get('value');\n\t\tconst systemValue = systemFacetOptions[value];\n\t\tthis.attributes.title = systemValue || value;\n\t}\n\t/**\n\t * @method\n\t * @param {boolean} state State\n\t */\n\ttoggle(state) {\n\t\t// Current state\n\t\tconst selected = this.get('selected');\n\t\t// New state\n\t\tconst newstate = !_.isUndefined(state) ? state : !selected;\n\t\t// If changed\n\t\tnewstate != selected && this.set('selected', newstate);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SearchFacetOption';\n\t}\n}\n","/**\n * A collection for search facet options which come back from the server as an array on searchFacet\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/searchFacetOption';\n\nexport default class SearchFacetOptions extends Base {\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\t// do a locale (case insensitive) compare\n\t\t// providing a string to `comparator` makes it run through underscore's `sortBy`\n\t\t// and is case sensitivie\n\t\topts.comparator =\n\t\t\topts.comparator ||\n\t\t\tfunction (a, b) {\n\t\t\t\treturn a.get('value').localeCompare(b.get('value'));\n\t\t\t};\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\t}\n\n\t/**\n\t * Get selected options\n\t * @method\n\t * @return {array} Selected\n\t */\n\tgetSelected() {\n\t\t// Return an array of model attribute objects, not whole models\n\t\treturn _.compact(\n\t\t\t_.map(\n\t\t\t\tthis.filter((m) => m.get('selected')),\n\t\t\t\t(m) => m.attributes,\n\t\t\t),\n\t\t);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SearchFacetOptions';\n\t}\n}\n","/**\n * A Faceted Search returns a list of these objects along with the search results;\n * they can be displayed by searchFacetViews in a faceted search UI,\n * @class Netx.Models.SearchFacet\n * @extends Netx.Model\n * @see Netx.Collections.SearchFacetOptions\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport SearchFacetOptionsCollection from '../collections/searchFacetOptions';\n\nexport default class SearchFacet extends Base {\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {number} defaults.id - Unique id\n\t * @property {string} defaults.label - Facet attribute label\n\t * @property {Netx.Collections.SearchFacetOptions} defaults.options - Facet options for attribute\n\t * @property {string} defaults.label - Facet attribute label (client created)\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t// id: null,\n\t\t\tlabel: '',\n\t\t\toptions: null,\n\t\t\ttitle: '',\n\t\t};\n\t}\n\n\t/**\n\t * Maintain Netx.Collections.SearchFacetOptions for this.attributes.options\n\t * Checks if what is being set is, in part or whole, facet options - parses those out and passes the rest (if any) onto super\n\t * @override\n\t * @param {object|string} key Model key string | Model keys/values object\n\t * @param {mixed} val Value to set on model\n\t * @param {object} options Options for setting\n\t */\n\tset(key, val, options) {\n\t\t// If key is an object and contains our options\n\t\tif (_.isObject(key) && key.options) {\n\t\t\t// Set the rest first so we have an id and all that jazz\n\t\t\tsuper.set(_.omit(key, 'options'), val, options);\n\t\t\t// Setup\n\t\t\treturn this.parseOptions(key.options);\n\t\t}\n\t\t// If key is a single value and is options\n\t\telse if (key === 'options') {\n\t\t\t// Setup\n\t\t\treturn this.parseOptions(val);\n\t\t}\n\t\t// Act as if\n\t\treturn super.set(key, val, options);\n\t}\n\n\t/**\n\t * Check for and create/reset Netx.Collections.SearchFacetOptions on this.attributes.options\n\t * @method\n\t * @param {object} options Facet options\n\t * @fires module:asset#search:facet:option:changed\n\t */\n\tparseOptions(options) {\n\t\t// Map our options to contain this id\n\t\tvar facetId = this.id,\n\t\t\tfacetLabel = this.get('label'),\n\t\t\tfacetTitle = this.get('title');\n\n\t\toptions = _.compact(\n\t\t\t_.map(!_.isArray(options) ? [options] : options, function (o) {\n\t\t\t\t// Only want facets options that matter\n\t\t\t\tif (o.count)\n\t\t\t\t\treturn _.extend({}, o, {\n\t\t\t\t\t\tfacetId: facetId,\n\t\t\t\t\t\tfacetLabel: facetLabel,\n\t\t\t\t\t\tfacetTitle: facetTitle,\n\t\t\t\t\t});\n\t\t\t}),\n\t\t);\n\n\t\t// If we haven't created the collection yet\n\t\tif (!(this.attributes.options || {}).isCollection) {\n\t\t\t// Create\n\t\t\tthis.attributes.options = new SearchFacetOptionsCollection(options);\n\t\t\tthis.addSubCollection(this.attributes.options);\n\t\t\t// Mimic sync\n\t\t\tthis.attributes.options.trigger(\n\t\t\t\t'request:read',\n\t\t\t\tthis.attributes.options,\n\t\t\t\tnull,\n\t\t\t);\n\t\t\tthis.attributes.options.trigger('sync', this.attributes.options, this);\n\n\t\t\t// When the options change I change\n\t\t\tthis.listenTo(this.get('options'), 'change', function (model) {\n\t\t\t\t//this.trigger('change', this, model );\n\t\t\t\tif (model.changed && !_.isUndefined(model.changed.selected)) {\n\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t'search:facet:option:changed',\n\t\t\t\t\t\tthis,\n\t\t\t\t\t\tthis.collection,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\t// Already created, just need to update\n\t\telse {\n\t\t\t// Set\n\t\t\tthis.attributes.options.set(options);\n\t\t}\n\t}\n\t/**\n\t * Get selected facet options\n\t * @method\n\t * @return {array} Selected\n\t */\n\tselectedOptions() {\n\t\treturn this.get('options').getSelected();\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SearchFacet';\n\t}\n}\n","/**\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/searchFacetOption';\n\nexport default class SearchFacetsSelected extends Base {\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\n\t\t// When the options change I change\n\t\tthis.on('change:selected', function (model, val, opts) {\n\t\t\t// DAM-19110 - selected facet options are not the same facet options\n\t\t\tconst facet = this.facetsCollection.find({id: model.get('facetId')});\n\t\t\tconst options = facet && facet.get('options');\n\t\t\tconst option = options && options.find({value: model.id});\n\n\t\t\toption && option.toggle(val);\n\t\t});\n\t}\n\n\t/**\n\t * This could come in handy in a situation where we are not updating the facetedSearch until\n\t * something else happens, like a user submits etc (not on each change)\n\t * @method\n\t * @param {Netx.Models.SearchFacetOption} facetOption SearchFacetOption\n\t */\n\ttoggle(facetOption) {\n\t\tconst selected = facetOption.get('selected');\n\t\tconst existing = this.findWhere({\n\t\t\tfacetId: facetOption.get('facetId'),\n\t\t\tvalue: facetOption.get('value'),\n\t\t});\n\n\t\tif (selected && !existing) {\n\t\t\tthis.add(facetOption);\n\t\t} else if (!selected && existing) {\n\t\t\tthis.remove(existing);\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @param {Netx.Collection.SearchFacets} facets SearchFacets\n\t */\n\tupdate(facets) {\n\t\t// Mimic sync - gets rid of the `not-loaded` class\n\t\t// also gets us the `no-assets` class if needed\n\t\tthis.trigger('request:read', this, null);\n\t\tthis.set(facets.selectedFacets());\n\t\tthis.trigger('sync', this, this.models);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SearchFacetsSelected';\n\t}\n}\n","/**\n * Search Facets collection holds the set of SearchFacets returned by the FacetedSearch API call.\n * @class\n */\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport Netx from '@netx/core/bootstrap';\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/searchFacet';\nimport SearchFacetsSelectedCollection from './searchFacetsSelected';\n\nexport default class SearchFacets extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget hasSelection() {\n\t\treturn this.models.some((facet) => {\n\t\t\treturn facet.selectedOptions().length > 0;\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tcomparator(a, b) {\n\t\ta = a.get('title').toLowerCase();\n\t\tb = b.get('title').toLowerCase();\n\n\t\tif (a < b) return -1;\n\t\tif (b < a) return 1;\n\n\t\treturn 0;\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * filterMode can be one of 'DEFAULT', 'ADDITIVE' or 'SUBTRACTIVE'\n\t\t * See https://confluence.netx.net/display/DEV/Faceted+Search for details\n\t\t * @memberof Netx.Collections.SearchFacets\n\t\t * @alias filterMode\n\t\t * @type {string}\n\t\t * @default\n\t\t */\n\t\tthis.filterMode =\n\t\t\topts.filterMode || getPreference('search.facet.filterMode') || 'DEFAULT';\n\n\t\t// Store selected options\n\t\tthis.selected = new SearchFacetsSelectedCollection([]);\n\t\tthis.selected.facetsCollection = this;\n\t\tthis.addSubCollection(this.selected);\n\n\t\t// Hey, listen!\n\t\tthis\n\t\t\t// This is all handled by that collection now but it is handy to see visual toggling prior to a response from the server\n\t\t\t// if this causes any problems- just get rid of it as it is not a must, just aesthetically pleasing\n\t\t\t.listenTo(this, 'change', (facet, facetOption = {}) => {\n\t\t\t\tif (!facetOption.changed || facetOption.changed.selected == null)\n\t\t\t\t\treturn;\n\t\t\t\tthis.selected.toggle(facetOption, facet);\n\t\t\t})\n\t\t\t// When we are reset or synced, update selected\n\t\t\t.listenTo(this, 'sync reset', () => {\n\t\t\t\tthis.selected.update(this);\n\t\t\t});\n\t}\n\n\t/**\n\t * Get selected facet options\n\t * @return {array} Selected facets options\n\t */\n\tselectedFacets() {\n\t\tlet selection = [];\n\t\tthis.each((facet) => {\n\t\t\tconst sOpts = facet.selectedOptions();\n\t\t\tif (!sOpts.length) return;\n\n\t\t\tselection = selection.concat(sOpts);\n\t\t});\n\t\treturn selection;\n\t}\n\n\t/**\n\t * Get selected facet option values\n\t * @return {array} Facets expected by the facetedSearch API call\n\t */\n\tselectedValues() {\n\t\tconst selection = [];\n\t\tthis.each((facet) => {\n\t\t\tconst sOpts = facet.selectedOptions();\n\t\t\tif (!sOpts.length) return;\n\n\t\t\tselection.push({\n\t\t\t\tid: facet.id,\n\t\t\t\tvalues: _.pluck(sOpts, 'value'),\n\t\t\t});\n\t\t});\n\t\treturn selection;\n\t}\n\n\t/**\n\t * Turn facets off\n\t * This mimics a sync so that we get all the proper classes on our views and can handle the hiding\n\t * of the facets view via css\n\t */\n\tturnOff() {\n\t\tthis.trigger('request:read', this, null);\n\t\tthis.reset();\n\t\tthis.trigger('sync', this);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SearchFacets';\n\t}\n}\n","/**\n * @class\n */\nimport Base from 'netxcore@netx/core-search/collections/searchFacets';\n\nexport default class SearchFacets extends Base {\n\t/** @override */\n\t// portal wants them as they come\n\tcomparator(a, b) {\n\t\treturn 0;\n\t}\n}\n","/**\n * @class\n * @extends Netx.Collections.SearchRules\n */\nimport Base from './searchRules';\nimport Model from '../models/searchRule_asset';\n\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\n\nimport SearchFacetsCollection from './searchFacets';\n\nimport assetCustomConfig from '@netx/core-asset/config';\nimport base64 from 'core-libs/base64';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {escapeURI} from '@netx/core/utils/escapeURI';\nimport {unescapeURI} from '@netx/core/utils/unescapeURI';\n\nexport default class SearchRules_Assets extends Base {\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * Ignore recording stats for our searches\n\t\t * Boolean as number\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.ignoreStat = opts.ignoreStat || 0;\n\n\t\t/**\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.notifyType = opts.notifyType || 0;\n\n\t\t/**\n\t\t * Unless we want to save the search, leave this field blank.\n\t\t * @type {string}\n\t\t * @default\n\t\t */\n\t\tthis.saveSearch = opts.saveSearch || '';\n\n\t\t/**\n\t\t * The field to ort by\n\t\t * @type {string}\n\t\t * @default\n\t\t */\n\t\tthis.sortField = opts.files || 'file';\n\n\t\t/**\n\t\t * Must be set prior to super\n\t\t * @memberOf Netx.Collections.SearchRules_assets\n\t\t * @alias userPrefKeys\n\t\t * @type {object}\n\t\t */\n\t\tthis.userPrefKeys = _.extend(\n\t\t\t{\n\t\t\t\tsortField: 'asset.list.sort.field',\n\t\t\t\tsortOrder: 'asset.list.sort.order',\n\t\t\t},\n\t\t\topts.userPrefKeys,\n\t\t);\n\n\t\t/**\n\t\t * Last asset in query to fetch\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.maxItems = assetCustomConfig.CHUNK_SIZE + 1;\n\n\t\t/**\n\t\t * When Netx.Collections.Assets uses this search to perform a faceted search mode,\n\t\t * the returned facets will be attached here in a Netx.Collections.SearchFacets object.\n\t\t * @memberOf Netx.Collections.SearchRules_assets\n\t\t * @alias searchFacets\n\t\t */\n\t\tthis.searchFacets = opts.searchFacets || new SearchFacetsCollection();\n\t\tthis.addSubCollection(this.searchFacets);\n\n\t\t// Listen for sort events\n\t\tthis.listenTo(dispatcher, 'user:sort', this.setSort);\n\t}\n\n\t/** @override */\n\tcreateSearchObject(ignoreQuirks) {\n\t\treturn {\n\t\t\t...super.createSearchObject(ignoreQuirks),\n\t\t\tsaveSearch: this.saveSearch,\n\t\t\tnotifyType: this.notifyType,\n\t\t\tignoreStat: this.ignoreStat,\n\t\t};\n\t}\n\n\t/**\n\t * Intialize the Asset Search Object Properties\n\t * @override\n\t * @param {object} opts Properties to set\n\t */\n\tinitProperties(opts = {}) {\n\t\tif (opts.maxItems != null) {\n\t\t\tconsole.warn(\n\t\t\t\t'Error: attempting to set maxItems in search rules collection, but it will be ignored. Set pageSize or chunkSize on asset collection instead.',\n\t\t\t);\n\t\t\tdelete opts.maxItems;\n\t\t}\n\n\t\tsuper.initProperties(opts);\n\n\t\t_.extend(this, {\n\t\t\t// Unless we want to save the search, leave this field blank.\n\t\t\tsaveSearch: opts.saveSearch || this.saveSearch,\n\t\t\t// notifyType\n\t\t\tnotifyType: opts.notifyType != null ? opts.notifyType : this.notifyType,\n\t\t\t// Go ahead and record stats for our searches.\n\t\t\tignoreStat: opts.ignoreStat != null ? opts.ignoreStat : this.ignoreStat,\n\t\t});\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Convert base64 encoded search string to searchRules\n\t * @method\n\t * @param {string} str Base64 encoded search string\n\t * @return {object} Asset search object\n\t */\n\tstrTosALO(str) {\n\t\tlet small = '';\n\t\ttry {\n\t\t\tsmall = JSON.parse(base64.decode(unescapeURI(str)));\n\t\t} catch (e) {\n\t\t\t// a bogus URL did not decode into a legit object.\n\t\t\tdispatcher.trigger('app:alert', 'Search not found.', 'Info');\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst rules = new this.constructor().createSearchObject();\n\t\t_.each(this.sALOstrMap, (realName, smallName) => {\n\t\t\tif (small[smallName] == null) return;\n\t\t\trules[realName] = small[smallName];\n\t\t});\n\n\t\treturn rules;\n\t}\n\n\t/**\n\t * Respond to sort events\n\t * @method\n\t * @param {string} sortField Field to sort by\n\t * @param {number} sortOrder Sort direction ( 0/1 )\n\t */\n\tsetSort(sortField, sortOrder) {\n\t\tthis.sortField = sortField;\n\t\tthis.sortOrder = sortOrder;\n\t}\n\n\t/**\n\t * Convert advanced search rules to a base64 encoded string\n\t * @method\n\t * @return {string} Base64 encoded search string\n\t */\n\ttoStr(useThisSort = false) {\n\t\tconst searchObj = this.createSearchObject(true);\n\t\tconst small = {};\n\t\t// a new object will have the defaults ...\n\t\tconst defs = new this.constructor().createSearchObject();\n\n\t\t// NOTE: portal does not use advanced search\n\t\t// theme uses it but would always be relying on the user sort\n\t\t// this is just a hold over until we can reactify advanced search (creation)\n\t\tif (!useThisSort) {\n\t\t\tsearchObj.sortField = getPreference('asset.list.sort.field') || 'file';\n\t\t\tsearchObj.sortOrder =\n\t\t\t\tparseInt(getPreference('asset.list.sort.order')) || 0;\n\t\t}\n\n\t\t// create a minified object, so the string representation can be smaller.\n\t\t_.each(this.sALOstrMap, (realName, smallName) => {\n\t\t\t// don't store either of these two fields, and don't store any default values.\n\t\t\tif (realName == 'startPosition' || realName == 'maxItems') return;\n\t\t\tsmall[smallName] = searchObj[realName];\n\t\t});\n\n\t\tconst ret = escapeURI(base64.encode(JSON.stringify(small)));\n\t\tif (ret.length > 2000) {\n\t\t\tconsole.warn(\n\t\t\t\t'Warning: advanced search encoded to ' +\n\t\t\t\t\tret.length +\n\t\t\t\t\t' chars; Internet Explorer may fail if total URL lengh > 2083 chars.',\n\t\t\t);\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SearchRules_Assets';\n\t}\n}\n","/**\n * Collection contains saved search models\n * @class\n */\nimport AssetSetModel from '@netx/core-asset/models/assetSet';\nimport {types as assetSetTypes} from '@netx/core-asset/properties/assetSets';\nimport Base from '@netx/core-share/collections/sharedResources';\nimport {\n\tcurrentUserMeetsUserLevel,\n\tUserLevel,\n} from '@netx/core-user-next/utils/currentUserMeetsUserLevel';\nimport {userProfile} from '@netx/core-user/collections/singletons/userProfile';\nimport Model from '../models/savedSearch';\n\nexport default class SavedSearches extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tgetSearchesForUser: 'Loading saved searches',\n\t\t\tgetSharedResourcesForUser() {\n\t\t\t\treturn this.isFiltered()\n\t\t\t\t\t? 'Filtering saved searches'\n\t\t\t\t\t: 'Loading saved searches';\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tgetSearchesForUser: 'Loaded saved searches',\n\t\t\tgetSharedResourcesForUser() {\n\t\t\t\treturn this.isFiltered()\n\t\t\t\t\t? 'Filtered saved searches'\n\t\t\t\t\t: 'Loaded saved searches';\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} methods - Methods for this collection\n\t * @property {method} methods.fetchBeans - Fetch saved search beans\n\t * @property {method} methods.fetchBeansForUser - Fetch saved search beans for user\n\t */\n\tget methods() {\n\t\treturn _.extend(super.methods, {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchBeans(opts) {\n\t\t\t\treturn this.fetchBeansForUser(userProfile.id, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {number} userId User id\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchBeansForUser(userId, opts) {\n\t\t\t\tif (!currentUserMeetsUserLevel(UserLevel.ADMIN))\n\t\t\t\t\tuserId = userProfile.id;\n\n\t\t\t\treturn [\n\t\t\t\t\t'getSearchesForUser',\n\t\t\t\t\tuserId,\n\t\t\t\t\tthis.modeFilters,\n\t\t\t\t\tthis.filterStr,\n\t\t\t\t\tthis.pager.getPageDTO(),\n\t\t\t\t];\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * @property {object} parsers - Parsers for this collection\n\t * @property {method} parsers.fetchBeans - Parse response of saved search beans\n\t * @property {method} parsers.fetchBeansForUser - Parse response of saved search beans\n\t */\n\tget parsers() {\n\t\treturn _.extend(super.parsers, {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} data Saved carts\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchBeans(data, opts) {\n\t\t\t\tthis.set(data, _.extend({merge: true}, opts));\n\n\t\t\t\t!opts.silent && this.trigger('sync', this, data, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} data Saved carts\n\t\t\t * @param {number} userId User id\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchBeansForUser(data, userId, opts) {\n\t\t\t\tthis.set(data, opts);\n\n\t\t\t\t!opts.silent && this.trigger('sync', this, data, opts);\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * @override\n\t * @listens module:search#search:saved:delete:success\n\t * @listens module:search#search:save:success\n\t */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\topts.resourceName = opts.resourceName || 'savedSearch';\n\n\t\tsuper(models, opts);\n\n\t\t// Set name filter if provided\n\t\tthis.filterStr = opts.filterStr || '';\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(dispatcher, 'search:saved:delete:success', (savedSearch) => {\n\t\t\tconst model = this.get(savedSearch.id);\n\t\t\tmodel && this.remove(model);\n\t\t}).listenTo(\n\t\t\tdispatcher,\n\t\t\t'search:save:success',\n\t\t\t(savedSearches, savedSearch) => {\n\t\t\t\tthis.matchesFilters(savedSearch) &&\n\t\t\t\t\tthis.unshift(savedSearch.attributes);\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @return {module:asset/models/assetSet}\n\t */\n\ttoAssetSet() {\n\t\treturn new AssetSetModel({\n\t\t\ttype: assetSetTypes.search,\n\t\t\tids: this.ids(),\n\t\t\tlabel: i18n.t('i18n.savedSearches'),\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SavedSearches';\n\t}\n}\n","import Netx from '@netx/core/bootstrap';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport SavedSearchesCollection from '../savedSearches';\n\nexport const allSavedSearches = new SavedSearchesCollection([], {\n\tpager: {pageSize: 0x7fffffff},\n});\n\nallSavedSearches\n\t.on(\n\t\t'add',\n\t\t(model) =>\n\t\t\tmodel.isFavorite() && favoriteSavedSearches.add(model.attributes),\n\t)\n\t.on('destroy', (model) => favoriteSavedSearches.remove(model.id))\n\t.listenTo(dispatcher, 'search:save:success', (_, savedSearchBean) => {\n\t\tconst model = allSavedSearches.get(savedSearchBean.id);\n\t\tif (!model) return;\n\t\tmodel.set({...savedSearchBean.attributes});\n\t});\n\nexport const favoriteSavedSearches = new SavedSearchesCollection([], {\n\tpager: {pageSize: 0x7fffffff, pagesToDisplay: 0},\n\tmodeFilters: ['favorites'],\n});\n\nexport default {allSavedSearches, favoriteSavedSearches};\n","/**\n * Saved search model holds data regarding a saved search instance\n * Saved searches are part of the shared resource system\n * `fetch` will get you the shared resource bean for the saved search\n * `fetchBean` will get you the actual saved search bean\n * @class\n */\nimport AssetSetModel from '@netx/core-asset/models/assetSet';\nimport {types as assetSetTypes} from '@netx/core-asset/properties/assetSets';\nimport {URL} from '@netx/core-next/url';\nimport Base from '@netx/core-share/models/sharedResource';\n\nexport default class SavedSearch extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - The defaults for SavedSearch model\n\t * @property {object} defaults.criteria - The default criteria for SavedSearch\n\t * @property {string} defaults.description - The default description for SavedSearch (TODO: description should become part of shared resource and removed from this bean)\n\t * @property {number} defaults.matchCriteria - The default match criteria for SavedSearch\n\t * @property {number} defaults.notifyType - Notify ( 0 = none, 1 = weekly, 2 = daily, 3 = immediately )\n\t * @property {string} defaults.sortField - The default sort field for SavedSearch\n\t * @property {string} defaults.sortOrder - The default sort order for SavedSearch\n\t */\n\tget defaults() {\n\t\treturn _.extend(super.defaults, {\n\t\t\tcriteria: [],\n\t\t\tdescription: '',\n\t\t\tmatchCriteria: 0,\n\t\t\tnotifyType: 0,\n\t\t\tsortField: '',\n\t\t\tsortOrder: 0,\n\t\t});\n\t}\n\n\t/**\n\t * @property {object} methods - Methods for this model\n\t * @property {method} methods.create - Create new saved search\n\t * @property {method} methods.remove - Destroy saved search\n\t * @property {method} methods.update - Update saved search\n\t *\n\t * @property {method} methods.duplicateSearch - Duplicate saved search\n\t * @property {method} methods.fetchBean - Fetch saved search bean (fetch gets the shared resource)\n\t * @property {method} methods.setSearch - Set search data\n\t */\n\tget methods() {\n\t\treturn _.extend(super.methods, {\n\t\t\t/**\n\t\t\t * Create saved search\n\t\t\t * @method\n\t\t\t * @private\n\t\t\t */\n\t\t\tcreate: function (opts) {\n\t\t\t\tvar d = new $.Deferred();\n\t\t\t\t// TODO: Need the DAM to return full beans on creation (right now it is sending the full search bean but not the shared resource [which is the one we want])\n\t\t\t\t// in this case (all shared resource cases) it would be the shared resource and not the underlying search bean itself\n\t\t\t\tthis.setSearch().then(function (data) {\n\t\t\t\t\tthis.set({id: data.id}, opts);\n\t\t\t\t\tthis.fetch(opts).then(function () {\n\t\t\t\t\t\td.resolveWith(this, arguments);\n\t\t\t\t\t}, d.reject);\n\t\t\t\t}, d.reject);\n\t\t\t\treturn d.promise();\n\t\t\t},\n\t\t\t/**\n\t\t\t * Destroy saved search\n\t\t\t * @method\n\t\t\t */\n\t\t\tremove: ['deleteSearch', 'id'],\n\t\t\t/**\n\t\t\t * Update saved search\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tupdate: function (opts) {\n\t\t\t\treturn ['setSearch', this.self()];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Duplicate saved search\n\t\t\t * @method\n\t\t\t * @param {string} searchName Saved search name\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tduplicateSearch: function (searchName, opts) {\n\t\t\t\treturn ['duplicateSearch', searchName, this.id];\n\t\t\t},\n\t\t\t/**\n\t\t\t * Fetch saved search\n\t\t\t * @method\n\t\t\t */\n\t\t\tfetchBean: ['getSearch', 'id'],\n\t\t\t/**\n\t\t\t * Set search data\n\t\t\t * @method\n\t\t\t */\n\t\t\tsetSearch: function () {\n\t\t\t\treturn ['setSearch', this.self()];\n\t\t\t},\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tget sharedResourceRoute() {\n\t\treturn `search/saved/${this.id}`;\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts = {}) {\n\t\t/**\n\t\t * Resource type name\n\t\t * @type {string}\n\t\t */\n\t\topts.resourceName = 'savedSearch';\n\n\t\tsuper(attrs, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {boolean} fullUrl Return full url\n\t * @return {string}\n\t */\n\tgetRoute(fullUrl) {\n\t\treturn (\n\t\t\t((fullUrl && URL.location.split('#')[0]) || '') +\n\t\t\t'#' +\n\t\t\t'search/saved' +\n\t\t\t'/' +\n\t\t\tthis.id\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @return {module:asset/models/assetSet}\n\t */\n\ttoAssetSet() {\n\t\treturn new AssetSetModel({\n\t\t\ttype: assetSetTypes.savedSearch,\n\t\t\tids: [this.id],\n\t\t\tlabel: this.getLabel(),\n\t\t\tmodels: [this],\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SavedSearch';\n\t}\n}\n","/**\n * A SearchRule model holds the data the makes up a single search rule; A SearchRules collection contains 1-10 of these.\n *\n * @param {Array} elementType Integers describing the search types; see search/properties/search.\n * @param {Array} elementSubType1 Integers describing the search subtypes; search/properties/search.\n * @param {Array} elementSubType2 Integers describing the search subtypes; search/properties/search.\n * @param {Array} elementValue1 takes an array of Strings.\n * @param {Array} elementValue2 takes an array of Strings.\n * @param {Array} elementValue3 takes an array of Strings.\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\nimport properties from '../properties/search';\n\nexport default class SearchRule extends Base {\n\t/**\n\t * What search type are we dealing with\n\t * Fall back in case anyone tries to use this model without specifying it is for assets\n\t * @type {string}\n\t * @default\n\t */\n\tget searchApi() {\n\t\treturn 'assets';\n\t}\n\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\t// Type\n\t\t\t// SEARCH_TYPE_KEYWORDS - 1\n\t\t\t// SEARCH_TYPE_CONTENTS - 2\n\t\t\t// SEARCH_TYPE_METADATA - 3\n\t\t\t// SEARCH_TYPE_DATE - 4\n\t\t\t// SEARCH_TYPE_CATEGORY - 5 (Path string)\n\t\t\t// SEARCH_TYPE_FILE_FORMAT - 6\n\t\t\t// SEARCH_TYPE_FILE_SIZE - 7\n\t\t\t// SEARCH_TYPE_RAW - 8\n\t\t\t// SEARCH_TYPE_CUSTOM - 9\n\t\t\t// SEARCH_TYPE_CART - 10\n\t\t\t// SEARCH_TYPE_RELATED_ASSETS - 11\n\t\t\t// SEARCH_TYPE_LAST_SEARCH - 12\n\t\t\t// SEARCH_TYPE_CHECKOUT - 13 ( Value1 = userId; zero = all )\n\t\t\t// SEARCH_TYPE_THESAURUS - 14\n\t\t\t// SEARCH_TYPE_BRANCH_CHILDREN - 15\n\t\t\t// SEARCH_TYPE_REVIEWS - 16 (Contextual to user)\n\t\t\t// SEARCH_TYPE_EXPIRE - 17 (All)\n\t\t\t// SEARCH_TYPE_METADATA_HISTORY - 18\n\t\t\t// SEARCH_TYPE_RATING - 19\n\t\t\t// SEARCH_TYPE_LOCATION - 20 (Storage location)\n\t\t\t// SEARCH_TYPE_PROOF - 21 (For showing proofs)\n\t\t\t// SEARCH_TYPE_FILE_ASPECT - 22\n\t\t\t// SEARCH_TYPE_CATEGORY_ID - 23 (value1 must be an integer of the Category ID)\n\t\t\t// SEARCH_TYPE_SAVED_SEARCH - 24 (value1 must be an integer of the Saved Search ID)\n\t\t\t// SEARCH_TYPE_FILE_STATUS - 25 (value1 must be an integer of the status type)\n\t\t\t// SEARCH_TYPE_FILE_FORMAT_FAMILY - 26 (value1 must be one of the known families (from New York or Jersey); see FormatFamilyManager)\n\t\t\t// SEARCH_TYPE_VISUAL - 27\n\t\t\t// SEARCH_TYPE_USER - 29\n\t\t\telementType: 0,\n\n\t\t\t// Sub type 1\n\t\t\t//\n\t\t\t// Keyword/Contents/Metadata\n\t\t\t// QUERY_TYPE_AND - 0\n\t\t\t// QUERY_TYPE_EXACT - 1\n\t\t\t// QUERY_TYPE_OR - 2\n\t\t\t// QUERY_TYPE_NOT - 3\n\t\t\t// QUERY_TYPE_AND_FRAG - 4\n\t\t\t// QUERY_TYPE_OR_FRAG - 5\n\t\t\t// QUERY_TYPE_RANGE - 6\n\t\t\t// QUERY_TYPE_PHRASE - 7\n\t\t\t// QUERY_TYPE_RAW - 8\n\t\t\t// QUERY_TYPE_EMPTY - 9\n\t\t\t// QUERY_TYPE_RESPECT_DIACRITICS - 10\n\t\t\t//\n\t\t\t// Category\n\t\t\t// CATEGORY_TYPE_ONLY_RECURSIVE - 0\n\t\t\t// CATEGORY_TYPE_EXCLUDE_RECURSIVE - 1\n\t\t\t// CATEGORY_TYPE_ONLY - 2\n\t\t\t// CATEGORY_TYPE_EXCLUDE - 3\n\t\t\t// CATEGORY_TYPE_RECURSIVE - 4\n\t\t\t//\n\t\t\t// Checkout\n\t\t\t// CHECKOUT_TYPE_ANY - 0\n\t\t\t// CHECKOUT_TYPE_USER - 1\n\t\t\t//\n\t\t\t// Date\n\t\t\t// DATE_TYPE_CREATION - 0\n\t\t\t// DATE_TYPE_MODIFICATION - 1\n\t\t\t// DATE_TYPE_ATTRIBUTE - 2\n\t\t\t// DATE_TYPE_IMPORT - 3\n\t\t\t//\n\t\t\t// File aspect\n\t\t\t// FILE_ASPECT_TYPE_ORIENTATION - 0\n\t\t\t// FILE_ASPECT_TYPE_DURATION - 1\n\t\t\t// FILE_ASPECT_TYPE_WIDTH - 2\n\t\t\t// FILE_ASPECT_TYPE_HEIGHT - 3\n\t\t\t//\n\t\t\t// File-Format\n\t\t\t// TYPE_ONLY - 0\n\t\t\t// TYPE_EXCLUDE - 1\n\t\t\t//\n\t\t\t// File Size\n\t\t\t// FILE_SIZE_TYPE_APPROXIMATELY - 0\n\t\t\t// FILE_SIZE_TYPE_GREATER_THAN - 1\n\t\t\t// FILE_SIZE_TYPE_LESS_THAN - 2\n\t\t\t// FILE_SIZE_TYPE_EQUAL_TO - 3\n\t\t\t//\n\t\t\t// Rating\n\t\t\t// RATING_TYPE_APPROXIMATELY - 0\n\t\t\t// RATING_TYPE_GREATER_THAN - 1\n\t\t\t// RATING_TYPE_LESS_THAN - 2\n\t\t\t// RATING_TYPE_EQUAL_TO - 3\n\t\t\t//\n\t\t\t// Visual\n\t\t\t// VISUAL_TYPE_ID - 1\n\t\t\t// VISUAL_TYPE_COLOR - 2\n\t\t\t//\n\t\t\t// User\n\t\t\t// USER_TYPE_IMPORT - 0\n\t\t\t// USER_TYPE_MOD \t- 1\n\t\t\telementSubType1: 0,\n\n\t\t\t// Sub type 2\n\t\t\t//\n\t\t\t// Date\n\t\t\t// DATE_ANYTIME - 0\n\t\t\t// DATE_LAST_THREE_MONTHS - 1\n\t\t\t// DATE_LAST_SIX_MONTHS - 2\n\t\t\t// DATE_LAST_YEAR - 3\n\t\t\t// DATE_BEFORE - 4\n\t\t\t// DATE_AFTER - 5\n\t\t\t// DATE_INBETWEEN - 6\n\t\t\t// DATE_LAST_WEEK - 7\n\t\t\t// DATE_LAST_MONTH - 8\n\t\t\t// DATE_LAST_DAY - 9\n\t\t\t// DATE_YESTERDAY - 10\n\t\t\t// DATE_LAST_TWO_MONTHS - 11\n\t\t\t//\n\t\t\t// File Aspect\n\t\t\t// FILE_ASPECT_TYPE_APPROXIMATELY - 0\n\t\t\t// FILE_ASPECT_TYPE_GREATER_THAN - 1\n\t\t\t// FILE_ASPECT_TYPE_LESS_THAN - 2\n\t\t\t// FILE_ASPECT_TYPE_EQUAL_TO - 3\n\t\t\t//\n\t\t\t// File Size\n\t\t\t// FILE_SIZE_SIZE_BYTES - 0\n\t\t\t// FILE_SIZE_SIZE_KBYTES - 1\n\t\t\t// FILE_SIZE_SIZE_MBYTES - 2\n\t\t\t// FILE_SIZE_SIZE_GBYTES - 3\n\t\t\telementSubType2: 0,\n\n\t\t\t// TODO finish documenting values\n\t\t\t// Value 1\n\t\t\t// Date - Date\n\t\t\t// Date (range) - Start date\n\t\t\t// Metadata - Attribute template name\n\t\t\telementValue1: '',\n\t\t\t// Value 2\n\t\t\t// Date (range) - End date\n\t\t\t// Metadata - Attribute value\n\t\t\telementValue2: '',\n\t\t\t// Value 3\n\t\t\telementValue3: '',\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts) {\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * Search properties to use\n\t\t * @memberOf Netx.Models.SearchRule\n\t\t * @alias searchProps\n\t\t * @type {object}\n\t\t */\n\t\tthis.searchProps = properties[this.searchApi];\n\t}\n\n\t/**\n\t * @method\n\t * @param {boolean} ignoreQuirks Ignore quirks (get a pure rule and not one mangled for the quirks of the sALO params we pass to the server)\n\t * @return {object} Search object\n\t */\n\tgetSearchObject(ignoreQuirks) {\n\t\treturn this.self();\n\t}\n\n\t/**\n\t * We never sync with the server (not currently anyways)\n\t * @override\n\t * @return {boolean}\n\t */\n\tisNew() {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Is this rule searching on dynamic metadata?\n\t * (as opposed to system metadata or any other type of search.)\n\t *\n\t * @returns boolean\n\t *\n\t * @method\n\t */\n\tsearchTargetIsMetadata() {\n\t\treturn null;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SearchRule';\n\t}\n}\n","import {enabled as smartLabelsEnabled} from '@netx/core-attribute-smart-labels/enablers';\nimport {Locales} from '@netx/core-next/locales';\nimport {i18n} from '@netx/core/i18n';\n\n////////////////////////////////////////\n// Asset searches\n////////////////////////////////////////\nexport let assets = {\n\tsortFields: {\n\t\t// Expiration date gets inserted in search controller init if expiration is enabled\n\t\t// TODO: Make sort fields a collection that can handle user prefs and events - also, then we can have compartors and sort these things in the DOM\n\t\t// this list gets concated with user defined attribute names and things get out of order\n\t\t// https://jira.netx.net/browse/DAM-9364\n\t\t// expirationDate : i18n.t('i18n.expirationDate'),\n\t\tfile: i18n.t('i18n.file'),\n\t\tname: i18n.t('i18n.name'),\n\t\tassetId: i18n.t('i18n.assetId'),\n\t\tfileFormatFamily: i18n.t('i18n.fileFormatFamily'),\n\t\tfileSize2: i18n.t('i18n.fileSize'),\n\t\tfiletypelabel: i18n.t('i18n.fileType'),\n\t\theight: i18n.t('i18n.height'),\n\t\timportDate: i18n.t('i18n.importDate'),\n\t\tmoddate: i18n.t('i18n.modDate'),\n\t\tcreationdate: i18n.t('i18n.creationDate'),\n\t\tdimensions: i18n.t('i18n.dimensions'),\n\t\trelevance: i18n.t('i18n.relevance'),\n\t\twidth: i18n.t('i18n.width'),\n\t},\n};\n\n// Will be concated with date attributes (on attributes fetch) and applied to assets.elementSubType1s.Date.options\nexport let dateSubTypes1_default = [\n\t{\n\t\tlabel: i18n.t('i18n.creationDate'),\n\t\tval: 0,\n\t},\n\t{\n\t\tlabel: i18n.t('i18n.lastModified'),\n\t\tval: 1,\n\t},\n\t// Type 2 is for searching date attributes, where value3 is set to the attribute name.\n\t// Type 2 is only avialable when there are attribute templates of date type (See: Netx.Collections.Attributes)\n\t{\n\t\tlabel: i18n.t('i18n.importDate'),\n\t\tval: 3,\n\t},\n\t{\n\t\tlabel: i18n.t('i18n.expirationDate'),\n\t\tval: 4,\n\t},\n];\n////////////////////////////////////////\n// !Asset searches\n////////////////////////////////////////\n\n////////////////////////////////////////\n// Attribute searches\n////////////////////////////////////////\nexport let attributes = {\n\telementTypes: {\n\t\ttype: 'Select',\n\t\toptions: [\n\t\t\t{\n\t\t\t\tlabel: i18n.t('i18n.cart'),\n\t\t\t\tval: 10,\n\t\t\t},\n\t\t],\n\t},\n\telementSubType1s: {\n\t\t// Cart\n\t\t10: {},\n\t},\n\telementSubType2s: {\n\t\t// Cart\n\t\t10: {},\n\t},\n\telementValue1s: {\n\t\t// Cart\n\t\t10: {\n\t\t\ttype: 'Text',\n\t\t},\n\t},\n\telementValue2s: {\n\t\t// Cart\n\t\t10: {},\n\t},\n\telementValue3s: {\n\t\t// Cart\n\t\t10: {},\n\t},\n};\n////////////////////////////////////////\n// !Attribute searches\n////////////////////////////////////////\n\n////////////////////////////////////////\n// Clip searches\n////////////////////////////////////////\nexport let clips = {\n\telementTypes: {\n\t\ttype: 'Select',\n\t\toptions: [\n\t\t\t{\n\t\t\t\tlabel: i18n.t('i18n.keywords'),\n\t\t\t\tval: 101,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: i18n.t('i18n.assets'),\n\t\t\t\tval: 102,\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: i18n.t('i18n.attributes'),\n\t\t\t\tval: 101,\n\t\t\t},\n\t\t],\n\t},\n\telementSubType1s: {\n\t\t// Keywords\n\t\t// Attributes\n\t\t101: {\n\t\t\ttype: 'Select',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tlabel: i18n.t('i18n.matchAllWildcardsAND'),\n\t\t\t\t\tval: 4,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: i18n.t('i18n.matchAnyWildcardsOR'),\n\t\t\t\t\tval: 5,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: i18n.t('i18n.matchExactly'),\n\t\t\t\t\tval: 1,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: i18n.t('i18n.matchAllWords'),\n\t\t\t\t\tval: 0,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: i18n.t('i18n.matchAnyWholeWordsOR'),\n\t\t\t\t\tval: 2,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: i18n.t('i18n.matchEmpty'),\n\t\t\t\t\tval: 6,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: i18n.t('i18n.matchAnyRange'),\n\t\t\t\t\tval: 9,\n\t\t\t\t},\n\t\t\t],\n\t\t},\n\t\t// Assets\n\t\t102: {},\n\t},\n\telementSubType2s: {\n\t\t// Keywords\n\t\t// Attributes\n\t\t101: {},\n\t\t// Assets\n\t\t102: {},\n\t},\n\telementValue1s: {\n\t\t// Keywords\n\t\t// Attributes\n\t\t101: {\n\t\t\ttype: 'Text',\n\t\t},\n\t\t// Assets\n\t\t102: {\n\t\t\ttype: 'Text',\n\t\t},\n\t},\n\telementValue3s: {\n\t\t// Keywords\n\t\t// Attributes\n\t\t101: {},\n\t\t// Assets\n\t\t102: {},\n\t},\n\tsortFields: {\n\t\tstartTime: i18n.t('i18n.startTime'),\n\t\tendTime: i18n.t('i18n.endTime'),\n\t\ttitle: i18n.t('i18n.title'),\n\t},\n};\n////////////////////////////////////////\n// !Clip searches\n////////////////////////////////////////\n\n////////////////////////////////////////\n// Facets\n////////////////////////////////////////\n// Search types facets support\nexport let facetSupports = [\n\t1, // Keyword\n\t2, // Contents\n\t3, // Metadata\n\t4, // Date\n\t5, // Category name\n\t6, // File format\n\t7, // File size\n\t8, // Advanced raw\n\t10, // Cart\n\t13, // Checkouts\n\t14, // Thesaurus - no longer a thing really but still there\n\t22, // File aspect\n\t23, // Category id\n\t24, // Saved search\n\t26, // File format family\n\t27, // Visual search\n\t28, // Active templates\n\t200, // Attribute history\n];\n\n// Translation/readability\nexport const systemFacetOptions = Locales((i18n) => ({\n\t'creationDate.older': i18n('i18n.older'),\n\t'creationDate.pastMonth': i18n('i18n.pastMonth'),\n\t'creationDate.pastWeek': i18n('i18n.pastWeek'),\n\t'creationDate.pastYear': i18n('i18n.pastYear'),\n\t'creationDate.today': i18n('i18n.today'),\n\t'fileSize.extraLarge': i18n('i18n.extraLarge'),\n\t'fileSize.large': i18n('i18n.large'),\n\t'fileSize.medium': i18n('i18n.medium'),\n\t'fileSize.small': i18n('i18n.small'),\n\t'fileSize.tiny': i18n('i18n.tiny'),\n\t'importDate.older': i18n('i18n.older'),\n\t'importDate.pastMonth': i18n('i18n.pastMonth'),\n\t'importDate.pastYear': i18n('i18n.pastYear'),\n\t'importDate.pastWeek': i18n('i18n.pastWeek'),\n\t'importDate.today': i18n('i18n.today'),\n\t'modificationDate.older': i18n('i18n.older'),\n\t'modificationDate.pastMonth': i18n('i18n.pastMonth'),\n\t'modificationDate.pastWeek': i18n('i18n.pastWeek'),\n\t'modificationDate.pastYear': i18n('i18n.pastYear'),\n\t'modificationDate.today': i18n('i18n.today'),\n}));\n\n// These are system provided facets\nexport const systemFacets = Locales((i18n) => ({\n\tcreationDate: i18n('i18n.created'),\n\tfileFormatFamily: i18n('i18n.type'),\n\tfileSize: i18n('i18n.size'),\n\tfileType: i18n('i18n.extension'),\n\tfolder: i18n('i18n.folder'),\n\tcategory: i18n('i18n.category'),\n\timportDate: i18n('i18n.imported'),\n\tmodificationDate: i18n('i18n.modified'),\n}));\n////////////////////////////////////////\n// !Facets\n////////////////////////////////////////\n\n// Populated by the search module when it initializes.\nexport let fileFormatFamilies = {};\n\n// Populated by the search module when it initializes.\nexport let fileTypes = {};\n\n// For saved search notification\nexport let notificationTypes = {\n\t0: i18n.t('i18n.none'),\n\t1: i18n.t('i18n.weekly'),\n\t2: i18n.t('i18n.daily'),\n\t3: i18n.t('i18n.immediately'),\n};\n\n// Properties that can be updated manually\nexport let searchProperties = [\n\t'sortField',\n\t'sortOrder',\n\t'matchCriteria',\n\t'saveSearch',\n\t'notifyType',\n\t'ignoreStat',\n\t'startPosition',\n\t// 'maxItems' // hands off maxItems! use chunkSize/pageSize instead.\n];\n\n// TODO: The cms module in portal that is grabbing this file too early (prior to having user prefs)\n// we need to clean that up at some point as we should not be grabbing things from other modules\n// until prefs are returned form the server (for a variety of reasons)\n//\n// For anything that waits for prefs before loading this file\nif (smartLabelsEnabled()) {\n\tassets.sortFields['smart labels'] = i18n.t('i18n.smartLabels');\n}\n// For portal\ndispatcher.once('app:user:prefs:ready', () => {\n\tif (smartLabelsEnabled()) {\n\t\tassets.sortFields['smart labels'] = i18n.t('i18n.smartLabels');\n\t}\n});\n\nexport default {\n\tassets,\n\tattributes,\n\tclips,\n\tdateSubTypes1_default,\n\tfacetSupports,\n\tfileFormatFamilies,\n\tfileTypes,\n\tnotificationTypes,\n\tsearchProperties,\n\tsystemFacetOptions,\n\tsystemFacets,\n};\n","import {UserLevel} from '@netx/core-user/constants';\n\nexport const SHARE_MEDIA_SERVICE_SERVICES_MINIMUM_USER_LEVEL = UserLevel.ADMIN;\n\nexport enum ShareMediaServicesPref {\n\tENABLED = 'mediaServices.enabled',\n}\n","export const mediaServiceIsAuthenticated = (mediaServiceName: string) => {\n\t// @ts-ignore\n\tconst mediaServices = (Netx as any).share.mediaServices;\n\tconst mediaService = mediaServices?.find({name: mediaServiceName});\n\treturn mediaService?.get('authenticated') === true;\n};\n","import {getPublicProperty} from '@netx/core-app-next/utils/getPublicProperty';\nimport {ShareMediaServicesPref} from '../constants';\n\n/** are media services available */\nexport const mediaServicesAvailable = () =>\n\tgetPublicProperty(ShareMediaServicesPref.ENABLED, true);\n","/**\n * Describes a possible option for asset downloads(original, view, proxy, repurpose)\n * @class\n * @extends Netx.Model\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport Collection from '@netx/core/lib/netx-collection';\n\nimport {types as downloadOptionTypes} from '../properties/downloadOptions';\n\nexport default class DownloadOption extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\t// not sure if this is right, but for now it has to be something other than 'id'\n\tget idAttribute() {\n\t\treturn 'some-bogus-id';\n\t}\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {string} defaults.type - The default type (see share/properties/downloadOptions#types)\n\t * @property {string} defaults.name - The defualt name (\"thumb\",\"preview\", asset view name, or PDF contact sheet name [1x1, 3x3, or 9x9])\n\t * @property {number} defaults.id - The default processId / attrFieldSet (preset process Id, or metadata AttrFieldSet Id [if zero for Contact Sheet, then use defaults])\n\t * @property {array} defaults.options - The default options (an array of LabelValue objects)\n\t * @property {boolean} defaults.requiresApproval - The default requires approval (read-only from server)\n\t * @property {boolean} defaults.requiresJustification - The default requires justification (read-only from server)\n\t * @property {array} defaults.attributeIds - The default array of attribute ids (for PDF contact sheets, this is sent as the list of attributes to display)\n\t * @property {number} defaults.organizeContentsBy - default option for recursive download zip origanization\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\ttype: '',\n\t\t\tname: '',\n\t\t\tid: 0,\n\t\t\tfamily: '',\n\t\t\toptions: [],\n\t\t\trequiresApproval: false,\n\t\t\trequiresJustification: false,\n\t\t\tattributeIds: [],\n\t\t\torganizeContentsBy: 0, // default to no organization, this is not a user option currently\n\n\t\t\t// Client attributes\n\t\t\t// For PDF (contactSheet)\n\t\t\tengine: 'java',\n\t\t\texportOptions: new Collection([]),\n\t\t\ttemplates: new Collection([]),\n\t\t};\n\t}\n\n\t/** @type {array} */\n\tget clientAttrs() {\n\t\treturn ['engine', 'exportOptions', 'templates'];\n\t}\n\n\t////////////////////////////////////\n\t// RPC METHODS\n\t////////////////////////////////////\n\t/**\n\t * @property {object} methods - The methods available on this model\n\t * @property {function|array} methods.getPDFTemplateOptions - Request the template options for generating a PDF\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\tgetPDFTemplateOptions: ['getPDFTemplateOptions'],\n\t\t};\n\t}\n\t////////////////////////////////////\n\t// !RPC METHODS\n\t////////////////////////////////////\n\n\tget parsers() {\n\t\treturn {\n\t\t\tgetPDFTemplateOptions: function (response) {\n\t\t\t\tresponse = response || {};\n\t\t\t\t// Set client attributes\n\t\t\t\tthis.set('engine', response.engine || 'java');\n\t\t\t\tthis.get('exportOptions').reset(response.exportOptions);\n\t\t\t\tthis.get('templates').reset(response.templates);\n\t\t\t\treturn response;\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts) {\n\t\tsuper(attrs, opts);\n\n\t\t// Defer so that any code which created this model can have a chance to do anything right after initialization is finished\n\t\t// and just before we shove these client attributes in\n\t\t_.defer(() => {\n\t\t\tswitch (this.get('type')) {\n\t\t\t\tcase downloadOptionTypes.contactSheet:\n\t\t\t\t\tif (!this.has('exportOptions') || !this.has('templates')) {\n\t\t\t\t\t\tthis.set({\n\t\t\t\t\t\t\texportOptions: new Collection([]),\n\t\t\t\t\t\t\ttemplates: new Collection([]),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tthis.getPDFTemplateOptions();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t});\n\t}\n\n\t// Utility for handling that options array\n\tgetOptions() {\n\t\treturn _.lvbsToObject(this.get('options'));\n\t}\n\n\tsetOptions(obj, opts) {\n\t\treturn this.set({options: _.objectToLvbs(obj)}, opts);\n\t}\n\n\taddOptions(addObject, opts) {\n\t\treturn this.setOptions(_.extend(this.getOptions(), addObject), opts);\n\t}\n\n\t//TODO: this *Options interface is nonstandard and weird. Better to have this.options as a sub-model, and use this.self() & this.parse() to pack it/unpack it.\n\t//see the asset model's .metadata model for an example.\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'DownloadOption';\n\t}\n}\n","/**\n * DownloadOption collection\n * @class\n */\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/downloadOption';\nimport {types as downloadOptionTypes} from '../properties/downloadOptions';\n\nexport default class DownloadOptions extends Base {\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} type Download options type\n\t */\n\tfilterTypes(type) {\n\t\tif (type != null) {\n\t\t\t// filter us by the given type.\n\t\t\treturn this.where({type: type});\n\t\t}\n\n\t\t// If no argument, return an object with all our models split out by type.\n\t\tconst filtered = {\n\t\t\toriginalOption: this.where({type: downloadOptionTypes.original}) || [],\n\t\t\tproxyOptions: this.where({type: downloadOptionTypes.proxy}) || [],\n\t\t\tviewOptions: this.where({type: downloadOptionTypes.assetView}) || [],\n\t\t\tprocessOptions:\n\t\t\t\tthis.where({type: downloadOptionTypes.presetProcess}) || [],\n\t\t\tmetadataOptions: this.where({type: downloadOptionTypes.metadata}) || [],\n\t\t\tcontactSheetOptions:\n\t\t\t\tthis.where({type: downloadOptionTypes.contactSheet}) || [],\n\t\t};\n\t\t// These three are sometimes lumped together:\n\t\tfiltered.vppOptions = filtered.viewOptions\n\t\t\t.concat(filtered.proxyOptions)\n\t\t\t.concat(filtered.processOptions);\n\t\treturn filtered;\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} type Download options type\n\t * @return {module:share/models/downloadOption}\n\t */\n\tgetOption(type, name) {\n\t\tconst opts = {};\n\n\t\tif (type != null) {\n\t\t\topts.type = type;\n\t\t}\n\n\t\tif (name != null) {\n\t\t\topts.name = name;\n\t\t}\n\n\t\treturn this.findWhere(opts);\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean} Has manual repurpose options\n\t */\n\thasManualRepurposeOptions() {\n\t\tconst manualRepurpose = this.getOption('manualRepurpose');\n\t\treturn manualRepurpose && manualRepurpose.get('options').length > 0;\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} type Download options type\n\t * @return {boolean} Has option\n\t */\n\thasOption(type, name) {\n\t\treturn this.getOption(type, name) != null;\n\t}\n\n\t/**\n\t * Takes the selected download options and filters this collection to only contain selected download options\n\t * @method\n\t * @param {object} selectedDownloadOptions Form object containing user selected download options\n\t */\n\tparseSelectedDownloadOptions(selectedDownloadOptions) {\n\t\t// reduce the option set to just the selected items\n\t\t// continue to next step in workflow: check justification\n\n\t\t// DAM-12078 - set organizeContentsBy on all options but pdf and metadata\n\n\t\tconst selectedDownloadOptionModels = [];\n\n\t\tlet requiresJustification = false;\n\t\tlet requiresApproval = false;\n\n\t\tif (selectedDownloadOptions.original) {\n\t\t\tconst originalOption = this.getOption('original');\n\t\t\tif (originalOption) {\n\t\t\t\toriginalOption.set({\n\t\t\t\t\torganizeContentsBy: selectedDownloadOptions.organizeContentsBy,\n\t\t\t\t});\n\t\t\t\tselectedDownloadOptionModels.push(originalOption);\n\t\t\t}\n\t\t}\n\n\t\t// Manual repurpose\n\t\t// If it has options, we use it.\n\t\tconst manualRepurpose = this.getOption('manualRepurpose');\n\t\tconst manualRepurposeOpts =\n\t\t\t(manualRepurpose && manualRepurpose.get('options')) || [];\n\t\tif (manualRepurposeOpts.length) {\n\t\t\tmanualRepurpose.set({\n\t\t\t\torganizeContentsBy: selectedDownloadOptions.organizeContentsBy,\n\t\t\t});\n\t\t\tselectedDownloadOptionModels.push(manualRepurpose);\n\t\t}\n\n\t\t// Loop over sleected proxies\n\t\tlet proxyDownloadOption;\n\t\t_.each(selectedDownloadOptions.proxies, (proxyName) => {\n\t\t\tproxyDownloadOption = this.getOption('proxy', proxyName);\n\t\t\tif (proxyDownloadOption) {\n\t\t\t\tproxyDownloadOption.set({\n\t\t\t\t\torganizeContentsBy: selectedDownloadOptions.organizeContentsBy,\n\t\t\t\t});\n\t\t\t\tselectedDownloadOptionModels.push(proxyDownloadOption);\n\t\t\t}\n\t\t});\n\n\t\t// Loop over selected views\n\t\tlet viewDownloadOption;\n\t\t_.each(selectedDownloadOptions.views, (viewName) => {\n\t\t\tviewDownloadOption = this.getOption('assetView', viewName);\n\t\t\tif (viewDownloadOption) {\n\t\t\t\tviewDownloadOption.set({\n\t\t\t\t\torganizeContentsBy: selectedDownloadOptions.organizeContentsBy,\n\t\t\t\t});\n\t\t\t\tselectedDownloadOptionModels.push(\n\t\t\t\t\tthis.getOption('assetView', viewName),\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t\t// Loop over selected preset processes\n\t\t_.each(selectedDownloadOptions.processes, (processId) => {\n\t\t\t// If it is a true preset process (user defined) it has a numeric id\n\t\t\t// otherwise it is one of those 'fancy' preset processes that come from an XML file and use a unique name rather than a numeric id\n\t\t\tconst presetProcess = !_.isNumeric(processId)\n\t\t\t\t? // Assume name\n\t\t\t\t this.getOption('presetProcess', processId)\n\t\t\t\t: // Assume id\n\t\t\t\t this.findWhere({type: 'presetProcess', id: parseInt(processId)});\n\n\t\t\tif (!presetProcess) return;\n\n\t\t\tpresetProcess.set({\n\t\t\t\torganizeContentsBy: selectedDownloadOptions.organizeContentsBy,\n\t\t\t});\n\n\t\t\tselectedDownloadOptionModels.push(presetProcess);\n\t\t});\n\n\t\t// PDF (contact sheet)\n\t\tif (selectedDownloadOptions.contactSheet.selected) {\n\t\t\tlet sheetOption = this.getOption('contactSheet');\n\t\t\tif (sheetOption) {\n\t\t\t\tsheetOption.set(\n\t\t\t\t\t_.pick(selectedDownloadOptions.contactSheet, 'name', 'attributeIds'),\n\t\t\t\t);\n\t\t\t\t// Get rid of our client attributes - do not want to risk borking the prepareDownload call\n\t\t\t\t_.each(sheetOption.clientAttrs, (attr) => {\n\t\t\t\t\tsheetOption.unset(attr);\n\t\t\t\t});\n\t\t\t\t// I am guessing the server does not want a null title - so at least respect the other options\n\t\t\t\tconst toPick = [\n\t\t\t\t\t'displayLabels',\n\t\t\t\t\t'highRes',\n\t\t\t\t\t'pdfExportPreset',\n\t\t\t\t\t'templateName',\n\t\t\t\t];\n\t\t\t\tif (selectedDownloadOptions.contactSheet.title) {\n\t\t\t\t\ttoPick.push('title');\n\t\t\t\t}\n\t\t\t\tsheetOption.addOptions(\n\t\t\t\t\t_.pick.apply(\n\t\t\t\t\t\t_,\n\t\t\t\t\t\t[selectedDownloadOptions.contactSheet].concat(toPick),\n\t\t\t\t\t),\n\t\t\t\t);\n\n\t\t\t\t// DAM-8650: ship our default asset sort prefs to the PDF creator.\n\t\t\t\t// (Maybe someday this will be part of the PDF form, and we'll do this differently.)\n\t\t\t\tsheetOption.addOptions({\n\t\t\t\t\tassetListSortField: getPreference('asset.list.sort.field'),\n\t\t\t\t\tassetListSortOrder: getPreference('asset.list.sort.order'),\n\t\t\t\t});\n\n\t\t\t\tselectedDownloadOptionModels.push(sheetOption);\n\t\t\t}\n\t\t}\n\n\t\t// Attribute data\n\t\tif (selectedDownloadOptions.metadata.selected) {\n\t\t\t// Get a clone of our attribute download option model (not entirely sure why we clone since these things get wiped out on each download prompt)\n\t\t\t// I suppose the clone could be a safeguard for when the prepareDownload call fails, that way we haven't modified the model that the downloadOptionsView\n\t\t\t// is using (since it will still be open on an error)\n\t\t\tlet metadataOption = this.getOption('metadata');\n\t\t\tif (metadataOption) {\n\t\t\t\tmetadataOption = metadataOption.clone();\n\t\t\t\tconst setId = selectedDownloadOptions.metadata.setId;\n\t\t\t\t// If metadata manager is not enabled then we have no attributeSets, only custom\n\t\t\t\t// if (setId == 'custom' || setId == '') {\n\t\t\t\t// \t// User specified a custom set. We received the IDs from the selectedDownloadOptions.\n\t\t\t\t// \tmetadataOption.set(\n\t\t\t\t// \t\t_.pick(selectedDownloadOptions.metadata, 'attributeIds'),\n\t\t\t\t// \t);\n\t\t\t\t// } else {\n\t\t\t\t// \t// User specified an existing set. Get those IDs.\n\t\t\t\t// \tmetadataOption.set(\n\t\t\t\t// \t\t'attributeIds',\n\t\t\t\t// \t\tNetx.asset.attributeSets.get(setId).get('attributeIds'),\n\t\t\t\t// \t);\n\t\t\t\t// }\n\t\t\t\tmetadataOption.set(\n\t\t\t\t\t_.pick(selectedDownloadOptions.metadata, 'attributeIds'),\n\t\t\t\t);\n\t\t\t\tselectedDownloadOptionModels.push(metadataOption);\n\t\t\t}\n\t\t}\n\n\t\t// Historical attribute data\n\t\tif (selectedDownloadOptions.historical) {\n\t\t\tconst historicalOption = this.getOption('historical');\n\t\t\tif (historicalOption) {\n\t\t\t\tselectedDownloadOptionModels.push(historicalOption);\n\t\t\t}\n\t\t}\n\n\t\t// Set this collection with the selected download options\n\t\tthis.reset(selectedDownloadOptionModels);\n\t}\n\n\t/**\n\t * Takes the download options that have already been selected and set the selected attribute as true.\n\t * This is used so the correct download options are selected when editing a token\n\t * @method\n\t * @param {Netx.Collection.DownloadOptions} selectedDownloadOptions The collection of downloadOptions that are selected\n\t */\n\tsetUserSelectedDownloadOptions(selectedDownloadOptions) {\n\t\t// Set original download selected to false. If it's undefined the template will default to using the user pref for original which we do not want when editing\n\t\t// If it is selected, it it will be set correctly below\n\t\tconst originalOption = this.findWhere({type: 'original'});\n\t\toriginalOption && originalOption.set({selected: false});\n\n\t\t_.each(selectedDownloadOptions, (option, idx, all) => {\n\t\t\tlet opt;\n\t\t\tswitch (option.type) {\n\t\t\t\tcase 'original':\n\t\t\t\t\topt = this.findWhere({type: 'original'});\n\t\t\t\t\tif (opt) {\n\t\t\t\t\t\topt.set({selected: true});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'proxy':\n\t\t\t\t\topt = this.findWhere({name: option.name});\n\t\t\t\t\tif (opt) {\n\t\t\t\t\t\topt.set({selected: true});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'presetProcess':\n\t\t\t\t\topt = this.findWhere({name: option.name});\n\t\t\t\t\tif (opt) {\n\t\t\t\t\t\topt.set(option).set({selected: true});\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'contactSheet':\n\t\t\t\tcase 'historical':\n\t\t\t\tcase 'metadata':\n\t\t\t\t\topt = this.findWhere({type: option.type});\n\t\t\t\t\tif (opt) {\n\t\t\t\t\t\topt.set(option);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// todo: what about views?\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'DownloadOptions';\n\t}\n}\n","/**\n * @class\n */\nimport PagerModel from '@netx/core-app/models/pager';\nimport SorterModel from '@netx/core-app/models/sorter';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport {userProfile} from '@netx/core-user/collections/singletons/userProfile';\nimport Netx from '@netx/core/bootstrap';\nimport Base from '@netx/core/lib/netx-collection';\n\nexport default class SharedResources extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} methods - Methods for this collection\n\t * @property {method} methods.read - Fetch shared resources for current user\n\t * @property {method} methods.fetchForUser - Fetch shared resources for user\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'getSharedResourcesForUser',\n\t\t\t\t\tuserProfile.id,\n\t\t\t\t\tthis.resourceName,\n\t\t\t\t\tthis.modeFilters,\n\t\t\t\t\tthis.filterStr,\n\t\t\t\t\tthis.sorter.getSortDTO(),\n\t\t\t\t\tthis.pager.getPageDTO(),\n\t\t\t\t];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Admins only\n\t\t\t * @method\n\t\t\t * @param {number} userId User id\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchForUser(userId, opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'getSharedResourcesForUser',\n\t\t\t\t\tuserId,\n\t\t\t\t\tthis.resourceName,\n\t\t\t\t\tthis.modeFilters,\n\t\t\t\t\tthis.filterStr,\n\t\t\t\t\tthis.sorter.getSortDTO(),\n\t\t\t\t\tthis.pager.getPageDTO(),\n\t\t\t\t];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Parsers for this collection\n\t * @property {method} parsers.fetchForUser - Parse response of user shared resources\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} data Shared resources\n\t\t\t * @param {number} userId User id\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchForUser(data, userId, opts) {\n\t\t\t\topts = opts || {};\n\n\t\t\t\tthis.set(data, opts);\n\t\t\t\t!opts.silent && this.trigger('sync', this, data, opts);\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\tsuper(models, opts);\n\n\t\tthis.resourceName = opts.resourceName;\n\n\t\t/**\n\t\t * This is non negotiable - we use the fields supported by `sharedResourceSortDTO`\n\t\t * @memberof module:share/collections/sharedResources\n\t\t * @override\n\t\t * @alias sortableFields\n\t\t * @type {array}\n\t\t */\n\t\tthis.sortableFields = opts.sortableFields || [\n\t\t\t'id',\n\t\t\t'creationDate',\n\t\t\t'contentCount',\n\t\t\t'modDate',\n\t\t\t'title',\n\t\t];\n\n\t\t/**\n\t\t * Mode filters (read/write/delete/favorites)\n\t\t * @memberof module:share/collections/sharedResources\n\t\t * @alias modeFilters\n\t\t * @type {array}\n\t\t */\n\t\tthis.modeFilters = opts.modeFilters || null;\n\n\t\t/**\n\t\t * Paging model\n\t\t * @memberof module:share/collections/sharedResources\n\t\t * @alias pager\n\t\t * @type {module:app/models/pager}\n\t\t */\n\t\tthis.pager = new PagerModel(_.extend({}, opts.pager), {collection: this});\n\n\t\t/**\n\t\t * Sorting model\n\t\t * @memberof module:asset/models/assetProject\n\t\t * @alias sorter\n\t\t * @type {module:app/models/sorter}\n\t\t */\n\t\tthis.sorter = new SorterModel(\n\t\t\t{\n\t\t\t\tfield: opts.sortField || 'title',\n\t\t\t\torder: opts.sortOrder || 'asc',\n\t\t\t},\n\t\t\t{\n\t\t\t\tcollection: this,\n\t\t\t\tsortableFields: this.sortableFields,\n\t\t\t},\n\t\t);\n\n\t\t/**\n\t\t * Update main collections when a shared resource is toggled as favorite\n\t\t * @listens share:sharedResource:toggle:favorite:success\n\t\t * @param {module:share/models/sharedResource} sharedResource Shared resource\n\t\t * @param {boolean} isFavorite Is favorite\n\t\t */\n\t\tthis.listenTo(\n\t\t\tdispatcher,\n\t\t\t'share:sharedResource:toggle:favorite:success',\n\t\t\t(sharedResource, isFavorite) => {\n\t\t\t\tif (sharedResource.resourceName !== this.resourceName) return;\n\n\t\t\t\tconst model = this.get(sharedResource.id);\n\n\t\t\t\t// Existing, reflect `isFavorite`\n\t\t\t\tmodel && model.set('isFavorite', isFavorite);\n\n\t\t\t\t// We are filtered down to favorites, add or remove the model\n\t\t\t\tif (this.hasModeFilter('favorites')) {\n\t\t\t\t\tisFavorite\n\t\t\t\t\t\t? this.add(sharedResource.attributes, {merge: true})\n\t\t\t\t\t\t: model && this.remove(model);\n\t\t\t\t}\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} mode Mode\n\t * @return {boolean} Has mode filter\n\t */\n\thasModeFilter(mode) {\n\t\treturn this.modeFilters && _.contains(this.modeFilters, mode);\n\t}\n\n\t/** @override */\n\tisFiltered() {\n\t\tconst filtered = super.isFiltered();\n\t\treturn filtered || this.filterStr !== '' || this.selectedMode != null;\n\t}\n\n\t/**\n\t * @method\n\t * @param {module:share/models/sharedResource} model Shared resource\n\t * @return {boolean}\n\t */\n\tmatchesFilters(model) {\n\t\tif (\n\t\t\tthis.filterStr !== '' &&\n\t\t\t!model.getTitle().toLowerCase().match(this.filterStr.toLowerCase())\n\t\t)\n\t\t\treturn false;\n\n\t\tif (this.hasModeFilter('favorites')) {\n\t\t\treturn model.isFavorite();\n\t\t}\n\n\t\treturn this.selectedMode ? model.allows(this.selectedMode) : true;\n\t}\n\n\t/**\n\t * Reset the mode filter and refetch\n\t * @method\n\t */\n\tresetModeFilter() {\n\t\t// Nothing to reset\n\t\tif (this.selectedMode == null) return new $.Deferred().resolve();\n\n\t\tthis.selectedMode = this.modeFilters = null;\n\t\t// Reset to first page\n\t\tthis.pager.firstPage();\n\t\t// Fetch the unfiltered data\n\t\treturn this.fetch({duplicateQueryPolicy: 'abort'});\n\t}\n\n\t/**\n\t * Set mode filter refetch\n\t * @method\n\t * @param {string} mode Mode filter\n\t */\n\tsetModeFilter(mode) {\n\t\t// No filter, reset\n\t\tif (!mode) return this.resetModeFilter();\n\n\t\t// Nothing to do\n\t\tif (this.selectedMode === mode) return new $.Deferred().resolve();\n\n\t\tthis.selectedMode = mode;\n\n\t\tswitch (mode) {\n\t\t\t// In cases of write (edit)- a user can write to anything they can delete\n\t\t\tcase 'write':\n\t\t\t\tthis.modeFilters = ['delete', 'write'];\n\t\t\t\tbreak;\n\t\t\t// Favorites\n\t\t\t// case 'favorites':\n\t\t\t// The following will enforce that permission ONLY for filtering\n\t\t\t// Manage\n\t\t\t// case 'delete':\n\t\t\t// Read-only\n\t\t\t// case 'read':\n\t\t\tdefault:\n\t\t\t\tthis.modeFilters = [mode];\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Reset to first page\n\t\tthis.pager.firstPage();\n\n\t\treturn this.fetch({duplicateQueryPolicy: 'abort'});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SharedResources';\n\t}\n}\n","/**\n * A Shareable is a simple wrapper for a set of sharable things and its type\n * @class\n * @extends Netx.Model\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport Collection from '@netx/core/lib/netx-collection';\nimport AssetSetModel from '@netx/core-asset/models/assetSet';\n\nimport {types as assetSetTypes} from '@netx/core-asset/properties/assetSets';\n\nexport default class Shareable extends Base {\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\t/** a type from Netx.ShareableTypes */\n\t\t\ttype: '',\n\t\t\t/** array of object ids, */\n\t\t\tids: [],\n\t\t\t/** optional array of models */\n\t\t\tmodels: [],\n\t\t\t/** optional array of collections */\n\t\t\tcollections: [],\n\t\t\t/** label for the share options view */\n\t\t\tlabel: '',\n\t\t};\n\t}\n\n\t/**\n\t * Constructor options: \"type\" (required) plus one of \"ids\", \"model\", \"models\" or \"collection\"\n\t * For model/models, we extract the ids;\n\t * For collection, we extract all the model IDs in the collection.\n\t */\n\tconstructor(attrs = {}, opts = {}) {\n\t\tif (!_.isString(attrs.type)) {\n\t\t\tthrow new Error('new Shareable(opts): type not found');\n\t\t}\n\n\t\tconst ids = attrs.ids,\n\t\t\tmodel = attrs.model,\n\t\t\tmodels = attrs.models,\n\t\t\tcollection = attrs.collection;\n\n\t\tif (_.isArray(ids) && ids.length) {\n\t\t\tattrs.label =\n\t\t\t\tids.length > 1 ? ids.length + ' ' + attrs.type + 's' : attrs.type;\n\t\t} else if (model && model instanceof Base) {\n\t\t\tattrs.ids = [model.id];\n\t\t\tattrs.models = [model];\n\t\t\tattrs.label = _.isFunction(model.getLabel)\n\t\t\t\t? '\"' + model.getLabel() + '\"'\n\t\t\t\t: attrs.type;\n\t\t} else if (_.isArray(models) && models.length) {\n\t\t\tattrs.ids = _.pluck(models, 'id');\n\t\t\tattrs.label =\n\t\t\t\tmodels.length +\n\t\t\t\t' ' +\n\t\t\t\t(models.length === 1 ? attrs.type.slice(0, -1) : attrs.type);\n\t\t} else if (\n\t\t\tcollection &&\n\t\t\tcollection instanceof Collection &&\n\t\t\tcollection.length\n\t\t) {\n\t\t\tattrs.ids = _.pluck(collection.models, 'id');\n\t\t\tattrs.collections = [collection];\n\t\t\tattrs.label = attrs.type;\n\t\t}\n\n\t\tsuper(attrs, opts);\n\n\t\t// DEVNOTE: i am leaving open the possibility of someday sharing more than one collection,\n\t\t// by defining collections[] as an array. But I'm not going to implement the rest until\n\t\t// it's needed.\n\t\t/*\n\t\telse if (_.isArray(opts.collections)) ... etc\n\t\t*/\n\t}\n\n\t/**\n\t * For forwards- compatibility with the token system ...\n\t */\n\ttoAssetSet() {\n\t\tvar aType;\n\t\tswitch (this.get('type')) {\n\t\t\tcase 'current cart':\n\t\t\t\taType = assetSetTypes.cart;\n\t\t\t\tbreak;\n\t\t\tcase 'saved cart':\n\t\t\t\taType = assetSetTypes.savedCart;\n\t\t\t\tbreak;\n\t\t\tcase 'saved search':\n\t\t\t\taType = assetSetTypes.savedSearch;\n\t\t\t\tbreak;\n\t\t\tcase 'assets':\n\t\t\t\taType = assetSetTypes.asset;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn new AssetSetModel({\n\t\t\tids: this.get('ids'),\n\t\t\tmodels: this.get('models'),\n\t\t\tlabel: this.get('label'),\n\t\t\ttype: aType,\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Shareable';\n\t}\n}\n","/**\n * @class\n */\nimport Base from '@netx/core-permissions/models/permissionResource';\n\nimport ParticipantsCollection from '@netx/core-permissions/collections/participants';\n\nexport default class SharedResource extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {number} defaults.id - The default shared resource id (attribute set id, cart id, search id etc)\n\t * @property {boolean} defaults.canEdit - The default shared resource edit permission (can change the object's criteria [assets, attrs, etc])\n\t * @property {boolean} defaults.canManage - The default shared resource manage permission (can add new participants who can r/w, and can remove participants)\n\t * @property {number} defaults.contentCount - The default shared resource content count\n\t * @property {boolean} defaults.isFavorite - The default shared resource is favorited\n\t * @property {number} defaults.participantCount - The default shared resource other user particpation count\n\t * @property {string} defaults.title - The default shared resource title\n\t */\n\tget defaults() {\n\t\treturn _.extend(super.defaults, {\n\t\t\t// id: 0,\n\t\t\tcanEdit: false,\n\t\t\tcanManage: false,\n\t\t\tcontentCount: 0,\n\t\t\tisFavorite: false,\n\t\t\tparticipantCount: 0,\n\t\t\ttitle: '',\n\t\t});\n\t}\n\n\t/**\n\t * These are not client side defined, but are also not to be sent to the server when\n\t * `this.self()` is called from the extending model\n\t * @memberof module:share/model/sharedResource\n\t * @alias clientAttrs\n\t * @type {array}\n\t */\n\tget clientAttrs() {\n\t\treturn [\n\t\t\t'canEdit',\n\t\t\t'canManage',\n\t\t\t'contentCount',\n\t\t\t'isFavorite',\n\t\t\t'participantCount',\n\t\t];\n\t}\n\n\t/**\n\t * @property {object} methods - Methods for this model\n\t * @property {method} methods.read - Fetch shared resource\n\t *\n\t * @property {method} methods.sendMessageBySharedResource - Notify user that resource has been shared with them\n\t * @property {method} methods.setFavorite - Set/unset shared resource as favorite\n\t */\n\tget methods() {\n\t\treturn _.extend(super.methods, {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread: function (opts) {\n\t\t\t\treturn ['getSharedResource', this.resourceName, this.id];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Notify user that resource has been shared with them\n\t\t\t * @method\n\t\t\t * @param {string} message Message\n\t\t\t * @param {object} userSelector User selector\n\t\t\t */\n\t\t\tsendMessageBySharedResource: function (message, userSelector, opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'sendMessageBySharedResource',\n\t\t\t\t\tthis.resourceName,\n\t\t\t\t\tthis.id,\n\t\t\t\t\tmessage || '',\n\t\t\t\t\tuserSelector,\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {boolean} favorite Favorite\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetFavorite: function (favorite, opts) {\n\t\t\t\treturn ['setFavorite', this.resourceName, this.id, favorite || false];\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * @property {object} parsers - Parsers for this model\n\t * @property {function} parsers.fetchBean - Parse the result of full bean tied to shared resource\n\t * @property {function} parsers.setFavorite - Parse the result of set/unset favorite\n\t */\n\tget parsers() {\n\t\treturn _.extend(super.parsers, {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} fullBean Full bean of the thing shared resource is tied to\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tfetchBean: function (fullBean, opts) {\n\t\t\t\tthis.set(fullBean, opts);\n\t\t\t\t!opts.silent && this.trigger('sync', this, fullBean, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {boolean} resp Response (success as a boolean)\n\t\t\t * @param {boolean} favorite Favorite\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetFavorite: function (resp, favorite, opts) {\n\t\t\t\t// If it was successful\n\t\t\t\t// Technically an unsuccessful response should be an error and so we should never hit this parser with a response of `false`\n\t\t\t\tresp && this.set('isFavorite', favorite);\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * @memberof module:share/model/sharedResource\n\t\t * @alias participants\n\t\t * @type {module:share/collections/participants}\n\t\t */\n\t\tlet participants = opts.participants;\n\t\tif (_.isFunction(participants)) {\n\t\t\tparticipants = new participants([], {\n\t\t\t\tresourceId: this.id,\n\t\t\t\tresourceName: this.resourceName,\n\t\t\t});\n\t\t}\n\t\tthis.participants =\n\t\t\tparticipants ||\n\t\t\tnew ParticipantsCollection([], {\n\t\t\t\tresourceId: this.id,\n\t\t\t\tresourceName: this.resourceName,\n\t\t\t});\n\t\tthis.addSubCollection(this.participants);\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(this, 'sync', function (model, id) {\n\t\t\tthis.participants.resourceId = this.id;\n\t\t});\n\t\tthis.listenTo(this, 'request:fetchBean', function (model, xhr, opts) {\n\t\t\tthis.trigger('request:read', this, xhr, opts);\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} participant Participant object\n\t * @param {object} opts Request options\n\t * @return {module:permissions/model/participant} Particpant model\n\t */\n\taddParticipant(participant, opts) {\n\t\treturn this.participants.addParticipant(participant, opts);\n\t}\n\n\t/**\n\t * ACL\n\t * @method\n\t * @param {string} perm Permission string ( \"delete\", \"write/(edit)\", \"share\", etc )\n\t * @return {boolean} Allowed\n\t */\n\tallows(perm) {\n\t\tif (perm == null) return;\n\n\t\t// If the data came from the server we can always read it\n\t\tif (perm === 'read') return true;\n\n\t\tswitch (perm) {\n\t\t\t// Can delete saved cart\n\t\t\tcase 'delete':\n\t\t\t\treturn this.canManage();\n\t\t\t// Can download\n\t\t\t// DAM-6555. (Allow access to download; the download process will reveal what can/can't be downloaded.)\n\t\t\tcase 'download':\n\t\t\t\treturn true;\n\t\t\t// Can manage user access to shared resource\n\t\t\tcase 'manage':\n\t\t\tcase 'share':\n\t\t\t\treturn this.canManage();\n\t\t\t// Can add/remove items from shared resource\n\t\t\tcase 'edit':\n\t\t\tcase 'write':\n\t\t\t\treturn this.canManage() || this.canEdit();\n\t\t}\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean}\n\t */\n\tcanEdit() {\n\t\tvar perm = this.get('permission');\n\n\t\treturn (\n\t\t\tthis.get('canEdit') === true || perm === 'delete' || perm === 'write'\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean}\n\t */\n\tcanManage() {\n\t\tvar perm = this.get('permission');\n\n\t\treturn this.get('canManage') === true || perm === 'delete';\n\t}\n\n\t/**\n\t * Shared resources use participants\n\t * We should try and unify the two and have particpants be how all\n\t * permissions are handled\n\t * @override\n\t * @param {object} opts Request options\n\t */\n\tgetPermissions(opts) {\n\t\treturn this.getParticipants.apply(this, arguments);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Request options\n\t */\n\tgetParticipants(opts) {\n\t\tif (this.isNew()) return new $.Deferred().resolveWith(this.participants);\n\n\t\treturn this.participants.fetch(opts);\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean}\n\t */\n\tisFavorite() {\n\t\treturn this.get('isFavorite') === true;\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} id Participant id\n\t * @param {object} opts Request options\n\t * @return {module:permissions/model/participant} Particpant model\n\t */\n\tremoveParticipant(id, opts) {\n\t\treturn this.participants.removeParticipant(id, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} message Message\n\t * @param {object} userSelector User selector\n\t * @param {object} opts Options\n\t */\n\tsendMessage(message, userSelector, opts) {\n\t\treturn this.sendMessageBySharedResource(message, userSelector, opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Request options\n\t */\n\ttoggleFavorite(opts) {\n\t\tvar favorite = !this.isFavorite();\n\t\treturn this.setFavorite(favorite, opts).then(function () {\n\t\t\treturn this.isFavorite();\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'SharedResource';\n\t}\n}\n","export let contactSheet = {\n\tdefaultEngine: 'java',\n\tdefaultTemplates: {\n\t\t'1x1': {\n\t\t\tmaxAttributes: 10,\n\t\t},\n\t\t'2x2': {\n\t\t\tmaxAttributes: 5,\n\t\t},\n\t\t'3x3': {\n\t\t\tmaxAttributes: 3,\n\t\t},\n\t},\n};\n\nexport const ignoreDownloadWarningTypes = ['contactSheet', 'metadata'];\n\nexport let types = {\n\toriginal: 'original',\n\tproxy: 'proxy',\n\tassetView: 'assetView',\n\tpresetProcess: 'presetProcess',\n\thistorical: 'historical',\n\tmetadata: 'metadata',\n\tcontactSheet: 'contactSheet',\n\tthumb: 'thumb',\n\ttemplateCustomization: 'templateCustomization',\n\tpreview: 'preview',\n\t'1x1': '1x1',\n\t'2x2': '2x2',\n\t'3x3': '3x3',\n};\n\nexport default {contactSheet, ignoreDownloadWarningTypes, types};\n","export enum UserPref {\n\tSESSION_DURATION = 'user.sessionDuration',\n\tPUBLIC_USER_LOGIN = 'viewer.userLogin',\n\tEMAIL_IMPORT_SETTING = 'email.asset.import',\n\tEMAIL_REVIEW_SETTING = 'email.asset.review',\n}\n\nexport enum EmailFrequency {\n\tIMMEDIATE = 'immediately',\n\tDAILY = 'daily',\n\tNEVER = 'never',\n}\n\nexport enum UserLevel {\n\tNO_ACCESS = 0,\n\tBROWSER = 1,\n\tCONSUMER = 2,\n\tIMPORTER = 3,\n\tPRODUCER = 4,\n\tMANAGER = 7,\n\tDIRECTOR = 8,\n\tADMIN = 9,\n}\n\nexport enum UserSource {\n\tINTERNAL = 0,\n\tLDAP = 1,\n\tSAML = 2,\n\tPING_ONE = 3,\n\tLIVE_CONNECT = 4,\n}\n\nexport enum UserPermission {\n\tREAD = 1,\n\tDOWNLOAD = 2,\n\tADD = 3,\n\tMODIFY = 5,\n\tDELETE = 7,\n\tALL = 9,\n}\n\nexport enum UserGroupItemType {\n\tGROUP = 'group',\n\tUSER = 'user',\n}\n\nexport enum UserImportOption {\n\tADD_NEW_USERS_ONLY = 1,\n\tUPDATE_EXISTING_USERS_ONLY = 2,\n\tADD_AND_UPDATE = 3,\n\tDELETE = 4,\n}\n","import type {UserLevel} from '../constants';\nimport {getUserLevel} from './getUserLevel';\nexport {UserLevel} from '../constants';\n\nexport const currentUserMeetsUserLevel = (userLevel: UserLevel) =>\n\tgetUserLevel() >= userLevel;\n\nexport default currentUserMeetsUserLevel;\n","import {userPrefs} from '@netx/core-user/collections/singletons/userPreferences';\n\nexport const getPreference = <Bool extends boolean = false>(\n\tkey: string,\n\tasBoolean?: Bool,\n) => {\n\treturn userPrefs[asBoolean ? 'isTrue' : 'getPreference'](\n\t\tkey,\n\t) as Bool extends true ? boolean : string | undefined;\n};\n\nexport default getPreference;\n","import {userProfile} from '@netx/core-user/collections/singletons/userProfile';\n\nexport const getUserLevel = () => userProfile.get('type');\n\nexport default getUserLevel;\n","import {userProfile} from '@netx/core-user/collections/singletons/userProfile';\n\nexport const getUserId = () => userProfile.id;\n\nexport default getUserId;\n","import {getPublicProperty} from '@netx/core-app-next/utils/getPublicProperty';\nimport {userProfile} from '@netx/core-user/collections/singletons/userProfile';\nimport {isBrandPortal} from '@netx/core-cms-next/utils/isBrandPortal';\nimport {UserPref} from '../constants';\n\nexport const isPublicUser = () => {\n\tconst publicUserLogin = getPublicProperty(UserPref.PUBLIC_USER_LOGIN);\n\treturn (\n\t\tisBrandPortal() &&\n\t\tpublicUserLogin != null &&\n\t\tpublicUserLogin === userProfile.get('login')\n\t);\n};\n\nexport default isPublicUser;\n","import {userPrefs} from '@netx/core-user/collections/singletons/userPreferences';\n\nexport const setPreference = (key: string, value: any) =>\n\tuserPrefs.setUserPreference(key, value);\n\nexport default setPreference;\n","/**\n * Group model\n * @class\n */\nimport Base from '@netx/core/lib/netx-model';\n\nimport UsersCollection from '../collections/users';\n\nexport default class Group extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'groupId';\n\t}\n\n\t/** @type {string} */\n\tget titleAttribute() {\n\t\treturn 'name';\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {number} defaults.groupId - The default system group id\n\t * @property {string} defaults.name - The default system group name\n\t * @property {array} defaults.memberIds - The defualt array of system group users\n\t *\n\t * @todo it's unfortunate that this uses 'memberIds' and not 'userIds'. Refactor?\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\t//groupId: 0,\n\t\t\tname: '',\n\t\t\tmemberIds: [],\n\t\t};\n\t}\n\n\t/** @type {array} */\n\tget clientAttrs() {\n\t\treturn ['members'];\n\t}\n\n\t/**\n\t * @property {object} methods - The methods available on this model\n\t * @property {method} methods.create - The create method (post)\n\t * @property {method} methods.read - The read method (get)\n\t * @property {method} methods.remove - The destroy method (delete)\n\t * @property {method} methods.update - The update method (put)\n\t *\n\t * @property {method} methods.getGroupObjects - Fetches group objects by id\n\t * @property {method} methods.getUserIds - Fetches user ids for system group\n\t * @property {method} methods.getUsers - Fetches users for system group\n\t * @property {method} methods.setUserIds - Sets users on system group\n\t * @property {method} methods.exportData - Exports system group user data\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tcreate: function (opts) {\n\t\t\t\treturn ['setGroup', this.self()];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread: function (opts) {\n\t\t\t\t// We do not have a call to get a single group\n\t\t\t\t// We do have a call to get groups by id, and so we use that and fix the array return part\n\t\t\t\treturn this.getGroupObjects(opts).then(function (groups) {\n\t\t\t\t\tif (!groups.length) return null;\n\n\t\t\t\t\tif (!opts.ignoreUsers) {\n\t\t\t\t\t\treturn this.getUsers(opts).then(function () {\n\t\t\t\t\t\t\treturn groups[0];\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn groups[0];\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @method */\n\t\t\tremove(opts) {\n\t\t\t\treturn ['deleteGroup', this.id];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tupdate: function (opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'setGroup',\n\t\t\t\t\t{\n\t\t\t\t\t\tgroupId: this.id,\n\t\t\t\t\t\tname: this.get('name'),\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t},\n\t\t\t// Helpers\n\t\t\tautolist(name, opts) {\n\t\t\t\treturn ['getGroupAutoList', name];\n\t\t\t},\n\t\t\t// downloadUserData takes a `UserSelector` object - though it currently only supports all, none and groupIds\n\t\t\t// See: package com.netxposure.module.user.selector.UserSelector for more deails on this object\n\t\t\t// TODO: once this object is fully supported we should mirror it with our own model - then we could pass params and get a valid `UserSelector` to send\n\t\t\t// to any call that will expect one\n\t\t\tdownloadUserData: function (opts) {\n\t\t\t\treturn ['downloadUserData', {groupIds: [this.id]}];\n\t\t\t},\n\t\t\t/** @method */\n\t\t\tgetByName(name, opts) {\n\t\t\t\treturn this.autolist(name, opts).then((results) => {\n\t\t\t\t\tconst result = results.find((result) => result.label === name);\n\t\t\t\t\tif (!result) {\n\t\t\t\t\t\treturn new Error(`Group \"${name}\" not found`);\n\t\t\t\t\t}\n\t\t\t\t\tthis.set({[this.idAttribute]: parseInt(result.value)});\n\t\t\t\t\treturn this.fetch();\n\t\t\t\t});\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetGroupObjects: function (opts) {\n\t\t\t\treturn ['getGroupObjects', [this.id]];\n\t\t\t},\n\t\t\t/** @method */\n\t\t\tgetUserIds(opts) {\n\t\t\t\treturn ['getUsersForGroup', this.id];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @deprecated See `this.users`\n\t\t\t */\n\t\t\tgetUsers: ['getUserObjects', 'memberIds'],\n\t\t\t/** @method */\n\t\t\tsetUserIds(opts) {\n\t\t\t\treturn ['setGroupUsers', this.id, this.get('memberIds')];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - The parsers available on this model\n\t * @property {function} parsers.create - Parses result of create method\n\t * @property {function} parsers.update - Parses result of update method\n\t * @property {function} parsers.getUserIds - Parses result of fetched user ids for system group\n\t * @property {function} parsers.getUsers - Parses result of fetched users for system group\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} response Response\n\t\t\t * @param {object} opts Request options\n\t\t\t * @todo return full beans\n\t\t\t */\n\t\t\tcreate: function (response, opts) {\n\t\t\t\t// We just get that messy validation object\n\t\t\t\treturn {\n\t\t\t\t\tgroupId: response.id,\n\t\t\t\t};\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} response Response\n\t\t\t * @param {object} opts Request options\n\t\t\t * @todo return full updated beans\n\t\t\t */\n\t\t\tupdate: function (response, opts) {\n\t\t\t\t// TODO: We were setting the id again to avoid the backbone code\n\t\t\t\t// to add that whole messy validation object to our model\n\t\t\t\t// our id will never change after a creation and we can just\n\t\t\t\t// return `null` until we are getting back useful data from an update\n\t\t\t\t// this.set( { groupId: response.id }, opts );\n\t\t\t\treturn null;\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} userIds User ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetUserIds: function (userIds, opts) {\n\t\t\t\tthis.set('memberIds', userIds, opts);\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts) {\n\t\tsuper(attrs, opts);\n\n\t\t/**\n\t\t * @memberof module:user/models/group\n\t\t * @alias users\n\t\t * @type {module:user/collections/users}\n\t\t */\n\t\tthis.users = new UsersCollection([], {\n\t\t\t// Used in a selection mode our labels get tangled\n\t\t\t// see userProfile\n\t\t\tcomparator: function (a, b) {\n\t\t\t\treturn a.getAutocompleteLabel() < b.getAutocompleteLabel() ? -1 : 1;\n\t\t\t},\n\t\t\tgroupId: this.id,\n\t\t\t// We do not have a good solution for paging selected items as of yet\n\t\t\tpager: {\n\t\t\t\tpageSize: 0x7fffffff,\n\t\t\t},\n\t\t});\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(this, 'change:groupId', function (model) {\n\t\t\tthis.users.groupId = this.id;\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} opts Request options\n\t */\n\tfetchUsers(opts) {\n\t\treturn this.users.fetch(\n\t\t\t_.extend(\n\t\t\t\t{\n\t\t\t\t\tduplicateQueryPolicy: 'abort',\n\t\t\t\t\treset: true,\n\t\t\t\t},\n\t\t\t\topts,\n\t\t\t),\n\t\t);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} data Data\n\t * @param {object} opts Options\n\t * @return {boolean} Members updated\n\t */\n\tparseAndSave(data, opts) {\n\t\t// Save changes\n\t\treturn this.save(\n\t\t\t{\n\t\t\t\tname: data.name,\n\t\t\t\tmemberIds: data.ids,\n\t\t\t},\n\t\t\t_.extend({wait: true}, opts),\n\t\t).then(function () {\n\t\t\t// currently setGroupUsers(setUserIds) returns\n\t\t\t// errors that setGroup(setUserIds) does not.\n\t\t\t// so we must call this every time\n\t\t\treturn this.setUserIds().then(\n\t\t\t\t() => {\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\t(e) => {\n\t\t\t\t\tthis.fetchUsers();\n\t\t\t\t\tthrow e;\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Group';\n\t}\n}\n","/**\n * Group collection\n * @class\n */\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/group';\n\nimport PagerModel from '@netx/core-app/models/pager';\n\nexport default class Groups extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tgetGroupObjects: 'Loading groups',\n\t\t\tgetGroups: 'Loading groups',\n\t\t\tgetUsersForGroup: 'Loading users for group',\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tgetGroupObjects: 'Loaded groups',\n\t\t\tgetGroups: 'Loaded groups',\n\t\t\tgetUsersForGroup: 'Loaded users for group',\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} methods - The methods available on this model\n\t * @property {method} methods.read - The read method (get)\n\t * @property {method} methods.getByIds - Fetch groups by passed ids\n\t * @property {method} methods.getGroups - Fetch groups by `this.ids()`\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'getGroups',\n\t\t\t\t\tthis.filterStr,\n\t\t\t\t\t{field: 'name', order: 'asc'},\n\t\t\t\t\tthis.pager.getPageDTO(),\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {array} ids Group ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetByIds(ids, opts) {\n\t\t\t\tif (!_.isArray(ids)) ids = [ids];\n\t\t\t\treturn ['getGroupObjects', ids];\n\t\t\t},\n\t\t\t// One day, the above method will be a pageable method - will still want access to a full fetch (like users)\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetGroups(opts) {\n\t\t\t\treturn this.getByIds(this.ids(), opts);\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Collection parsers\n\t * @property {function} parsers.getByIds - Groups fetched by passed id\n\t * @property {function} parsers.getGroups - Groups fetched\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} groups Groups\n\t\t\t * @param {array} ids Group ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetByIds(groups, ids, opts = {}) {\n\t\t\t\tthis.set(groups, opts);\n\t\t\t\t!opts.silent && this.trigger('sync', this, groups, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} groups Groups\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetGroups(groups, opts = {}) {\n\t\t\t\tthis.set(groups, opts);\n\t\t\t\t!opts.silent && this.trigger('sync', this, groups, opts);\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {array} models An array of models or model attributes\n\t * @param {object} opts Collection options\n\t */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * Paging model\n\t\t * @memberof module:user/collections/groups\n\t\t * @alias pager\n\t\t * @type {module:app/models/pager}\n\t\t */\n\t\tthis.pager = new PagerModel(\n\t\t\t{\n\t\t\t\t// TODO: collections/models should not need to know about routes/routing\n\t\t\t\troutesToPage: false,\n\t\t\t\tpageSize: 25,\n\t\t\t\t...opts.pager,\n\t\t\t},\n\t\t\t{collection: this},\n\t\t);\n\n\t\t// Hey, listen\n\t\tthis.listenTo(this, 'sync', (collection, data, opts) => {\n\t\t\tif (collection !== this) return;\n\t\t\tif (!opts.ignoreUsers) this.invoke('getUserIds');\n\n\t\t\tthis.stopListening(this, 'add', this.addedGroup).listenTo(\n\t\t\t\tthis,\n\t\t\t\t'add',\n\t\t\t\tthis.addedGroup,\n\t\t\t);\n\t\t}).listenTo(\n\t\t\tthis,\n\t\t\t['request:getGroups', 'request:getByIds'].join(' '),\n\t\t\t(collection, xhr, opts) => {\n\t\t\t\tthis.trigger('request:read', this, xhr, opts);\n\t\t\t},\n\t\t);\n\t}\n\n\t/**\n\t * Retrieve users for newly added group\n\t * @method\n\t * @param {Netx.Models.Group} group Group model\n\t */\n\taddedGroup(group, groups, opts = {}) {\n\t\tif (opts.ignoreUsers === true) return;\n\t\tgroup.getUserIds();\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} groups An array of group objects `{name: <name>}`\n\t * @param {object} opts Options\n\t */\n\tcreateNewGroups(groups, opts = {}) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!groups) resolve();\n\n\t\t\tconst existingPromises = [];\n\n\t\t\tconst newGroups = [];\n\t\t\t// Save each group after the other has completed to avoid data locks on the server\n\t\t\tconst next = () => {\n\t\t\t\tif (!groups.length) {\n\t\t\t\t\tPromise.all(existingPromises).then(() => {\n\t\t\t\t\t\tresolve(newGroups);\n\t\t\t\t\t}, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst group = new Model(groups.shift());\n\t\t\t\tgroup.save(opts).then(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tnewGroups.push(group);\n\t\t\t\t\t\tnext();\n\t\t\t\t\t},\n\t\t\t\t\t(err) => {\n\t\t\t\t\t\t// Duplicate name - just pass back and get users added\n\t\t\t\t\t\tif (err.code === -103) {\n\t\t\t\t\t\t\tconst _group = new Model();\n\t\t\t\t\t\t\texistingPromises.push(\n\t\t\t\t\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\t\t_group.getByName(group.get('name')).then(\n\t\t\t\t\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t\t\t\t\tnewGroups.push(_group);\n\t\t\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t(err) => {\n\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\treturn next();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t};\n\n\t\t\tnext();\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} ids Group ids\n\t */\n\tdeleteGroups(ids) {\n\t\treturn this.deleteMultiple.apply(this, arguments);\n\t}\n\n\t/*\n\t * @method\n\t * @param {number} page Page number\n\t * @param {object} opts Options\n\t */\n\tgotoPage(page, opts) {\n\t\tif (page === this.curPage) {\n\t\t\treturn new $.Deferred().resolveWith(this);\n\t\t}\n\n\t\tthis.curPage = parseInt(page);\n\t\t// Getting a page for detail view\n\t\treturn this.fetch(\n\t\t\tnull,\n\t\t\t_.extend(\n\t\t\t\t{\n\t\t\t\t\tcurrentPage: page,\n\t\t\t\t\tduplicateQueryPolicy: 'abort',\n\t\t\t\t},\n\t\t\t\topts,\n\t\t\t),\n\t\t);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Groups';\n\t}\n}\n","// https://stackoverflow.com/questions/49682569/typescript-merge-object-types\ntype OptionalPropertyNames<T> = {\n\t[K in keyof T]-?: {} extends {[P in K]: T[K]} ? K : never;\n}[keyof T];\n\ntype SpreadProperties<L, R, K extends keyof L & keyof R> = {\n\t[P in K]: L[P] | Exclude<R[P], undefined>;\n};\n\ntype Id<T> = T extends infer U ? {[K in keyof U]: U[K]} : never;\n\ntype SpreadTwo<L, R> = Id<\n\tPick<L, Exclude<keyof L, keyof R>> &\n\t\tPick<R, Exclude<keyof R, OptionalPropertyNames<R>>> &\n\t\tPick<R, Exclude<OptionalPropertyNames<R>, keyof L>> &\n\t\tSpreadProperties<L, R, OptionalPropertyNames<R> & keyof L>\n>;\n\ntype Spread<A extends readonly [...any]> = A extends [infer L, ...infer R]\n\t? SpreadTwo<L, Spread<R>>\n\t: unknown;\n\n/**\n * Deeply extends an object with another object\n * @param target The object to extend\n * @param source The object to extend with\n * @returns The extended object\n *\n * @example\n * ```ts\n * const obj1 = {a: 1, b: {c: 2}};\n * const obj2 = {b: {d: 3}};\n * const obj3 = deepObjectExtend(obj1, obj2); // {a: 1, b: {c: 2, d: 3}}\n * ```\n */\nexport const deepObjectExtend = <\n\tT extends Record<string | number | symbol, any>,\n\tS extends Record<string | number | symbol, any>,\n>(\n\ttarget: T,\n\tsource: S,\n): Spread<[T, S]> => {\n\tfor (const prop in source) {\n\t\tif (source.hasOwnProperty(prop)) {\n\t\t\tif (target[prop] && typeof source[prop] === 'object') {\n\t\t\t\tdeepObjectExtend(target[prop], source[prop]);\n\t\t\t} else {\n\t\t\t\ttarget[prop] = source[prop];\n\t\t\t}\n\t\t}\n\t}\n\treturn target as unknown as Spread<[T, S]>;\n};\n","import Base from '@netx/core/lib/netx-model';\nimport {i18n} from '@netx/core/i18n';\n\nimport assetCustomConfig from '@netx/core-asset/config';\n\nimport {deepObjectExtend} from '@netx/core-next/utils/object';\n\n/**\n * UserPrefs: Stores the user preferences returned by the server\n *\n * @class\n */\n// TODO: Parsing user prefs into a multi-level object delimited by dots\n// was an interesting exercise, but it's quite complicated, leads to a\n// non-standard interface, and doesn't actually deliver any benefits\n// over doing it the easy way.\n// (Hindsight: if we only had it sooner ...)\n// This code is tested & works & we should't mess with it for no reason,\n// but rather than ever fix or extend this approach, we should just replace\n// it with a very simple, generic Netx.Model where every property is a\n// seperate attribute, manipulated by get/set/save.\n//\n\nexport default class UserPrefs extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {array} */\n\tget xhrTrackProgress() {\n\t\treturn ['getUserPreferences'];\n\t}\n\n\t/**\n\t * @type {object}\n\t */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tgetUserPreferences: 'Loading user preferences',\n\t\t};\n\t}\n\n\t/**\n\t * @type {object}\n\t */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tgetUserPreferences: 'Loaded user preferences',\n\t\t};\n\t}\n\n\t/**\n\t * All of our user prefs are in dot.syntax and then we parse with `_.lvbsToDeepObject` - to list them here would be exhaustive at the moment\n\t * Once we have cleaned up al lthe namespace issues in our naming, though laboring, would be very useful for our docs to describe each property\n\t * @property {object} defaults - The default attribute values\n\t * @property {array} defaults.attributeDisplay - The default attributes to display (used in asset list/card mode)\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\tattributeDisplay: [],\n\t\t};\n\t}\n\n\t/** @type {Array} */\n\tget clientAttrs() {\n\t\treturn ['attributeDisplay'];\n\t}\n\n\t/**\n\t * @property {object} methods - Model RPC methods\n\t * @property {method} methods.read - Fetch user preferences\n\t * @property {method} methods.saveUserPreferences - Save user preferences\n\t * @property {method} methods._setUserPreference - Save a single user preference\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/** @method */\n\t\t\tread: ['getUserPreferences'],\n\t\t\t// NOTE: this is an id-less hash (not really an object) and as such, save/update/create\n\t\t\t// is not the correct route to go. instead see setUserPreferences() below.\n\t\t\t// NOTE: you can remove these harsh reminder methods as you see fit, :) -jon\n\t\t\tcreate: function () {\n\t\t\t\tconsole.error('no save/create on non-objects plz');\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tupdate: function () {\n\t\t\t\tconsole.error('no save/update on non-objects plz');\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsaveUserPreferences: function (opts) {\n\t\t\t\tif (\n\t\t\t\t\t!_.isUndefined(this.setUserPreferenceValues) &&\n\t\t\t\t\tthis.setUserPreferenceValues.length\n\t\t\t\t) {\n\t\t\t\t\treturn ['setUserPreferences', this.setUserPreferenceValues];\n\t\t\t\t} else {\n\t\t\t\t\treturn false; // do nothing at all.\n\t\t\t\t}\n\t\t\t},\n\t\t\t/**\n\t\t\t * Set one preference on the server.\n\t\t\t * @param {string} pref Preference to set - Dot seperated preference key \"tagpanel.collection\" for nested values\n\t\t\t * @param {array|number|object|string} val Model attribute value\n\t\t\t * @param {object} opts sync/bRPC options\n\t\t\t * @todo I would call that setPreference(); setUserPreference should be renamed savePreference() or similar. - albert einstein\n\t\t\t * @see this.setPreferenceLocally\n\t\t\t */\n\t\t\t_setUserPreference: function (pref, val, opts) {\n\t\t\t\tthis.setPreferenceLocally(pref, val);\n\t\t\t\t// API call wants an LVB:\n\t\t\t\treturn ['setUserPreference', {label: pref, value: val}];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Model RPC methods\n\t * @property {function} parsers.read - Parse fetch of user preferences\n\t * @property {function} parsers.saveUserPreferences - Save user preferences\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} prefs User preferences (lvb)\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread: function (prefs, opts) {\n\t\t\t\t// Java programmers don't have abstract, typeless objects & therefore must encode such things in arrays of LabelValueBeans.\n\t\t\t\treturn _.lvbsToDeepObject(prefs);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {null} response Null response\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsaveUserPreferences: function (response, opts) {\n\t\t\t\tthis.setUserPreferenceValues = [];\n\t\t\t\tthis.trigger('saved');\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @override\n\t * @param {object} attr Model attributes\n\t * @param {object} opts Model options\n\t * @listens module:system#system:property:edit:success\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t/** @type {string} */\n\t\tthis.setUserPreferenceValue = opts.setUserPreferenceValue || '';\n\t\tthis.setUserPreferenceValues = opts.setUserPreferenceValues || [];\n\t\t/** @type {array} */\n\t\tthis._allChangedAttributes = opts._allChangedAttributes || [];\n\n\t\t////////////////////////////////////////\n\t\t// QUEUE\n\t\t////////////////////////////////////////\n\t\t/**\n\t\t * Lets not hit the server as fast as we can\n\t\t * @memberOf Netx.Models.UserPrefs\n\t\t * @alias queue\n\t\t * @type {Netx.Model}\n\t\t */\n\t\tthis.queue = new Base();\n\t\tthis.addSubModel(this.queue);\n\n\t\t// Setup our deferred for queuing\n\t\tthis.queueDeferred = new $.Deferred();\n\t\t// We will save and clear our queue after 500ms of \"inactivity\"\n\t\tthis.listenTo(\n\t\t\tthis.queue,\n\t\t\t'change',\n\t\t\t_.debounce(function () {\n\t\t\t\t// Do we have anything to save?\n\t\t\t\tif (!_.isEmpty(this.queue.attributes)) {\n\t\t\t\t\tvar done = _.bind(function () {\n\t\t\t\t\t\tthis.queueDeferred = new $.Deferred();\n\t\t\t\t\t\tthis.queue.clear();\n\t\t\t\t\t}, this);\n\t\t\t\t\t// Map to an array of lvbs\n\t\t\t\t\tthis.setUserPreferenceValues = _.objectToLvbs(this.queue.attributes);\n\t\t\t\t\t// Save on server\n\t\t\t\t\tthis.saveUserPreferences().then(\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\tthis.queueDeferred.resolveWith(this, [\n\t\t\t\t\t\t\t\tdeepObjectExtend({}, this.queue.attributes),\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\tthis.queueDeferred.reject();\n\t\t\t\t\t\t\tdone();\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}, 500),\n\t\t);\n\t\t////////////////////////////////////////\n\t\t// !QUEUE\n\t\t////////////////////////////////////////\n\n\t\t// Hey, listen!\n\t\t// Listen for properties changes that affect us\n\t\tthis.listenTo(dispatcher, 'system:property:edit:success', function (prop) {\n\t\t\t// TODO: in 8.10 we want to do this for any system property that's also a user preference:\n\t\t\t// if (! _.isUndefined(this.getPreference(prop.get('label')))) {\n\t\t\t//\n\t\t\t// but for 8.9 we're only adressing DAM-8338 and this one property:\n\t\t\t//\n\t\t\t// And...... for 8.11/8.12? -jse-\n\t\t\tif (prop.get('label') == 'adbuilder.enabled') {\n\t\t\t\t// Update with the new value\n\t\t\t\tthis.setPreferenceLocally(prop.get('label'), prop.get('value'));\n\t\t\t\tthis.trigger('sync', this, prop);\n\t\t\t}\n\t\t});\n\n\t\t// Fix some renamed (deprecated) pref keys\n\t\tthis.listenTo(this, 'sync', function () {\n\t\t\t// Added in 8.11\n\t\t\tif (\n\t\t\t\t!this.getPreference('asset.list.type') &&\n\t\t\t\tthis.getPreference('assetListType')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'asset.list.type',\n\t\t\t\t\tthis.getPreference('assetListType'),\n\t\t\t\t);\n\t\t\t\tthis.setUserPreference('assetListType', '');\n\t\t\t}\n\t\t\t// Added in 8.11\n\t\t\tif (\n\t\t\t\t!this.getPreference('asset.list.sort.field') &&\n\t\t\t\tthis.getPreference('assetListSortField')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'asset.list.sort.field',\n\t\t\t\t\tthis.getPreference('assetListSortField'),\n\t\t\t\t);\n\t\t\t\tthis.setUserPreference('assetListSortField', '');\n\t\t\t}\n\t\t\t// Added in 8.11\n\t\t\tif (\n\t\t\t\t!this.getPreference('asset.list.sort.order') &&\n\t\t\t\tthis.getPreference('assetListSortOrder')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'asset.list.sort.order',\n\t\t\t\t\tthis.getPreference('assetListSortOrder'),\n\t\t\t\t);\n\t\t\t\tthis.setUserPreference('assetListSortOrder', '');\n\t\t\t}\n\t\t\t// Added in 8.11\n\t\t\tif (\n\t\t\t\t!this.getPreference('asset.list.cardSize') &&\n\t\t\t\tthis.getPreference('assetList.thumbSize')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'asset.list.cardSize',\n\t\t\t\t\tthis.getPreference('assetList.thumbSize'),\n\t\t\t\t);\n\t\t\t\tthis.setUserPreference('assetList.thumbSize', '');\n\t\t\t}\n\t\t\t// Added in 8.11\n\t\t\tif (\n\t\t\t\t!this.getPreference('asset.list.cardSize') &&\n\t\t\t\tthis.getPreference('assetList.thumbSize')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'asset.list.cardSize',\n\t\t\t\t\tthis.getPreference('assetList.thumbSize'),\n\t\t\t\t);\n\t\t\t\tthis.setUserPreference('assetList.thumbSize', '');\n\t\t\t}\n\t\t\t// Added in 8.11\n\t\t\t// Fixes legacy attribute set selection as best as possible\n\t\t\tif (\n\t\t\t\t!this.getPreference('attribute.attributeSets.selected.gallery.card') &&\n\t\t\t\tthis.getPreference('attributeSet.selected')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'attribute.attributeSets.selected.gallery.card',\n\t\t\t\t\tthis.getPreference('attributeSet.selected'),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.getPreference(\n\t\t\t\t\t'attribute.attributeSets.selected.gallery.curator',\n\t\t\t\t) &&\n\t\t\t\tthis.getPreference('attributeSet.selected')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'attribute.attributeSets.selected.gallery.list',\n\t\t\t\t\tthis.getPreference('attributeSet.selected'),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.getPreference('attribute.attributeSets.selected.gallery.list') &&\n\t\t\t\tthis.getPreference('attributeSet.selected')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'attribute.attributeSets.selected.gallery.list',\n\t\t\t\t\tthis.getPreference('attributeSet.selected'),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.getPreference('attribute.attributeSets.selected.tagPanel') &&\n\t\t\t\tthis.getPreference('attributeSet.selected')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'attribute.attributeSets.selected.tagPanel',\n\t\t\t\t\tthis.getPreference('attributeSet.selected'),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.getPreference('attribute.attributeSets.selected.tagPanelGrid') &&\n\t\t\t\tthis.getPreference('attributeSet.selected')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'attribute.attributeSets.selected.tagPanelGrid',\n\t\t\t\t\tthis.getPreference('attributeSet.selected'),\n\t\t\t\t);\n\t\t\t\tthis.setUserPreference('attributeSet.selected', '');\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.getPreference('attribute.attributeSets.selected.detail') &&\n\t\t\t\tthis.getPreference('asset.attribute.selected-sets')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'attribute.attributeSets.selected.detail',\n\t\t\t\t\tthis.getPreference('asset.attribute.selected-sets'),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!this.getPreference('attribute.attributeSets.selected.upload') &&\n\t\t\t\tthis.getPreference('asset.attribute.selected-sets')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'attribute.attributeSets.selected.upload',\n\t\t\t\t\tthis.getPreference('asset.attribute.selected-sets'),\n\t\t\t\t);\n\t\t\t\tthis.setUserPreference('asset.attribute.selected-sets', '');\n\t\t\t}\n\t\t\t// Added in 8.12\n\t\t\t// Fixes legacy asset detail\n\t\t\tif (\n\t\t\t\t!this.getPreference('asset.detail.layout') &&\n\t\t\t\tthis.getPreference('assetDetail.layout')\n\t\t\t) {\n\t\t\t\tthis.setUserPreference(\n\t\t\t\t\t'asset.detail.layout',\n\t\t\t\t\tthis.getPreference('assetDetail.layout'),\n\t\t\t\t);\n\t\t\t\tthis.setUserPreference('assetDetail.layout', '');\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * User prefs is never new\n\t * @override\n\t * @return {boolean}\n\t */\n\tisNew() {\n\t\treturn false;\n\t}\n\n\t/**\n\t * Use in tandem with setUserPreference/setUserPreferences\n\t * This is a simple utility for setting one preference on the model\n\t * It updates the model immediately so the preference is reflected.\n\t * It can take up to 5 seconds after the request for the new/updated preference to be reflected by the server\n\t * @method\n\t * @param {string} pref Preference to set - Dot seperated preference key \"tagpanel.collection\" for nested values\n\t * @param {array|number|object|string} val Model attribute value\n\t */\n\tsetPreferenceLocally(pref, val) {\n\t\tvar i, keys, prefObj, prefToSet, value;\n\t\t// ====================\n\t\t// Model local update\n\t\t// ====================\n\t\t// Convert dot formatted string to array of keys\n\t\tkeys = pref.split('.');\n\t\t// New/modified pref object\n\t\tprefObj = {};\n\t\t// Iterations\n\t\ti = 0;\n\t\t// Convert array of keys to a nested object with the end value being the value passed to this method\n\t\t_.reduce(\n\t\t\tkeys,\n\t\t\tfunction (memo, key) {\n\t\t\t\ti++;\n\t\t\t\t// Check that we still have more keys to get to\n\t\t\t\tmemo[key] = i < keys.length ? {} : val;\n\t\t\t\treturn memo[key];\n\t\t\t},\n\t\t\tprefObj,\n\t\t);\n\t\t// Look for existing top level pref\n\t\tprefToSet = this.get(keys[0]);\n\t\t// Has exisiting top level pref - extend it or replace it\n\t\tif (prefToSet) {\n\t\t\tvalue = prefObj[keys[0]];\n\t\t\t_.isObject(value)\n\t\t\t\t? this.set(keys[0], deepObjectExtend(prefToSet, value))\n\t\t\t\t: this.set(prefObj);\n\t\t}\n\t\t// No exisiting top level pref - create it all\n\t\telse {\n\t\t\tthis.set(keys[0], prefObj[keys[0]]);\n\t\t}\n\t\t// ====================\n\t\t// !Model local update\n\t\t// ====================\n\t}\n\n\t/**\n\t * This is a simple utility for setting one preference on the server.\n\t * @method\n\t * @param {string} pref Preference to set - Dot seperated preference key \"tagpanel.collection\" for nested values\n\t * @param {array|number|object|string} val Model attribute value\n\t * @todo I would call that setPreference(); setUserPreference should be renamed savePreference() or similar. - albert einstein\n\t * @see this.setPreferenceLocally\n\t */\n\tsetUserPreference(pref, val) {\n\t\tif (!pref) {\n\t\t\treturn;\n\t\t}\n\t\tif (_.isObject(pref)) {\n\t\t\treturn this.setUserPreferences(pref);\n\t\t}\n\t\tthis.setPreferenceLocally(pref, val);\n\t\tthis.queue.set(pref, val);\n\t\treturn this.queueDeferred.promise();\n\t}\n\t/**\n\t * This is a simple utility for setting multiple preference on the server.\n\t * @method\n\t * @param {object} prefs Preferences to set - Dot seperated preference key \"tagpanel.collection\" for nested values\n\t * @todo I would call that setPreferences(); setUserPreference should be renamed savePreference() or similar. - albert einstein\n\t * @see this.setPreferenceLocally\n\t */\n\tsetUserPreferences(prefs) {\n\t\t// Loop over preferences where 'val' is value and 'pref' is the [dot seperated] preference name\n\t\t_.each(\n\t\t\tprefs,\n\t\t\tfunction (val, pref) {\n\t\t\t\t// ====================\n\t\t\t\t// Model local update\n\t\t\t\t// ====================\n\t\t\t\tthis.setPreferenceLocally(pref, val);\n\t\t\t\t// ====================\n\t\t\t\t// !Model local update\n\t\t\t\t// ====================\n\t\t\t\t// Set for update\n\t\t\t\tthis.queue.set(pref, val);\n\t\t\t},\n\t\t\tthis,\n\t\t);\n\t\treturn this.queueDeferred.promise();\n\t}\n\n\t/**\n\t * This does equivalent of .get(attr) but using .getDotPath('tree.val1.val2') notation for deep objects\n\t * @method\n\t * @pram {string} dotPath Dot path\n\t * @todo maybe move by other bean/obj/tree madness in netx.js? or even (gasp) add to all models???\n\t */\n\tgetDotPath(dotPath) {\n\t\tconsole.warn(\n\t\t\t'getDotPath() is deprecated, gone in 8.13 . Use getPreference().',\n\t\t);\n\t\treturn this.getPreference(dotPath);\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} pref Preference to get - Dot seperated preference key \"tagpanel.collection\" for nested values\n\t * @return {mixed} Prefernce value\n\t */\n\tgetPreference(pref) {\n\t\tif (!pref) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Vars\n\t\tvar keys, val;\n\n\t\t// Convert dot formatted string to array of keys\n\t\tkeys = pref.split('.');\n\t\t// See if we are lucky enough that this is a top level preference\n\t\tval = this.get(keys.shift());\n\t\t// Maybe not- look deeper\n\t\twhile (!_.isUndefined(val) && keys.length > 0) {\n\t\t\tval = val[keys.shift()];\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t * Retrieve locales and filter on the i18n.userSelectableLocales system property\n\t * @method\n\t * @return {string}\n\t */\n\tgetAvailableLocales() {\n\t\tconst availableLocales = [\n\t\t\t{\n\t\t\t\tlabel: i18n.t('i18n.languageEnglish'),\n\t\t\t\tvalue: 'en-US',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: i18n.t('i18n.languageFrench'),\n\t\t\t\tvalue: 'fr-FR',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: i18n.t('i18n.languageGerman'),\n\t\t\t\tvalue: 'de-DE',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: i18n.t('i18n.languageJapanese'),\n\t\t\t\tvalue: 'ja-JP',\n\t\t\t},\n\t\t];\n\t\t// Get available locale keys from server\n\t\t// Returns a CSV string \"en-US, fr-FR\"\n\t\tlet localeFilter = this.getPreference('i18n.userSelectableLocales');\n\t\tif (!localeFilter) return availableLocales;\n\n\t\t// If system property is set filter the system locales\n\t\t// Support mixed space or no space \"en-US,fr-FR, en-GB\"\n\t\tlocaleFilter = localeFilter.split(/[ ,]+/);\n\t\treturn availableLocales.filter((locale) => {\n\t\t\treturn localeFilter.includes(locale.value);\n\t\t});\n\t}\n\t/**\n\t * Gets either the user preference or the systemwide default for sorting\n\t * @method\n\t * @return {string}\n\t */\n\tgetListPreference() {\n\t\tvar prefType = this.getPreference('asset.list.type'),\n\t\t\tdefaultType = assetCustomConfig.LIST_TYPE_DEFAULT;\n\n\t\t// make sure our preference is available on this device\n\t\tif (assetCustomConfig.LIST_TYPE.indexOf(prefType) === -1) {\n\t\t\tprefType = false;\n\n\t\t\t// no preference, make sure our default is available on this device\n\t\t\tif (assetCustomConfig.LIST_TYPE_DEFAULT.indexOf(defaultType) === -1) {\n\t\t\t\tdefaultType = false;\n\t\t\t}\n\t\t}\n\n\t\treturn prefType || defaultType || 'grid';\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} pref Preference key\n\t * @return {boolean}\n\t */\n\tisFalse(pref) {\n\t\tconst _pref = this.getPreference(pref);\n\t\tif (_pref == null) return false;\n\t\treturn _pref === false || _pref.toString().toLowerCase() == 'false';\n\t}\n\t/**\n\t * @method\n\t * @param {string} pref Preference key\n\t * @return {boolean}\n\t */\n\tisTrue(pref) {\n\t\tconst _pref = this.getPreference(pref);\n\t\tif (_pref == null) return false;\n\t\treturn _pref === true || _pref.toString().toLowerCase() == 'true';\n\t}\n\t/**\n\t * @method\n\t * @param {string} attr Model attribute\n\t */\n\t_rememberChanged(attr) {\n\t\tif (this._allChangedAttributes.indexOf(attr) < 0) {\n\t\t\tthis._allChangedAttributes.push(attr);\n\t\t}\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'UserPrefs';\n\t}\n}\n","import UserPrefs from '@netx/core-user/models/userPrefs';\n\nexport const userPrefs = new UserPrefs();\n\nexport default userPrefs;\n","import UserProfile from '../../models/userProfile';\nexport type {UserProfileAttributes} from '../../models/userProfile';\nexport type {default as UserProfile} from '../../models/userProfile';\n\nexport const userProfile = new UserProfile();\n\n// Make sure that our current user's profile instance is updated when/if we edit it in the system area:\nuserProfile.listenTo(dispatcher, 'system:user:edit:success', function (model) {\n\tmodel.id == userProfile.id && userProfile.fetch();\n});\n\nexport default userProfile;\n\nimport {setGlobal} from '@netx/core-next/utils/setGlobal';\n// circular dependency\n// userProfile relies on this to determine if the profile being edited is the user editing it or not\n// will get worked out as we continue switching out data sources\n// if (process.env.NODE_ENV !== 'production') {\nsetGlobal({userProfile});\n//}\n","/**\n * Collection of all users' profiles. Useful for general-purpose how's-it-going stuff between users.\n * @class\n */\nimport PagerModel from '@netx/core-app/models/pager';\nimport Base from '@netx/core/lib/netx-collection';\nimport Model from '../models/userProfile';\n\nexport default class Users extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {\n\t\t\tsearchUsers() {\n\t\t\t\treturn this.isFiltered() ? 'Filtering users' : 'Loading users';\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {\n\t\t\tsearchUsers() {\n\t\t\t\treturn this.isFiltered() ? 'Filtered users' : 'Loaded users';\n\t\t\t},\n\t\t};\n\t}\n\n\t// Everywhere else uses `filterStr` for the, well, filter string\n\t// just mirror what it would have been onto our search params until\n\t// we can sort this out in develop\n\t/** @type {string} */\n\tget filterStr() {\n\t\tif (!this.searchParams) return '';\n\t\treturn this.searchParams.str;\n\t}\n\n\t/** @type {string} */\n\tset filterStr(str) {\n\t\tif (!this.searchParams) return '';\n\t\treturn (this.searchParams.str = str);\n\t}\n\n\t/**\n\t * @property {object} methods - Collection RPC methods\n\t * @property {method} methods.read - Fetch users\n\t * @property {method} methods.downloadUserData - Download all user data\n\t * @property {method} methods._getUsersForCart - Get users for saved cart\n\t * @property {method} methods.getByIds - Fetch users by passed ids\n\t * @property {method} methods.getUserObjectsForGroup - Fetch users by `groupId`\n\t * @property {method} methods.getUsers - Fetch users by `this.ids()`\n\t * @property {method} methods.importUserData - Import users via CSV/XLS\n\t *\n\t * @property {method} methods.getUsersLength - Deprecated - the total user count is on the paging object after a `read`\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * Return user objects for users matching search criteria\n\t\t\t * @param {string} str Search phrase to filter by\n\t\t\t * @param {number} level User type to return, or <code>0</code> for all user types\n\t\t\t * @param {object} paging Page DTO object\n\t\t\t * @type {function}\n\t\t\t */\n\t\t\tread(opts) {\n\t\t\t\tif (this.groupId != null) {\n\t\t\t\t\treturn this.getUserObjectsForGroup(this.groupId, opts);\n\t\t\t\t}\n\t\t\t\tvar searchParams = this.searchParams;\n\t\t\t\treturn [\n\t\t\t\t\t'searchUsers',\n\t\t\t\t\tsearchParams.str,\n\t\t\t\t\tsearchParams.level,\n\t\t\t\t\tthis.pager.getPageDTO(),\n\t\t\t\t];\n\t\t\t},\n\t\t\t// Helpers\n\t\t\t// downloadUserData takes a `UserSelector` object - though it currently only supports all, none and groupIds\n\t\t\t// See: package com.netxposure.module.user.selector.UserSelector for more deails on this object\n\t\t\t// TODO: once this object is fully supported we should mirror it with our own model - then we could pass params and get a valid `UserSelector` to send\n\t\t\t// to any call that will expect one\n\t\t\tdownloadUserData: ['downloadUserData', {all: true}],\n\t\t\t_getUsersForCart: ['getUsersForCart', 'cartId'],\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {array} ids User ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetByIds(ids, opts) {\n\t\t\t\tif (!_.isArray(ids)) ids = [ids];\n\t\t\t\treturn ['getUserObjects', ids];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {number} groupId Group id\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetUserObjectsForGroup(groupId, opts) {\n\t\t\t\treturn ['getUserObjectsForGroup', groupId, this.pager.getPageDTO()];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetUsers(opts) {\n\t\t\t\treturn this.getByIds(this.ids(), opts);\n\t\t\t},\n\t\t\t// Deprecated - Check the pager\n\t\t\tgetUsersLength: [\n\t\t\t\t'getUsersLength',\n\t\t\t\t'searchParams.str',\n\t\t\t\t'searchParams.level',\n\t\t\t\t'searchParams.field',\n\t\t\t],\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Collection parsers\n\t * @property {function} parsers.getUsers - Parse the results of our users (fetched by id)\n\t * @property {function} parsers.getByIds - Parse the results of our users (fetched by id)\n\t * @property {function} parsers.importUserData - Parse the results of importing user data\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\tread(users, opts = {}) {\n\t\t\t\treturn users.map((user) => ({\n\t\t\t\t\t...user,\n\t\t\t\t\tpassword1: null,\n\t\t\t\t\tpassword2: null,\n\t\t\t\t}));\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} users Results\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetUsers(users, opts = {}) {\n\t\t\t\tthis.set(\n\t\t\t\t\tusers.map((user) => ({...user, password1: null, password2: null})),\n\t\t\t\t\topts,\n\t\t\t\t);\n\t\t\t\t!opts.silent && this.trigger('sync', this, users, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {array} users Results\n\t\t\t * @param {array} ids User ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetByIds(users, ids, opts = {}) {\n\t\t\t\tthis.set(users, opts);\n\t\t\t\t!opts.silent && this.trigger('sync', this, users, opts);\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(models, opts = {}) {\n\t\topts.model = opts.model || Model;\n\n\t\tsuper(models, opts);\n\n\t\t/**\n\t\t * Param for `getUsersForCart` call\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.cartId = opts.cartId;\n\n\t\t/**\n\t\t * Default search params\n\t\t * @memberOf Netx.Collections.Users\n\t\t * @private\n\t\t * @alias defaultSearchParams\n\t\t * @property {object} searchParams - The default search params\n\t\t * @property {string} searchParams.str - The default search param string for user\n\t\t * @property {number} searchParams.level - The default search param number for user level\n\t\t * @default\n\t\t */\n\t\tthis.defaultSearchParams = {\n\t\t\tstr: '',\n\t\t\tlevel: 0,\n\t\t};\n\n\t\t/**\n\t\t * When exporting users you can specify a `group` id\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.exportGroupId = opts.exportGroup || 0;\n\n\t\t/**\n\t\t * Fetch users based on `groupId`\n\t\t * @type {number}\n\t\t */\n\t\tthis.groupId = opts.groupId;\n\n\t\t/**\n\t\t * Paging model\n\t\t * @memberOf Netx.Collections.Users\n\t\t * @alias pager\n\t\t * @type {Netx.Models.Pager}\n\t\t */\n\t\tthis.pager = new PagerModel(\n\t\t\t_.extend(\n\t\t\t\t{\n\t\t\t\t\t// TODO: collections/models should not need to know about routes/routing\n\t\t\t\t\troutesToPage: false,\n\t\t\t\t},\n\t\t\t\topts.pager,\n\t\t\t),\n\t\t\t{collection: this},\n\t\t);\n\n\t\t/**\n\t\t * Search params\n\t\t * @memberOf Netx.Collections.Users\n\t\t * @alias searchParams\n\t\t * @property {object} searchParams - The default search params\n\t\t * @property {string} searchParams.str - The default search param string for user\n\t\t * @property {number} searchParams.level - The default search param number for user level\n\t\t * @default\n\t\t */\n\t\tthis.searchParams = _.extend(\n\t\t\t{},\n\t\t\tthis.defaultSearchParams,\n\t\t\topts.searchParams,\n\t\t);\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(\n\t\t\tthis,\n\t\t\t['request:getUsers', 'request:getByIds'].join(' '),\n\t\t\t(collection, xhr, opts) => {\n\t\t\t\tthis.trigger('request:read', this, xhr, opts);\n\t\t\t},\n\t\t);\n\t}\n\n\t// TODO: find a way to make this more \"agnostic to where it lives\" and move to netx-collection\n\t// If we agree all paging colelctions with search/filter capabilities will utilize this.searchParams\n\t// clearSearch is all ready to go to Netx.Collection\n\t/**\n\t * Clear search\n\t * @method\n\t * @param {object} opts Request options\n\t */\n\tclearSearch(opts) {\n\t\t// No longer filtered\n\t\tthis.filtered = false;\n\n\t\t// Make sure we actually need to clear\n\t\tconst defaults = this.defaultSearchParams;\n\t\tif (_.isEqual(defaults, this.searchParams)) {\n\t\t\treturn new $.Deferred().resolve();\n\t\t}\n\n\t\t// Put back to defaults\n\t\t_.extend(this.searchParams, defaults);\n\t\treturn this.fetch(opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} id Saved cart id\n\t * @param {object} opts Request options\n\t */\n\tgetUsersForCart(id, opts) {\n\t\tthis.cartId = id;\n\t\treturn this._getUsersForCart(opts);\n\t}\n\n\t/**\n\t * Search users\n\t * @method\n\t * @param {object} searchParams Search params\n\t * @param {object} opts Request options\n\t */\n\tsearch(searchParams, opts) {\n\t\tsearchParams = searchParams || {};\n\n\t\t// TODO: search and user level do not work together?\n\n\t\tlet userLevel = parseInt(searchParams.level);\n\t\t// We have to convert this to no access\n\t\tif (userLevel === 0) {\n\t\t\tuserLevel = -1;\n\t\t}\n\t\t// Trully a 'no filter'\n\t\telse if (isNaN(userLevel)) {\n\t\t\tuserLevel = 0;\n\t\t}\n\n\t\t// Extend search params\n\t\t_.extend(this.searchParams, {\n\t\t\tstr: searchParams.str || '',\n\t\t\tlevel: userLevel,\n\t\t});\n\n\t\t// Filtered?\n\t\tconst defaults = this.defaultSearchParams;\n\t\tthis.filtered = !_.isEqual(defaults, this.searchParams);\n\n\t\t// Reset paging start\n\t\t// Pager fires off a fetch when currentPage changes\n\t\t// We are planning on fetching ourselves just below\n\t\t// TODO: it does not fire off a fetch becuase we have set routesToPage: false\n\t\t// since that is false it will not auto fetch - but silent will prevent the pager\n\t\t// view from updating the currently selected page\n\t\t// this is all so gross - refactor one day :pray:\n\t\t// Basically it goes:\n\t\t// pagerModel: page changed, if it does not route to page calls `collection.gotoPage`\n\t\t// let our goto page method handle the fetch\n\t\tif (this.pager.get('currentPage') !== 1) {\n\t\t\tthis.pager.set({currentPage: 1}, opts);\n\t\t} else {\n\t\t\treturn this.fetch(opts);\n\t\t}\n\t}\n\n\t/*\n\t * @method\n\t * @param {number} page Page number\n\t * @param {object} opts Options\n\t */\n\tgotoPage(page, opts) {\n\t\tif (page === this.curPage) {\n\t\t\treturn new $.Deferred().resolveWith(this);\n\t\t}\n\n\t\tthis.curPage = parseInt(page);\n\t\treturn this.fetch(opts);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Users';\n\t}\n}\n","export * from '@netx/core-user-next/constants';\n\nexport const USER_LEVEL = <const>{\n\tNO_ACCESS: 0,\n\tBROWSER: 1,\n\tCONSUMER: 2,\n\tIMPORTER: 3,\n\tPRODUCER: 4,\n\tMANAGER: 7,\n\tDIRECTOR: 8,\n\tADMIN: 9,\n};\n","/**\n * UserProfile: The Netx user object\n * @class\n * @todo DAM-8523\n */\nimport Base from '@netx/core/lib/netx-model';\nimport GroupsCollection from '../collections/groups';\nimport {types as userTypes} from '../properties/user';\n\nexport default class UserProfile extends Base {\n\t/**\n\t * @type {Netx.Rpc}\n\t * @private\n\t */\n\tget rpc() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tget idAttribute() {\n\t\treturn 'userId';\n\t}\n\t/** @type {string} */\n\tget titleAttribute() {\n\t\treturn 'login';\n\t}\n\n\t/**\n\t * @type {string}\n\t * @default\n\t * @todo This does not belong here - this belongs in Netx.user.options\n\t */\n\tget resetUrl() {\n\t\treturn window.location.href.replace(/#.*$/, '') + '#password-reset';\n\t}\n\n\t/** @type {boolean} */\n\tget xhrTrackProgress() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @property {object} defaults - The default attribute values\n\t * @property {string} defaults.address1 - Default address line 1\n\t * @property {string} defaults.address2 - Default address line 2\n\t * @property {string} defaults.city - Default city\n\t * @property {string} defaults.country - Default country\n\t * @property {string} defaults.email - Default email address\n\t * @property {string} defaults.expirationDate - Default expiration date as an ANSI-formatted date string (\"2003-11-13\")\n\t * @property {array} defaults.groupIds - Default group ids this user is a member of\n\t * @property {array} defaults.groupNames - Default group names this user is a member of\n\t * @property {string} defaults.login - Default login (username)\n\t * @property {string} defaults.name1 - Default first name\n\t * @property {string} defaults.name2 - Default middle name\n\t * @property {string} defaults.name3 - Default last name\n\t * @property {string} defaults.name4 - Default (???) This value is generally only used with Japanese names\n\t * @property {number} defaults.notify - Default notify (boolean as number). Signifies whether this user should receive email from the application.\n\t * @property {string} defaults.organization - Default organization\n\t * @property {string} defaults.password1 - Default password\n\t * @property {string} defaults.password2 - Default password confirmed\n\t * @property {string} defaults.phone1 - Default home phone\n\t * @property {string} defaults.phone2 - Default work phone\n\t * @property {string} defaults.phone3 - Default cell phone\n\t * @property {string} defaults.phone4 - Default (???) phone\n\t * @property {array} defaults.propertyNames - Default ???\n\t * @property {array} defaults.propertyValues - Default ???\n\t * @property {string} defaults.state - Default state (region)\n\t * @property {number} defaults.type - Default type (user level). See `user/properties/user`\n\t * @property {number} defaults.userId - Default id\n\t * @property {number} defaults.userSource - Default user source. 0 - INTERNAL, 1 - LDAP, 2 - SAML, 3 - PING_ONE, 4 LIVE_CONNECT\n\t * @property {number} defaults.zip - Default postal code\n\t *\n\t * @property {number} defaults.category - Default upload category. See `this.parsers.getUserUploadCategory`\n\t * @property {number} defaults.minimumPasswordLength - Minimum password length. See `this.decodeUserToken`\n\t * @property {string} defaults.passwordChange - ??? Can not find it being utilized anywhere (perhaps it is supposed to be `passwordReset` as seen in `this.passwordChange`? )\n\t * @property {string} defaults.passwordRequest - A string signifying the \"success\" of a password request. See `this.passwordRequest`\n\t * @property {string} defaults.registration - A string signifying the \"success\" of a registration attempt. See `this.registerNewUser`\n\t * @property {string} defaults.strictPasswordInstructions - Strict password instructions. See `this.decodeUserToken`\n\t */\n\tget defaults() {\n\t\treturn {\n\t\t\taddress1: '',\n\t\t\taddress2: '',\n\t\t\tcity: '',\n\t\t\tcountry: '',\n\t\t\temail: '',\n\t\t\texpirationDate: '',\n\t\t\tgroupIds: [],\n\t\t\tgroupNames: [],\n\t\t\tlogin: '',\n\t\t\tname1: '',\n\t\t\tname2: '',\n\t\t\tname3: '',\n\t\t\tname4: '',\n\t\t\tnotify: 1,\n\t\t\torganization: '',\n\t\t\tpassword1: '',\n\t\t\tpassword2: '',\n\t\t\tphone1: '',\n\t\t\tphone2: '',\n\t\t\tphone3: '',\n\t\t\tphone4: 'NA',\n\t\t\tpropertyNames: [],\n\t\t\tpropertyValues: [],\n\t\t\tstate: 'NA',\n\t\t\ttoken: '',\n\t\t\ttype: -1,\n\t\t\t// userId: 0,\n\t\t\tuserSource: 0,\n\t\t\tzip: '',\n\n\t\t\t// Client side attributes\n\t\t\tcategory: 0,\n\t\t\tminimumPasswordLength: 8,\n\t\t\tpasswordChange: '',\n\t\t\tpasswordRequest: '',\n\t\t\tregistration: '',\n\t\t\tstrictPasswordInstructions: '',\n\t\t};\n\t}\n\n\t/** @type {array} */\n\tget clientAttrs() {\n\t\treturn [\n\t\t\t'category',\n\t\t\t'minimumPasswordLength',\n\t\t\t'strictPasswordInstructions',\n\t\t\t'passwordRequest',\n\t\t\t'passwordChange',\n\t\t\t'registration',\n\t\t];\n\t}\n\n\t/**\n\t * @property {object} methods - Model RPC methods\n\t * @property {method} methods.create - Create new user\n\t * @property {method} methods.read - Fetch user\n\t * @property {method} methods.remove - Destroy user\n\t * @property {method} methods.update - Update user\n\t * @property {method} methods.authenticate - Authenticate user\n\t * @property {method} methods.getGroupForUser - Fetch user's groups\n\t * @property {method} methods.getSessionKeyForUser - Fetch user's session key (admin only)\n\t * @property {method} methods.getUserUploadCategory - Fetch user's upload category\n\t * @property {method} methods.login - Login user\n\t * @property {method} methods.logout - Lougout user\n\t * @property {method} methods.logoutUser - Logout specific user by id (spiderman pointing at spiderman.jpg)\n\t * @property {method} methods.passwordReset - Step 2 in reset: Update user password via token from `requestPasswordReset`\n\t * @property {method} methods.requestPasswordReset - Step 1 in reset: Requests that a password reset link be emailed to the user\n\t * @property {method} methods.setUserGroups - Update user groups\n\t * @property {method} methods.userSelfRegistration - Register as user\n\t */\n\tget methods() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tcreate: function (opts) {\n\t\t\t\treturn ['setUser', this.self()];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread: function (opts) {\n\t\t\t\tif (!this.isMe()) {\n\t\t\t\t\t// returns an *array*, see parsers.read()\n\t\t\t\t\treturn ['getUserObjects', [this.id]];\n\t\t\t\t}\n\t\t\t\treturn this.getSelf().then((self) => {\n\t\t\t\t\treturn this._canCreateAPITokens(opts).then((canCreateAPITokens) => {\n\t\t\t\t\t\tthis.canCreateAPITokens = canCreateAPITokens;\n\t\t\t\t\t\treturn opts?.parse ? this.parsers.read(self, opts) : self;\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t},\n\t\t\t_canCreateAPITokens: ['canCreateAPITokens'],\n\t\t\tgetSelf: ['getSelf'],\n\t\t\t/** @method */\n\t\t\t// note: according to flex docs, user cannot delete themselves (returns 0). -1 = fail, 1 = success\n\t\t\tremove: ['deleteUser', 'id'],\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tupdate: function (opts) {\n\t\t\t\t// DAM-5605\n\t\t\t\tif (!this.isMe()) {\n\t\t\t\t\treturn ['setUser', this.self()];\n\t\t\t\t}\n\t\t\t\treturn ['modifyCurrentUserData', this.self()];\n\t\t\t},\n\n\t\t\t/** @method */\n\t\t\tauthenticate: ['authenticate', 'login', 'password1'],\n\t\t\t/** @method */\n\t\t\tgetGroups(opts) {\n\t\t\t\treturn this.getGroupsForUser(opts).then((groupIds) => {\n\t\t\t\t\tthis.set('groupIds', groupIds);\n\n\t\t\t\t\tthis.groups.reset(\n\t\t\t\t\t\tgroupIds.map((id) => {\n\t\t\t\t\t\t\treturn {groupId: id};\n\t\t\t\t\t\t}),\n\t\t\t\t\t\topts,\n\t\t\t\t\t);\n\n\t\t\t\t\tthis.groups.pager.set(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcurrentPage: 1,\n\t\t\t\t\t\t\tpageSize: groupIds.length,\n\t\t\t\t\t\t},\n\t\t\t\t\t\topts,\n\t\t\t\t\t);\n\n\t\t\t\t\treturn this.groups.getGroups(opts);\n\t\t\t\t});\n\t\t\t},\n\t\t\t/** @method */\n\t\t\tgetGroupsForUser(opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'getGroupsForUser',\n\t\t\t\t\tthis.id,\n\t\t\t\t\t{name: null},\n\t\t\t\t\t{field: 'name', order: 'asc'},\n\t\t\t\t\t{startIndex: 0, size: 0x7fff},\n\t\t\t\t];\n\t\t\t},\n\t\t\t/** @method */\n\t\t\tgetSessionKeyForUser: ['getSessionKeyForUser', 'userId'],\n\t\t\t/** @method */\n\t\t\tgetUserUploadCategory: ['getUserUploadCategory'],\n\t\t\t/** @method */\n\t\t\tlogin: ['authenticateAndGetUserBean', 'login', 'password1'],\n\t\t\t/** @method */\n\t\t\tlogout: ['logoutUser'],\n\t\t\t/** @method */\n\t\t\tlogoutUser: ['logout', 'userId'],\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tpasswordReset: function (opts) {\n\t\t\t\treturn [\n\t\t\t\t\t'changePassword',\n\t\t\t\t\tthis.get('login'),\n\t\t\t\t\t'',\n\t\t\t\t\tthis.get('token'),\n\t\t\t\t\tthis.get('password'),\n\t\t\t\t];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\trequestPasswordReset: function (opts) {\n\t\t\t\treturn ['changePassword', this.get('login'), this.resetUrl, '', ''];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {array} ids Group ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetUserGroups(ids, opts) {\n\t\t\t\treturn ['setUserGroups', this.id, ids];\n\t\t\t},\n\t\t\t/**\n\t\t\t * @method\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tuserSelfRegistration: function (opts) {\n\t\t\t\treturn ['userSelfRegistration', this.self()];\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * @property {object} parsers - Model parsers\n\t * @property {function} parsers.create - Parse from creation of new user\n\t * @property {function} parsers.read - Parse fetch of user\n\t * @property {function} parsers.update - Parse update of user\n\t * @property {function} parsers.getGroupForUser - Parse fetch of user's groups\n\t * @property {function} parsers.getUserUploadCategory - Parse fetch of user's upload category\n\t * @property {function} parsers.passwordReset - Parse update of user password via token from `requestPasswordReset`\n\t * @property {function} parsers.requestPasswordReset - Parse request that a password reset link be emailed to the user\n\t * @property {function} parsers.userSelfRegistration - Parse register as user\n\t */\n\tget parsers() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} data Data (validation bean)\n\t\t\t * @param {object} opts Request options\n\t\t\t * @todo Get full beans\n\t\t\t */\n\t\t\tcreate: function (data, opts) {\n\t\t\t\treturn {userId: data.id, password1: null, password2: null};\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} data Data (validation bean)\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tread: function (data, opts) {\n\t\t\t\t// kinda hacktacular, but... ? getUsers returns an *array* of user object but we just want one. but getSelf just returns the obj.\n\t\t\t\tif (data instanceof Array) {\n\t\t\t\t\tif (!data.length) return null;\n\n\t\t\t\t\tdata[0].password1 = data[0].password2 = null;\n\t\t\t\t\treturn data[0];\n\t\t\t\t}\n\n\t\t\t\t// modifyCurrentData won't ignore the password fields unless they're set to '********'\n\t\t\t\tdata.password1 = data.password2 = null;\n\t\t\t\treturn data;\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {object} data Data\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tupdate: function (data, opts) {\n\t\t\t\t// get rid of the result entirely, so BackboneRPC doesn't extend it onto Netx.User\n\t\t\t\treturn {\n\t\t\t\t\tpassword1: null,\n\t\t\t\t\tpassword2: null,\n\t\t\t\t};\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {number} categoryId Category id\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tgetUserUploadCategory: function (categoryId, opts) {\n\t\t\t\tthis.set('category', categoryId, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {boolean} resultBool Result\n\t\t\t * @param {object} opts Request options\n\t\t\t * @todo Can someone document why we are doing this?\n\t\t\t * The code that makes this call would get the `resultBool` and would already have\n\t\t\t * reference to `this` in order to do so...\n\t\t\t */\n\t\t\tpasswordReset: function (resultBool, opts) {\n\t\t\t\treturn {\n\t\t\t\t\tprofile: this,\n\t\t\t\t\tresultBool: resultBool,\n\t\t\t\t};\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {boolean} resultBool Result\n\t\t\t * @param {object} opts Request options\n\t\t\t * @todo Can someone document why we are doing this?\n\t\t\t * The code that makes this call would get the `resultBool` and would already have\n\t\t\t * reference to `this` in order to do so...\n\t\t\t */\n\t\t\trequestPasswordReset: function (resultBool, opts) {\n\t\t\t\treturn {\n\t\t\t\t\tprofile: this,\n\t\t\t\t\tresultBool: resultBool,\n\t\t\t\t};\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {boolean} result Result\n\t\t\t * @param {array} ids Group ids\n\t\t\t * @param {object} opts Request options\n\t\t\t */\n\t\t\tsetUserGroups(result, ids, opts) {\n\t\t\t\tthis.set('groupIds', ids, opts);\n\t\t\t},\n\t\t\t/**\n\t\t\t * @function\n\t\t\t * @param {null} response Null response\n\t\t\t * @param {object} opts Request options\n\t\t\t * @todo Can someone document why we are doing this?\n\t\t\t * The code that makes this call would already have reference to `this` in order to do so...\n\t\t\t */\n\t\t\tuserSelfRegistration: function (response, opts) {\n\t\t\t\treturn {profile: this};\n\t\t\t},\n\t\t};\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts) {\n\t\tsuper(attrs, opts);\n\n\t\tthis.canCreateAPITokens = false;\n\n\t\t/**\n\t\t * @memberof module:user/models/userProfile\n\t\t * @alias groups\n\t\t * @type {module:user/collections/groups}\n\t\t */\n\t\tthis.groups = new GroupsCollection([], {\n\t\t\tcomparator: 'name',\n\t\t\t// We do not have a good solution for paging selected items as of yet\n\t\t\tpager: {\n\t\t\t\tpageSize: 0x7fffffff,\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @return Lexicographic name (\"Doe, Jane\")\n\t */\n\tgetLexicographicName() {\n\t\treturn _.without(_.values(this.pick('name3', 'name1')), '').join(', ');\n\t}\n\n\t/**\n\t * returns true if profile instance is the logined user\n\t * @method\n\t * @return {boolean}\n\t */\n\tisMe() {\n\t\treturn Netx.userProfile.id === this.id;\n\t}\n\n\t/**\n\t * some(all?) of this will/should be caught via in-form validation js\n\t * @todo document\n\t */\n\t// TODO: we generally don't use the validate feature of Backbone.Model, so maybe we should take this out.\n\t// The form handler does the same kind of checking ...\n\t//\n\tvalidate(attrs, options) {\n\t\tvar err = [];\n\t\tif (attrs.userId < 1) {\n\t\t\t//only check for new user\n\t\t\tif (Netx.system && Netx.system.users && Netx.system.users.length) {\n\t\t\t\t_.each(Netx.system.users.models, function (u) {\n\t\t\t\t\tif (u.get('login').toLowerCase() == attrs.login.toLowerCase()) {\n\t\t\t\t\t\terr.push('Login <b>' + attrs.login + '</b> already in use.');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (!/^\\S+@\\S+\\.\\S+/.test(attrs.email)) {\n\t\t\terr.push('Invalid email address');\n\t\t}\n\t\tvar req = {\n\t\t\temail: 'email address',\n\t\t\tname1: 'first name',\n\t\t\tlogin: 'login',\n\t\t}; //TODO generalize (e.g. passed from server) - could read from form. :(\n\t\t_.each(req, function (name, prop) {\n\t\t\tif (attrs[prop] === '') {\n\t\t\t\terr.push('you must have a value for ' + name);\n\t\t\t}\n\t\t});\n\t\tif (attrs.password1 != attrs.password2) {\n\t\t\terr.push('passwords do not match');\n\t\t}\n\t\tif (err.length > 0) {\n\t\t\treturn '<ul><li>' + err.join('</li><li>') + '</li><ul>';\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Test for profile usertype by name\n\t * @method\n\t * @param {string} typeName Type name\n\t * @returns {boolean}\n\t */\n\tisType(typeName) {\n\t\t// keys in this object are all ucfirst ...\n\t\treturn (\n\t\t\tthis.get('type') == _.invert(userTypes)[_.ucfirst(typeName.toLowerCase())]\n\t\t);\n\t}\n\t/**\n\t * Test for profile usertype by name\n\t * @param {string} typeName Type name\n\t * @returns {boolean}\n\t */\n\tisTypeOrGreater(typeName) {\n\t\treturn (\n\t\t\tthis.get('type') >= _.invert(userTypes)[_.ucfirst(typeName.toLowerCase())]\n\t\t);\n\t}\n\n\t/**\n\t * Sets model(itself), calls requestPasswordReset x7 api\n\t * @method\n\t * @param {object} loginObj Login data\n\t */\n\tuserLogin(loginObj, opts) {\n\t\tthis.set({\n\t\t\tlogin: loginObj.username,\n\t\t\tpassword1: loginObj.password,\n\t\t});\n\t\treturn this.authenticate(opts);\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} data Data\n\t * @param {object} opts Options\n\t */\n\tparseAndSave(data, opts) {\n\t\t// Get only the values pertinant to our model's attributes\n\t\tvar parsed = _.pick.apply(\n\t\t\tnull,\n\t\t\t[data].concat(_.keys(this.constructor.GetDefaults())),\n\t\t);\n\n\t\t// No point in setting this here\n\t\t// neither setUser nor modifyCurrentUserData sets propertyNames and propertyValues\n\t\t// custom user data\n\t\t// model.setPropertyArrays(values);\n\n\t\t// Adjust notify boolean to int\n\t\tparsed.notify = parsed.notify ? 1 : 0;\n\n\t\t// TODO: https://jira.netx.net/browse/DAM-8541\n\t\tif (parseInt(parsed.type) === 0) {\n\t\t\tparsed.type = -1;\n\t\t}\n\n\t\t// Password has not changed\n\t\tif (\n\t\t\t!data.autogeneratePassword &&\n\t\t\t(parsed.password1 === '' || parsed.password2 === '')\n\t\t) {\n\t\t\tparsed = _.omit(parsed, 'password1', 'password2');\n\t\t}\n\t\t// Autogenerate password (send empty strings to server)\n\t\telse if (data.autogeneratePassword) {\n\t\t\tparsed.password1 = parsed.password2 = '';\n\t\t}\n\n\t\treturn this.set(parsed, opts).save(opts);\n\t}\n\n\t/**\n\t * Sets model(itself), calls requestPasswordReset x7 api\n\t * @method\n\t * @param {object} passObj Login data\n\t * @param {object} opts Request options\n\t */\n\tpasswordRequest(loginObj, opts) {\n\t\tthis.set({\n\t\t\tlogin: loginObj.login,\n\t\t\tpasswordRequest: '',\n\t\t});\n\t\treturn this.requestPasswordReset(opts).then(function (response) {\n\t\t\tthis.set({\n\t\t\t\tlogin: '',\n\t\t\t\tpasswordRequest: response.resultBool ? 'success' : 'failure',\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Sets model(itself), calls passwordReset x7 api\n\t * @method\n\t * @param {object} passObj Password data\n\t * @param {object} opts Request options\n\t */\n\tpasswordChange(passObj, opts) {\n\t\tthis.set({password: passObj.newPassword});\n\t\treturn this.passwordReset(opts).then(function (response) {\n\t\t\tthis.set({passwordReset: response.resultBool ? 'success' : 'failure'});\n\t\t\treturn response;\n\t\t});\n\t}\n\n\t/**\n\t * Sets model(itself) and calls userSelfRegistration x7 api\n\t * @method\n\t * @param {object} userObj User data\n\t * @param {object} opts Request options\n\t * todo: have Java send back useful information\n\t */\n\tregisterNewUser(userObj, opts) {\n\t\tthis.set(userObj);\n\t\treturn this.userSelfRegistration(opts).then(function (response) {\n\t\t\tthis.set({registration: 'success'});\n\t\t\treturn response;\n\t\t});\n\t}\n\n\tself() {\n\t\tconst self = super.self();\n\t\tif (self.password1 == null) self.password1 = '********';\n\t\tif (self.password2 == null) self.password2 = '********';\n\t\treturn self;\n\t}\n\n\t/**\n\t * Login as this user in a new browser.\n\t * Admin only\n\t * @method\n\t * @param {object} opts Request options\n\t * @returns {string} key\n\t */\n\tloginAs(opts) {\n\t\treturn this.getSessionKeyForUser(opts);\n\t}\n\n\t/**\n\t * Handles decoding the token for password restrictions if there are any\n\t * @param {object} loginTokenObj Login token data\n\t */\n\tdecodeUserToken(loginTokenOb) {\n\t\tthis.set(loginTokenOb);\n\t\tvar decodedTokenArr = window\n\t\t\t.atob(decodeURIComponent(this.get('token')))\n\t\t\t.split('~');\n\n\t\t// did java pass strict password info?\n\t\tif (decodedTokenArr.length > 3) {\n\t\t\tthis.set({\n\t\t\t\tminimumPasswordLength: decodedTokenArr[2].length\n\t\t\t\t\t? parseInt(decodedTokenArr[2])\n\t\t\t\t\t: 8,\n\t\t\t});\n\n\t\t\tvar strictMsg = '';\n\n\t\t\t// required password pattern\n\t\t\tif (decodedTokenArr[3].length) {\n\t\t\t\t_.each(\n\t\t\t\t\tdecodedTokenArr[3].split(','),\n\t\t\t\t\tfunction (pat, idx, all) {\n\t\t\t\t\t\tvar value = parseInt(pat.slice(0, -1)),\n\t\t\t\t\t\t\tleadIn =\n\t\t\t\t\t\t\t\tidx === all.length - 1\n\t\t\t\t\t\t\t\t\t? ' ' + i18n.t('i18n.passwordAnd') + ' '\n\t\t\t\t\t\t\t\t\t: idx > 0\n\t\t\t\t\t\t\t\t\t? ', '\n\t\t\t\t\t\t\t\t\t: ' ',\n\t\t\t\t\t\t\ti18nString = value > 1 ? '_plural' : '';\n\t\t\t\t\t\tswitch (pat.slice(-1)) {\n\t\t\t\t\t\t\t// required number count\n\t\t\t\t\t\t\tcase 'N':\n\t\t\t\t\t\t\t\ti18nString = 'i18n.passwordNumberCount' + i18nString;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// required lowercase count\n\t\t\t\t\t\t\tcase 'L':\n\t\t\t\t\t\t\t\ti18nString = 'i18n.passwordLowercaseCount' + i18nString;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// required uppercase count\n\t\t\t\t\t\t\tcase 'U':\n\t\t\t\t\t\t\t\ti18nString = 'i18n.passwordUppercaseCount' + i18nString;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t// required special character count\n\t\t\t\t\t\t\tcase 'S':\n\t\t\t\t\t\t\t\ti18nString = 'i18n.passwordSpecialCount' + i18nString;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstrictMsg += leadIn + i18n.t(i18nString, {count: value});\n\t\t\t\t\t},\n\t\t\t\t\tthis,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (strictMsg.length) {\n\t\t\t\tthis.set({\n\t\t\t\t\tstrictPasswordInstructions:\n\t\t\t\t\t\ti18n.t('i18n.passwordStrict') + ' ' + strictMsg,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * We have a fun issue with users\n\t * Our autocompletes do not return `login` but full names\n\t * We want labels to match up between a select from a collection\n\t * and a select from an autolookup - so...\n\t * @override\n\t * @return {string} Autocomplete label\n\t */\n\tgetAutocompleteLabel() {\n\t\treturn this.fullName() || this.getLabel();\n\t}\n\n\t/**\n\t * Converts propertyNames/propertyValues parallel arrays into usable object\n\t * @method\n\t * @returns {object} formData\n\t */\n\tgetPropertyObject() {\n\t\t// create a userValues object for the CustomForm collection\n\t\tvar formData = {},\n\t\t\tvalues = this.get('propertyValues');\n\t\t_.each(this.get('propertyNames'), function (propName, idx, all) {\n\t\t\tformData[propName] = values[idx];\n\t\t});\n\n\t\treturn formData;\n\t}\n\t/**\n\t * Converts form data object into propertyNames/propertyValues parallel arrays\n\t * and sets them\n\t * @method\n\t * @param {object} values Form values\n\t */\n\tsetPropertyArrays(values) {\n\t\t// overriding to store custom fields, the dam just loves parallel arrays\n\t\tvar propertyNames = [],\n\t\t\tpropertyValues = [],\n\t\t\tmodelAttrs = [];\n\n\t\t_.each(\n\t\t\tvalues,\n\t\t\t_.bind(function (empty, idx, all) {\n\t\t\t\tvar prefix = idx.slice(0, 4),\n\t\t\t\t\tattrName = idx.slice(4),\n\t\t\t\t\tisOurAttr;\n\n\t\t\t\tif (prefix === 'cfe-') {\n\t\t\t\t\tisOurAttr = _.keys(this.attributes).indexOf(attrName) !== -1;\n\t\t\t\t\tif (!isOurAttr) {\n\t\t\t\t\t\tpropertyNames.push(attrName);\n\t\t\t\t\t\tpropertyValues.push(all[idx]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tattrName = idx;\n\t\t\t\t\tisOurAttr = _.keys(this.attributes).indexOf(attrName) !== -1;\n\t\t\t\t}\n\n\t\t\t\tif (isOurAttr) {\n\t\t\t\t\tmodelAttrs[attrName] = all[idx];\n\t\t\t\t}\n\t\t\t}, this),\n\t\t);\n\n\t\tthis.set('propertyNames', propertyNames);\n\t\tthis.set('propertyValues', propertyValues);\n\n\t\treturn modelAttrs;\n\t}\n\n\t/**\n\t * Return a 'full name' string for the user.\n\t *\n\t * The DAM maintains 4 'name' fields (name1 - name4) but our UI only uses two of them (name1 & name3).\n\t * Other names (middle name, suffix) might exist out there somewhere, so we check for those too.\n\t *\n\t * @method\n\t * @returns {string} Full name.\n\t */\n\tfullName() {\n\t\treturn (\n\t\t\tthis.chain()\n\t\t\t\t// Get an object containing the four name fields:\n\t\t\t\t.pick('name1', 'name2', 'name3', 'name4')\n\t\t\t\t// Get an array of just the values (not the keys)\n\t\t\t\t.values()\n\t\t\t\t// Take out any empty strings\n\t\t\t\t.without('')\n\t\t\t\t// Join the rest with single spaces\n\t\t\t\t.join(' ')\n\t\t\t\t// Finish the chain().\n\t\t\t\t.value()\n\t\t);\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'UserProfile';\n\t}\n}\n","/**\n * Useful user-related properties\n */\nimport {i18n} from '@netx/core/i18n';\n\nexport let test = 'testString';\n\nexport let types = {\n\t// TODO: https://jira.netx.net/browse/DAM-8541\n\t0: i18n.t('i18n.userLevel0'), // No access\n\t1: i18n.t('i18n.userLevel1'), // Browser\n\t2: i18n.t('i18n.userLevel2'), // Consumer\n\t3: i18n.t('i18n.userLevel3'), // Importer\n\t4: i18n.t('i18n.userLevel4'), // Producer\n\t//5: \"User Level 5\",\n\t//6: \"User Level 6\",\n\t7: i18n.t('i18n.userLevel7'), // Manager\n\t8: i18n.t('i18n.userLevel8'), // Director\n\t9: i18n.t('i18n.userLevel9'), // Admin\n};\n\nexport let userSource = {\n\tINTERNAL: 0,\n\tLDAP: 1,\n\tSAML: 2,\n\tPING_ONE: 3,\n\tLIVE_CONNECT: 4,\n\tNETX: 5,\n};\n\nexport let groupErrors = {\n\t3008: i18n.t('i18n.errorGroupSelfRemovalWithFilter_3008'),\n\tdefault: i18n.t('i18n.error'),\n};\n\nexport default {test, types, userSource};\n","import Backbone from 'backbone';\n\n/**\n * NetX Enhancements to Backbone.sync:\n *\n * A HTTP header is added if Netx.Session is storing an authentication token.\n */\n// NOTE: this doesn't deal properly with multiple simultaneous syncs of the same model ... will that ever come up?\nBackbone.sync = _.wrap(Backbone.sync, function (sync, method, model, options) {\n\t// Add token header to options if we have a token.\n\tvar token = Netx.session?.getToken();\n\tif (token) {\n\t\toptions = options || {};\n\t\toptions.headers = _.extend(\n\t\t\t{\n\t\t\t\t'NX-Auth-Token': token,\n\t\t\t},\n\t\t\toptions.headers || {},\n\t\t);\n\t}\n\t// should be a no-op.\n\treturn sync(method, model, options);\n});\n\n/**\n * NetX Enhancements to Backbone.Events:\n *\n * retrigger\n *\n * A listener often needs to re-trigger an event on a different object, passing along the arguments it received.\n * Our current pattern do that looks like this:\n *\n * object.trigger.apply(object, ['eventName'].concat(_.toArray(arguments)));\n *\n * Backbone.Events.retrigger() takes an event name and an 'args' parameter that's either a normal array or an arguments object,\n * so that we may instead use this much prettier pattern:\n *\n * object.retrigger(eventName, arguments);\n *\n * @param {string} eventName\n * @param {arguments|array} args\n */\nBackbone.Events.retrigger = function (eventName, args) {\n\treturn this.trigger.apply(this, [eventName].concat(_.toArray(args)));\n};\n\nexport default Backbone;\n","/**\n * NetX extensions to jQuery.\n * It seems necessary to install these before Backbone is loaded in order to get\n * these new functions copied onto the scoped jQuery instances provided by Backbone.View.\n *\n * NOTE: Be sure to document new items in https://confluence.netx.net/display/DEV/X7+Library+Overrides%2C+Extensions+and+Mixins\n */\nimport jQuery from 'jquery';\n\nconst _show = jQuery.fn.show;\nconst _val = jQuery.fn.val;\n\n/**\n * Special event to listen for destroyed elements\n */\njQuery.event.special.destroyed = {\n\tremove(o) {\n\t\tif (o.handler) {\n\t\t\to.handler.apply(this, arguments);\n\t\t}\n\t},\n};\n\njQuery.extend(jQuery.expr[':'], {\n\t/**\n\t * Data pseudo selector\n\t */\n\tdata: jQuery.expr.createPseudo(function (dataName) {\n\t\treturn function (elem) {\n\t\t\treturn !!jQuery.data(elem, dataName);\n\t\t};\n\t}),\n});\n\n//\n// Added functions:\n//\njQuery.fn.extend({\n\t//\n\t// A HACK to support bootstrap-select: call refresh on the selectpicker plugin when we change the value.\n\t// (Really this should be done inside the plugin with a mutation observer).\n\t//\n\tval(val) {\n\t\t// Super\n\t\tvar ret = _val.apply(this, arguments);\n\n\t\t// If we have a selectpicker and we are trying to set a value (not get)\n\t\tif (this.data('selectpicker')) {\n\t\t\tif (!_.isUndefined(val)) {\n\t\t\t\tthis.selectpicker('render');\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t},\n\t/**\n\t * With $.nxVal, data-nx-value can override the nominal values of form elements.\n\t */\n\tnxVal() {\n\t\tvar d = this.data('nx-value');\n\t\tif (typeof d !== 'undefined') {\n\t\t\treturn d;\n\t\t} else {\n\t\t\treturn this.val();\n\t\t}\n\t},\n\t/**\n\t * turn the values of a set of checked checkboxes into an array --\n\t * you'd think jQuery would just do that, but no.\n\t * http://stackoverflow.com/questions/19766044/best-way-to-get-all-selected-checkboxes-values-in-jquery\n\t */\n\tboxesToVal() {\n\t\treturn this.find(':checked')\n\t\t\t.map(function () {\n\t\t\t\treturn this.value;\n\t\t\t})\n\t\t\t.get();\n\t},\n\t/**\n\t * NetX preferred method to enable/disable an element\n\t *\n\t * Disable element.\n\t * @returns {object} The jQuery object\n\t */\n\tdisable() {\n\t\tthis.attr('disabled', true);\n\t\tthis.addClass('disabled');\n\t\treturn this;\n\t},\n\t/**\n\t * NetX preferred method to enable/disable an element\n\t *\n\t * Enable element.\n\t * @returns {object} The jQuery object\n\t */\n\tenable() {\n\t\tthis.attr('disabled', false);\n\t\tthis.removeClass('disabled');\n\t\treturn this;\n\t},\n\t/**\n\t * NetX preferred method to enable/disable an element\n\t *\n\t * Enable/Disable element based on the bool passed.\n\t * @param {bool} bool True or false\n\t * @returns {object} The jQuery object\n\t */\n\tenableIf(bool) {\n\t\treturn bool ? this.enable() : this.disable();\n\t},\n\t/**\n\t * Check if typeahead menu is open\n\t * @method\n\t * @return {boolean}\n\t */\n\thasActiveTypeahead() {\n\t\tvar tt = this.data('ttTypeahead');\n\t\tvar $menu = tt && tt.menu.$node;\n\t\treturn $menu && $menu.hasClass('tt-open') && !$menu.hasClass('tt-empty');\n\t},\n\t/**\n\t * Check for collision between two elements\n\t * @param {object} b The jQuery object to test collision with\n\t * @returns {bool} Whether or not element has collision\n\t */\n\thasCollision(b) {\n\t\tvar aTop = this.offset().top,\n\t\t\taLeft = this.offset().left,\n\t\t\tbTop = b.offset().top,\n\t\t\tbLeft = b.offset().left;\n\n\t\treturn !(\n\t\t\taTop + this.outerHeight() < bTop ||\n\t\t\taTop > bTop + b.outerHeight() ||\n\t\t\taLeft + this.outerWidth() < bLeft ||\n\t\t\taLeft > bLeft + b.outerWidth()\n\t\t);\n\t},\n\t/**\n\t * Check if event is already bound to an element\n\t * @param {string} type The event type\n\t * @param {string} namespace The event namespace\n\t * @param {function} fn The function tied to the event\n\t * @returns {object} The jQuery object\n\t */\n\tisBound(type, namespace, fn) {\n\t\tvar data = jQuery._data(this[0], 'events')[type];\n\t\tif (typeof namespace === 'undefined') {\n\t\t\tnamespace = '';\n\t\t}\n\t\tif (data === undefined || data.length === 0) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof fn !== 'undefined') {\n\t\t\treturn -1 !== jQuery.inArray(fn, data);\n\t\t}\n\t\tvar found = false;\n\t\tjQuery.each(data, function (d) {\n\t\t\tif (typeof d === 'object') {\n\t\t\t\tif (\n\t\t\t\t\ttypeof d.type !== 'undefined' &&\n\t\t\t\t\td.type == type &&\n\t\t\t\t\ttypeof d.namespace !== 'undefined' &&\n\t\t\t\t\td.namespace == namespace\n\t\t\t\t) {\n\t\t\t\t\tfound = true;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\treturn found;\n\t},\n\t/**\n\t * Checks whether or not an element is hidden.\n\t * @returns {bool} True if hidden, else false\n\t */\n\tisHidden() {\n\t\treturn !this.is(':visible'); // http://stackoverflow.com/questions/178325/testing-if-something-is-hidden-with-jquery\n\t},\n\t/**\n\t * Checks whether or not an element is within a modal.\n\t * @returns {bool} True if modal, else false\n\t */\n\tisModal() {\n\t\treturn Boolean(this.closest('.modal').length);\n\t},\n\n\t/**\n\t * Checks the boolean data-nx-ignore condition of this element, for a particular key.\n\t * If not found on the current element, we search for it up the tree using .closest()\n\t * We can use this for overriding NX behaviours on various elements.\n\t *\n\t * So far the supported keys are all used by FormView form processing:\n\t *\n\t * 'change': (was data-nx-form-ignore) FormView ignores change events on fields for which this is set.\n\t * 'validate': (was data-nx-ignore-field) Form validation does not validate form fields for which this is set.\n\t * 'matrix': FormView's read-only mode will not disable form fields for which this is set.\n\t *\n\t * However, this is intended to be extensible for overriding any Netx.View behaviors that need it.\n\t *\n\t * @param {string} key\n\t * @returns {bool}\n\t */\n\tnxIgnores(key) {\n\t\t// Search for our key in this list of deprecations:\n\t\tvar deprecations = {\n\t\t\tchange: 'form-ignore',\n\t\t\tvalidation: 'ignore-field',\n\t\t};\n\n\t\tvar selector = '[data-nx-ignore~=\"' + key + '\"]';\n\t\t// hopefully undef.\n\t\tvar dep = deprecations[key];\n\t\tif (dep) {\n\t\t\tselector += ',[data-nx-' + dep + ']';\n\t\t}\n\n\t\tvar el = this.closest(selector);\n\t\tif (el.length) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Okay, deprecation is over, the rest is more logical.\n\t\t// Split by whitespace:\n\t\tvar keys = this.nxData('ignore');\n\t\tif (keys) {\n\t\t\tkeys = keys.split(/\\s+/);\n\t\t\treturn keys.indexOf(key) >= 0;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t/**\n\t * Adds a key to the data-nx-ignore attribute\n\t * @return this\n\t */\n\tnxIgnore(key) {\n\t\tlet keys = this.nxData('ignore') || '';\n\t\tkeys = _.uniq(keys.split(/\\s+/).concat(key)).join(' ');\n\t\tthis.nxData('ignore', keys);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Removes a key from the data-nx-ingore attribute\n\t * @return this\n\t */\n\tnxUnignore(key) {\n\t\tlet keys = this.nxData('ignore');\n\t\tif (keys == null) return this;\n\n\t\tkeys = keys\n\t\t\t.split(/\\s+/)\n\t\t\t.filter((k) => k !== key)\n\t\t\t.join(' ');\n\t\tthis.nxData('ignore', keys);\n\n\t\treturn this;\n\t},\n\n\t/**\n\t * Gets/sets a data-nx-* key (X7-specific element data.)\n\t */\n\tnxData(key, newVal) {\n\t\t// Return all `nx-<key>`\n\t\tif (!key) {\n\t\t\treturn _.pick(this.data(), (v, k) => k.match(/^nx/));\n\t\t}\n\n\t\t// Set new value\n\t\tif (newVal != null) {\n\t\t\treturn this.data(`nx-${key}`, newVal);\n\t\t}\n\n\t\t// Return specific `nx-<key>`\n\t\treturn this.data(`nx-${key}`);\n\t},\n\n\t/**\n\t * Removes a data-nx-* key.\n\t */\n\tnxRemoveData(key) {\n\t\tkey = 'nx-' + key;\n\t\t// https://api.jquery.com/removeData/\n\t\tthis.removeData(key);\n\t\tthis.removeAttr(key);\n\t\treturn;\n\t},\n\t/**\n\t * wrap $.show() to also remove our deprecated 'hide' class\n\t */\n\tshow() {\n\t\tif (this.hasClass('hide')) {\n\t\t\t// TODO: Discuss this deprecation\n\t\t\t// console.warn('v8 \"hide\" class is deprecated, gone in 8.10');\n\t\t\tthis.removeClass('hide');\n\t\t}\n\t\treturn _show.apply(this, arguments);\n\t},\n\t/**\n\t * turn an array value into the state of a set of checkboxes\n\t */\n\tvalToBoxes(val) {\n\t\t_.each(this.find('checkbox'), function (c) {\n\t\t\tjQuery(c).prop('checked', val.indexOf(c.value) > -1);\n\t\t});\n\t},\n\t/**\n\t * Set or get the zIndex of an element\n\t * Brought over from jQuery UI\n\t * http://jqueryui.com/\n\t * @param {integer} zIndex The zIndex to set for the element (if omitted it will get the zIndex of the element)\n\t * @returns {*} Either the jQuery object or the zIndex of the element\n\t */\n\tzIndex(zIndex) {\n\t\tif (zIndex !== undefined) {\n\t\t\treturn this.css('zIndex', zIndex);\n\t\t}\n\n\t\tif (this.length) {\n\t\t\tvar elem = $(this[0]),\n\t\t\t\tposition,\n\t\t\t\tvalue;\n\t\t\twhile (elem.length && elem[0] !== document) {\n\t\t\t\t// Ignore z-index if position is set to a value where z-index is ignored by the browser\n\t\t\t\t// This makes behavior of this function consistent across browsers\n\t\t\t\t// WebKit always returns auto if the element is positioned\n\t\t\t\tposition = elem.css('position');\n\t\t\t\tif (\n\t\t\t\t\tposition === 'absolute' ||\n\t\t\t\t\tposition === 'relative' ||\n\t\t\t\t\tposition === 'fixed'\n\t\t\t\t) {\n\t\t\t\t\t// IE returns 0 when zIndex is not specified\n\t\t\t\t\t// other browsers return a string\n\t\t\t\t\t// we ignore the case of nested elements with an explicit value of 0\n\t\t\t\t\t// <div style=\"z-index: -10;\"><div style=\"z-index: 0;\"></div></div>\n\t\t\t\t\tvalue = parseInt(elem.css('zIndex'), 10);\n\t\t\t\t\tif (!isNaN(value) && value !== 0) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telem = elem.parent();\n\t\t\t}\n\t\t}\n\n\t\treturn 0;\n\t},\n\t/**\n\t * Purge a selection. That is, remove from this jQuery array any selection\n\t * that is a descendant of one of the arguments. Useful for removing the contents\n\t * of child views from a parent view's selection.\n\t *\n\t * This is different from jQuery's :not() selector, which can only filter a\n\t * selection based on its own contents. purge() specifically removes items in the\n\t * selection array which have one of the provided arguments as an ancestor.\n\t *\n\t * Parameters are either a set of DOM elements, or a single array containing such a set of elements (ala jQuery)\n\t */\n\tpurge() {\n\t\t// flexible args\n\t\tif (arguments.length === 0) {\n\t\t\treturn this;\n\t\t} // an optimization for the most common case\n\n\t\tif (arguments.length === 1 && _.isArray(arguments[0])) {\n\t\t\t// if we were passed an array,\n\t\t\treturn this.purge.apply(this, arguments[0]); // convert that array to arguments\n\t\t}\n\n\t\tvar args = _.toArray(arguments);\n\t\tvar result = this.filter(function (idx, el) {\n\t\t\tvar allowed = true;\n\t\t\t_.each(args, function (arg) {\n\t\t\t\tif (allowed === false) {\n\t\t\t\t\treturn;\n\t\t\t\t} // optimization\n\t\t\t\tif ($(arg).has(el).length) {\n\t\t\t\t\tallowed = false;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn allowed;\n\t\t});\n\t\treturn result;\n\t},\n});\n\n// Turn tap events into clicks\njQuery.event.special.tapToClick = {\n\tsetup: function (data, namespaces) {\n\t\tvar $elem = $(this);\n\t\t$elem\n\t\t\t.bind('touchstart', $.event.special.tapToClick.handler)\n\t\t\t.bind('touchmove', $.event.special.tapToClick.handler)\n\t\t\t.bind('touchend', $.event.special.tapToClick.handler);\n\t},\n\tteardown: function (namespaces) {\n\t\tvar $elem = $(this);\n\t\t$elem\n\t\t\t.unbind('touchstart', $.event.special.tapToClick.handler)\n\t\t\t.unbind('touchmove', $.event.special.tapToClick.handler)\n\t\t\t.unbind('touchend', $.event.special.tapToClick.handler);\n\t},\n\thandler: function (event) {\n\t\tvar $elem = $(this);\n\t\t$elem.data(event.type, 1);\n\t\tif (event.type === 'touchend' && !$elem.data('touchmove')) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.click();\n\t\t} else if ($elem.data('touchend')) {\n\t\t\t$elem.removeData('touchstart touchmove touchend');\n\t\t}\n\t},\n};\n\nexport default jQuery;\n","// Modernizr\nimport 'core-libs/modernizr/modernizr';\n// Polyfills\nimport 'core-libs/polyfills/polyfills-netx';\nimport window from 'global/window';\n// Hammerjs (for cross platform gestures)\nimport Hammer from 'hammerjs';\n// need this loaded\nimport '@netx/core-app/collections/singleton';\nimport {setGlobal} from '@netx/core-next';\n// Create global event dispatcher\nimport '@netx/core-next/instance/dispatcher';\nimport '@netx/core-next/instance/localStore';\nimport {getPrefixedLogger} from '@netx/core-next/instance/logger';\nimport {appRouter} from '@netx/core-next/instance/router';\nimport NetxURL from '@netx/core-next/url';\n// Load in backbone\nimport './lib/backbone-netx';\n// jQuery overrides/enhancements\nimport './lib/jquery-netx';\n////////////////////////////////////////////\n// !Netx global namespace\n////////////////////////////////////////////\n////////////////////////////////////////////\n// App utility libraries\n////////////////////////////////////////////\n// Underscore overrides/enhancements\nimport './lib/underscore-netx';\n\nconst logger = getPrefixedLogger('bootstrap');\n\n// Netx global namespace\n\n// Setup global namespace\n/**\n * @namespace\n * @static\n */\nconst Netx = window.Netx || {};\nObject.assign(Netx, {\n\tversion: '3.11.5.0f839ec2e',\n\t/**\n\t * @namespace\n\t * @static\n\t */\n\tcustom: {},\n\tgetUserLevel: () => -1,\n\tgetPreference: () => false,\n\tsetPreference: () => true,\n\t/**\n\t * Various DAM-related static properties\n\t * @memberOf Netx\n\t * @namespace\n\t * @static\n\t * @property {array} states - A list of states (provided by the DAM)\n\t * @property {array} countries - A list of countries (provided by the DAM)\n\t * @property {array} attributes - A list of i18n labels for asset properties\n\t * @property {array} assetAttributes.ids - Map from label to IDs for asset metadata types\n\t * @property {array} assetAttributes.numberTypes - Labels, warnings & validators for the various numeric sub-types\n\t * @property {array} assetAttributes.types - Map from IDs to labels for asset metadata types\n\t * @property {array} search - Labels and metadata for the various fields of a searchAssetListObjects() RPC call, as used by Netx.Collections.Assets & others\n\t * @todo refactor 'attributes' to 'attributeLabels'\n\t * @todo assetAttributes.ids and .types are redundant; refactor.\n\t * @private\n\t */\n\tproperties: {},\n\t/**\n\t * Netx.router is our instance of Backbone.Router\n\t * @memberOf Netx\n\t * @namespace\n\t * @static\n\t */\n\trouter: {\n\t\troutes: {},\n\t},\n\t/**\n\t * We create a dummy Netx.user.profile here describing an unauthenticated user;\n\t * This will be overwritten with real user data when we authenticate.\n\t * @memberOf Netx\n\t * @namespace\n\t * @static\n\t */\n\tuser: {},\n\t/**\n\t * When controllers need a View to have a public name -- i.e. when several listeners need to operate on the same View --\n\t * the controller can put that Views in Netx.views; it can be named anything, but by convention it's usually given the\n\t * name of the template, which by convention is the View class name lowercased.\n\t * For instance, Netx.views.assetDetailView is an instance of Netx.Views.AssetDetailView used by the asset controller.\n\t * @memberOf Netx\n\t * @namespace\n\t * @static\n\t */\n\tviews: {},\n\t/**\n\t * Netx.Collections namespace\n\t * @memberof Netx\n\t * @namespace\n\t * @static\n\t */\n\tCollections: {},\n\t/**\n\t * Netx.Models namespace maintains model class definitions\n\t * @memberof Netx\n\t * @namespace\n\t * @static\n\t */\n\tModels: {},\n\t/**\n\t * Netx.Routers namespace\n\t * @memberof Netx\n\t * @namespace\n\t * @static\n\t */\n\tRouters: {},\n\t/**\n\t * Netx.ShareableTypes holds objects describing things that the DAM can share, along with verbiage to describe those things.\n\t * @memberof Netx\n\t * @namespace\n\t * @static\n\t */\n\tShareableTypes: {},\n\tURL: NetxURL,\n\t/**\n\t * Netx.Views namespace\n\t * @memberof Netx\n\t * @namespace\n\t * @static\n\t */\n\tViews: {},\n});\nexport default Netx;\n\n// this is dead, leaving in the event of a cannnot access x of undefined\n// should not come up... think all references have been removed\nwindow.custom = {};\n\n////////////////////////////////////////////\n\n////////////////////////////////////////////\n\nwindow.Hammer = Hammer;\n////////////////////////////////////////////\n// !App utility libraries\n////////////////////////////////////////////\n\n////////////////////////////////////////////\n// Netx module intialization\n////////////////////////////////////////////\n/**\n * Modules already initialized indexed by namespace\n * @type {Array<any>}\n */\nconst initializedModules = [];\n/**\n * Modules currently initializing indexed by namespace and storing the promise to the original initialization call for that module\n * @type {object}\n */\nconst initializingModules = {};\n\n/**\n * Module initialization helper\n * @function\n * @global\n * @param {Array<any>|object} modules Module(s) to initialize\n * @param {object} opts Options\n */\n// https://stackoverflow.com/questions/37787123/is-it-possible-to-let-webpacks-system-import-use-ajax-for-progress-events\n// One day we could look into extending the webpack functionality with our own plugin to allow for XHR requests of\n// all of our bundles - then we could use a `progress` event on it and dispatch refined progress\nconst initializeModule = function (modules, opts = {}) {\n\t// Convert to array if not already\n\tmodules = Array.isArray(modules) ? modules : [modules];\n\n\treturn new Promise((resolve, reject) => {\n\t\tvar idx = 0,\n\t\t\tnewModules = 0,\n\t\t\troutesToAdd = {},\n\t\t\ttotal = modules.length;\n\n\t\t// Go on to next module (or resolve)\n\t\tfunction next() {\n\t\t\tidx++;\n\t\t\tidx < total ? init() : finished();\n\t\t}\n\n\t\t// Initialize module\n\t\tfunction init() {\n\t\t\tvar m = modules[idx],\n\t\t\t\tnamespace = m.namespace;\n\n\t\t\tlogger.debug('initializing module >', namespace);\n\n\t\t\t// Check if already initialized\n\t\t\tif (_.contains(initializedModules, namespace)) {\n\t\t\t\tlogger.debug('module already initialized >', namespace);\n\t\t\t\treturn next();\n\t\t\t}\n\n\t\t\t// Are we already initializing this module - listen for its completion\n\t\t\t// and then continue on\n\t\t\tif (!_.isUndefined(initializingModules[namespace])) {\n\t\t\t\tlogger.debug('module already initializing >', namespace);\n\t\t\t\treturn initializingModules[namespace].then(next);\n\t\t\t}\n\n\t\t\t// We are initializing this module now\n\t\t\tdispatcher.trigger(\n\t\t\t\t'netx:initializing:module',\n\t\t\t\tnamespace,\n\t\t\t\t(idx / total) * 100,\n\t\t\t\topts.deferred,\n\t\t\t\topts.loadUrl,\n\t\t\t);\n\n\t\t\t// Store promise\n\t\t\tinitializingModules[namespace] = m.initialize().then(\n\t\t\t\tfunction (routes) {\n\t\t\t\t\tlogger.debug('module initialized >', namespace);\n\t\t\t\t\t// If the module was deferred remove its wildcard route now\n\t\t\t\t\tif (opts.deferred && appRouter.routes[m.namespace + '(/*anything)']) {\n\t\t\t\t\t\tdelete appRouter.routes[m.namespace + '(/*anything)'];\n\t\t\t\t\t}\n\t\t\t\t\t// Add routes to queue\n\t\t\t\t\troutes && _.extend(routesToAdd, routes);\n\t\t\t\t\t// Store namespace in modules initialized array\n\t\t\t\t\tinitializedModules.push(namespace);\n\t\t\t\t\t// A new module was initialized\n\t\t\t\t\tnewModules++;\n\t\t\t\t\t// Remove initialize promise from the initializing array\n\t\t\t\t\tdelete initializingModules[namespace];\n\t\t\t\t\t// Dispatche event\n\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t'netx:initialized:module',\n\t\t\t\t\t\tnamespace,\n\t\t\t\t\t\t((idx + 1) / total) * 100,\n\t\t\t\t\t\topts.deferred,\n\t\t\t\t\t\topts.loadUrl,\n\t\t\t\t\t);\n\t\t\t\t\t// Next module or resolve\n\t\t\t\t\tnext();\n\t\t\t\t},\n\t\t\t\t(err) => {\n\t\t\t\t\tconsole.error(err);\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\n\t\t// When all modules are initialized\n\t\tfunction finished() {\n\t\t\t// Defer to allow anything hooked on any of the module initialized promises to respond\n\t\t\t_.defer(function () {\n\t\t\t\t// Only if new modules were intialized\n\t\t\t\tif (newModules) {\n\t\t\t\t\t// Add all new routes\n\t\t\t\t\tappRouter.addRoutes(routesToAdd);\n\t\t\t\t\t// Load route url when all modules are loaded\n\t\t\t\t\topts.loadUrl && appRouter.ready && Backbone.history.loadUrl();\n\t\t\t\t}\n\t\t\t});\n\t\t\tresolve(modules);\n\t\t}\n\n\t\t// Start\n\t\tinit();\n\t});\n};\n\n/**\n * @event module:netx#netx:load:module\n * @param {array|object} modules Module object or an array of module objects\n * @param {object} opts Options\n */\ndispatcher.on('netx:load:module', function (modules, opts) {\n\topts = opts || {};\n\tinitializeModule(\n\t\tmodules,\n\t\t_.extend(\n\t\t\t{\n\t\t\t\tdeferred: false,\n\t\t\t\tloadUrl: false,\n\t\t\t},\n\t\t\t_.pick(opts, 'deferred', 'loadUrl'),\n\t\t),\n\t).then(\n\t\tfunction () {\n\t\t\t_.isFunction(opts.initialized) && opts.initialized();\n\t\t},\n\t\tfunction (err) {\n\t\t\t_.isFunction(opts.error) && opts.error(err);\n\t\t},\n\t);\n});\n\n/**\n * @event module:netx#netx:load:deferred:module\n * @param {array|object} modules Module object or an array of module objects\n * @param {object} opts Options\n */\ndispatcher.on('netx:load:deferred:module', function (modules, opts) {\n\tdispatcher.trigger(\n\t\t'netx:load:module',\n\t\tmodules,\n\t\t_.extend({deferred: true}, opts),\n\t);\n});\n////////////////////////////////////////////\n// !Netx module intialization\n////////////////////////////////////////////\n","import axios from 'axios';\nimport {\n\tNetxThemeMode,\n\tNetxThemePref,\n\tNETX_THEME_MODES,\n} from '@netx/core-components/Theme/constants';\nimport type {\n\tThemeMode,\n\tNetxThemeStyles,\n\tNetxCustomCssProperties,\n} from '@netx/core-components/Theme/types';\nimport {netxThemeModeToThemeMode} from '@netx/core-components/Theme/utils/netxThemeModeToThemeMode';\nimport {typedEntries} from '@netx/core-next/utils/object/typedEntries';\nimport config from '@netx/core-app/config';\nimport {isBrandPortal} from '@netx/core-cms-next/utils/isBrandPortal';\nimport {getPreference} from '@netx/core-user-next/utils/getPreference';\nimport {URL} from '@netx/core-next/url';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport {setGlobal} from '@netx/core-next/utils/setGlobal';\n\nconst customPropertyPrefix = config.CSS_CUSTOM_PROPERTY_PREFIX;\n\n// Will store all css properties here\nlet currentProperties: NetxCustomCssProperties = {\n\tupdated: '0',\n\t'login-background-assetId': '',\n\t'light-on-primary-custom': 'false',\n\t'light-on-secondary-custom': 'false',\n\t'dark-on-primary-custom': 'false',\n\t'dark-on-secondary-custom': 'false',\n\t...config.CSS_CUSTOM_PROPERTIES,\n};\n\nlet currentThemeMode: ThemeMode = NetxThemeMode.LIGHT;\nlet fetchedCSS = false;\n\nconst documentElement = document.documentElement;\nconst style = documentElement.style;\n\n/**\n * @function\n * @param key Style property key\n * @param value Style property value\n */\nconst _setStyleProperty = (key: string, value?: string) => {\n\t// setting a value\n\tif (value) {\n\t\tstyle.setProperty(key, value);\n\t\tdispatcher.trigger('css:variable:updated', key, value);\n\t\treturn;\n\t}\n\n\t// clearing a value\n\n\t// Look for default value\n\tconst _key = `${currentThemeMode}-${key.replace(\n\t\tcustomPropertyPrefix,\n\t\t'',\n\t)}` as keyof NetxThemeStyles;\n\tconst defaultValue = config.CSS_CUSTOM_PROPERTIES[_key];\n\n\tdefaultValue\n\t\t? style.setProperty(key, defaultValue)\n\t\t: // If no default value, remove the property\n\t\t style.removeProperty(key);\n\n\tdispatcher.trigger('css:variable:updated', key, defaultValue);\n};\n\n/**\n * Get the current theme mode\n * @function\n * @return Theme mode\n */\nexport const getThemeMode = () =>\n\tnetxThemeModeToThemeMode(getPreference(NetxThemePref.USER_SELECTED));\n\nsetGlobal({getThemeMode});\n\n/**\n * Get style property from DOM\n * @function\n * @return Style property\n */\nexport const getStyleProperty = (key: string) => {\n\tconst style = getComputedStyle(document.body);\n\treturn style.getPropertyValue(`${customPropertyPrefix}${key}`).trim();\n};\n\nsetGlobal({getStyleProperty});\n\n/**\n * @function\n * @returns string | undefined\n */\nexport const getLoginBackgroundUrl = () =>\n\t!isBrandPortal()\n\t\t? `${URL.loginBackground}?cb=${currentProperties.updated || Date.now()}`\n\t\t: undefined;\n\nsetGlobal({getLoginBackgroundUrl});\n\n/**\n * Changes address bar color in supported browsers\n * @function\n */\nexport const setMetaThemeColor = (value: string) =>\n\tdocument\n\t\t.querySelector('meta[name=theme-color]')\n\t\t?.setAttribute('content', value);\n\nsetGlobal({setMetaThemeColor});\n\n/**\n * Set style property on DOM\n * @function\n * @param key Style property key\n * @param value Style property value\n */\nexport const setStyleProperty = (\n\tkey: keyof NetxCustomCssProperties,\n\tvalue: string,\n) => {\n\tObject.assign(currentProperties, {[key]: value});\n\n\t// We use this for cachebusting the background image since last update\n\tif (key === 'updated') return false;\n\n\tconst simpleKey = key.replace(`${currentThemeMode}-`, '');\n\n\tif (simpleKey === 'primary') setMetaThemeColor(value);\n\n\t_setStyleProperty(`${customPropertyPrefix}${simpleKey}`, value);\n\n\treturn true;\n};\n\nsetGlobal({setStyleProperty});\n\n/**\n * @function\n * @param name Theme mode name\n * @fires module:netx#theme:toggled\n */\nexport const setThemeMode = (\n\tname?: NetxThemeMode | ThemeMode,\n\tforce = false,\n) => {\n\tname = netxThemeModeToThemeMode(name);\n\n\tconst themeChanged = currentThemeMode !== name;\n\n\tcurrentThemeMode = name as ThemeMode;\n\n\ttypedEntries(currentProperties).forEach(([key, value]) => {\n\t\tif (\n\t\t\t!key.includes(`${currentThemeMode}-`) ||\n\t\t\tgetStyleProperty(key) === value\n\t\t)\n\t\t\treturn;\n\t\tsetStyleProperty(key, value);\n\t});\n\n\tif (themeChanged) {\n\t\t// Clear all possible theme-mode classes\n\t\tNETX_THEME_MODES.forEach((mode) =>\n\t\t\tdocumentElement.classList.remove(`theme-${mode}`),\n\t\t);\n\t\t// Add selected theme-mode class\n\t\tdocument.documentElement.classList.add(`theme-${currentThemeMode}`);\n\t}\n\n\t// Dispatch event for the rest of the app to listen to\n\t(themeChanged || force) && dispatcher.trigger('theme:toggled', name);\n};\n\nsetGlobal({setThemeMode});\n\n/**\n * When user prefs are available we can set the theme mode to the user's selection\n * @event module:app#app:user:prefs:ready\n */\n// TODO: these `once` dispatchers on the global scope of a file are hard to test from multiple ways\n// having a hard time testing the the initialize thoroughly and this having not `fetchedCSS`\ndispatcher.once('app:user:prefs:ready', () => {\n\twindow\n\t\t.matchMedia('(prefers-color-scheme: dark)')\n\t\t.addEventListener('change', (event) => {\n\t\t\tif (!fetchedCSS) return;\n\t\t\tsetThemeMode(getThemeMode());\n\t\t});\n\t// we will call set theme mode when the css is done fetching\n\tif (!fetchedCSS) return;\n\tsetThemeMode(getThemeMode());\n});\n\nconst initialize = async () => {\n\t// Set the default theme mode class\n\tdocumentElement.classList.add(`theme-${currentThemeMode}`);\n\n\t// Load css properties from server\n\treturn await axios\n\t\t.get<NetxCustomCssProperties>(\n\t\t\t`${URL.customCssProperties}?cb=${Date.now()}`,\n\t\t\t{\n\t\t\t\tresponseType: 'json',\n\t\t\t},\n\t\t)\n\t\t.then(({data}) => {\n\t\t\t// Store all data\n\t\t\tcurrentProperties = {\n\t\t\t\t...config.CSS_CUSTOM_PROPERTIES,\n\t\t\t\t...data,\n\t\t\t};\n\t\t\t// Set current theme (will loop over data and set based on theme mode)\n\t\t\tsetThemeMode(getThemeMode(), true);\n\n\t\t\tfetchedCSS = true;\n\t\t});\n};\n\nexport default () => initialize();\n","import {getPrefixedLogger} from '@netx/core-next/instance/logger';\nimport type {Action} from './bootstrap';\n\nconst logger = getPrefixedLogger('core/legacyActionManager');\n\nconst navigation: Action[] = [];\n\nexport const ExtendLegacyAction = (action: Action | Action[]) => {\n\tif (Array.isArray(action)) return action.forEach(ExtendLegacyAction);\n\n\tif (!action?.event)\n\t\tthrow new Error(`bad argument to \\`ExtendLegacyAction\\`: ${action}`);\n\n\tconst existingAction = navigation.find((a) => a.event === action.event);\n\tif (!existingAction)\n\t\treturn logger.warn(\n\t\t\t`action \\`${action.event}\\` has not been defined > use \\`RegisterLegacyAction\\` in place of \\`ExtendLegacyAction\\``,\n\t\t);\n\n\tObject.assign(existingAction, action);\n};\n\nexport const FindLegacyAction = (actionKey: string) =>\n\tnavigation.find((a) => a.event === actionKey);\n\nexport const RegisterLegacyAction = (action: Action | Action[]) => {\n\tif (Array.isArray(action)) return action.forEach(RegisterLegacyAction);\n\n\tif (!action?.event)\n\t\tthrow new Error(`bad argument to \\`RegisterLegacyAction\\`: ${action}`);\n\n\tconst existingAction = navigation.find((a) => a.event === action.event);\n\tif (existingAction)\n\t\treturn logger.warn(\n\t\t\t`action \\`${action.event}\\` has already been defined > use \\`ExtendLegacyAction\\` in place of \\`RegisterLegacyAction\\``,\n\t\t);\n\n\tnavigation.push(action);\n};\n\nexport default {\n\tExtendLegacyAction,\n\tFindLegacyAction,\n\tRegisterLegacyAction,\n};\n","/**\n * Netx.Collection extends Backbone.Collection and allows us to add functionality\n * outside of the default Backbone methods and properties\n * @class\n */\n\nimport Backbone from 'backbone';\nimport Rpc from 'core-libs/backbone.rpc';\nimport Model from './netx-model';\nimport {URL} from '@netx/core-next/url';\nimport {localStore} from '@netx/core-next/instance/localStore';\n\nconst BBCollection = Backbone.Collection;\nBBCollection.prototype.reset = _.wrap(\n\tBBCollection.prototype.reset,\n\tfunction (reset, models, options = {}) {\n\t\t// WARNING: Do not get it in your head, as I did, that we can and should trigger 'add'/'remove' events here\n\t\t// it really messes up backgrid and I am sure there is a reason why reset is used in some cases and that it\n\t\t// is so sneaky about its operations\n\n\t\t// With reset Backbone basically just circumvents all the official channels of removing models and does it all in hush hush secrecy\n\t\t// Two things:\n\t\t// We want tour models to know that they have been removed so they can have a chance to clean themselves up\n\t\t// We want to handle any local storage cleanup resulting from this reset as well\n\n\t\t!options.filtering &&\n\t\t\tthis.each((model) => {\n\t\t\t\t// Reference to collection\n\t\t\t\tif (model.removeCollectionReference) {\n\t\t\t\t\tmodel.removeCollectionReference(this);\n\t\t\t\t}\n\t\t\t\t// Local storage\n\t\t\t\tif (_.isFunction(this.modelRemoved)) {\n\t\t\t\t\tthis.modelRemoved(model);\n\t\t\t\t}\n\t\t\t});\n\n\t\t// Super - let backbone do its thing\n\t\treset.call(this, models, options);\n\n\t\t// Let any models that came in know\n\t\t// This also deals with `new Netx.Collection( models )` as in Bacbone.Collection constructor\n\t\t// they use this.reset( models, _.extend( { silent: true }, options ) );\n\t\tthis.each((model) => {\n\t\t\t// Reference to collection\n\t\t\tif (model.addCollectionReference) model.addCollectionReference(this);\n\t\t\t// Local storage\n\t\t\tif (_.isFunction(this.modelAdded)) this.modelAdded(model);\n\t\t});\n\t},\n);\n\n// Make a Collection we can extend from in other classes\nclass ES6Collection {\n\t/** @override */\n\tconstructor(models, opts) {\n\t\tBBCollection.apply(this, arguments);\n\t}\n}\n_.extend(ES6Collection.prototype, BBCollection.prototype, {\n\t/**\n\t * The underscore `indexOf` extension here is always returning -1\n\t * but a vanilla `indexOf` works just fine :/\n\t * @override\n\t */\n\tindexOf(model) {\n\t\treturn this.models.indexOf(model);\n\t},\n\t/**\n\t * Check for our es6 instance instead\n\t * @override\n\t */\n\t_isModel(model) {\n\t\treturn (\n\t\t\tmodel instanceof Backbone.ES6Model || model instanceof Backbone.Model\n\t\t);\n\t},\n});\nBackbone.ES6Collection = ES6Collection;\n\nexport class Collection extends ES6Collection {\n\t/** @type {boolean} */\n\tget isCollection() {\n\t\treturn this.constructor.__isCollection__;\n\t}\n\n\t// Whelp\n\t// Need to fix in backbone.rpc - the model get's a property of `syncing`\n\t// whether the call is a syncable (read) or not\n\t// And since our loading indication relies on the `request:read` event and the `sync` event\n\t// we will get false loading positives by checking `this.syncing`\n\t// So, check for the `read` method in our current calls list\n\tget isSyncing() {\n\t\treturn this._rpc && this.syncing && this._rpc.callsByName.read != null;\n\t}\n\n\t/** @type {object} */\n\tget methods() {\n\t\treturn {};\n\t}\n\n\t/** @type {object} */\n\tget parsers() {\n\t\treturn {};\n\t}\n\n\t/** @type {object} */\n\tget rpc() {\n\t\treturn false;\n\t}\n\n\tget url() {\n\t\treturn URL.api;\n\t}\n\n\t/** @type {object} */\n\tget templateProps() {\n\t\treturn this;\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {};\n\t}\n\n\t/**\n\t * @override\n\t * @param {array} models Models array\n\t * @param {object} options Collection options\n\t */\n\tconstructor(models, opts = {}) {\n\t\t// Circular reference\n\t\t// Model = require('./netx-model.js');\n\n\t\topts.model = opts.model || Model;\n\t\tsuper(models, opts);\n\n\t\tconst rpc = opts.rpc != null ? opts.rpc : this.rpc;\n\t\tif (rpc === true) {\n\t\t\tthis._rpc = new Rpc();\n\t\t}\n\n\t\tthis.sorter = opts.sorter;\n\n\t\t/**\n\t\t * Override this in your collection if you want to store your models locally\n\t\t * If you create two collections of the same type and wish to keep the data seperate in the store\n\t\t * override this in your initialization of the collection and give a different name\n\t\t * Like var secondaryNotifications = new Netx.Collection.Notifications([], { localStorageKey: 'secondary-notifications' })\n\t\t * @note: This will only store the attributes - you can not store object references, etc\n\t\t * @param {object} options\n\t\t */\n\t\tthis.localStorageKey = opts.localStorageKey || null;\n\t\t/** @type {number} */\n\t\tthis.maxStore = opts.maxStore || 100;\n\n\t\t/**\n\t\t * @type {string}\n\t\t */\n\t\tthis.filterStr = opts.filterStr || '';\n\n\t\t/**\n\t\t * Tracks models in local storage\n\t\t * @memberof module:core/lib/netx-collection\n\t\t * @alias stored\n\t\t * @type {array}\n\t\t */\n\t\tthis.stored = [];\n\n\t\t// Hey, listen!\n\t\tthis.listenTo(this, 'add', this.modelAdded)\n\t\t\t.listenTo(this, 'change', this.modelChanged)\n\t\t\t.listenTo(this, 'remove', this.modelRemoved)\n\t\t\t.listenTo(this, 'sync', () => {\n\t\t\t\tthis.syncedOnce = true;\n\t\t\t});\n\n\t\t// Load data\n\t\t// Defer to give everything a chance to finish initialization\n\t\t// TODO: deferLocalStorage property here is not used elsewhere, and is weird\n\t\t// TODO: defering pager listening\n\t\t// allows inherrting class construtors\n\t\t// to go first, not ideal, hard to test\n\t\t_.defer(() => {\n\t\t\tif (!this.deferLocalStorage && this.localStorageKey) {\n\t\t\t\tthis.loadLocalStorage();\n\t\t\t}\n\n\t\t\tif (this.pager) {\n\t\t\t\tthis.listenTo(this.pager, 'change:itemTotal', (pager, total) => {\n\t\t\t\t\tthis.trigger('updatedTotal', this);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * We have some models that utilize the key `attributes` for things like attribute templates\n\t * @override\n\t * @param {number|object|string|Backbone.Model} obj Either a model, raw model attribute data, or a model cid/id\n\t * @return {Backbone.Model}\n\t */\n\tget(obj) {\n\t\tif (obj == null) {\n\t\t\treturn void 0;\n\t\t}\n\n\t\t// There is no reason, I can find in the backbone code to be passing models to this - you could just use\n\t\t// `collection.get(<id/cid>)`\n\t\t// I suppose it is for brevity, they do not have to check if the object is a model or raw attributes when looping\n\t\t// over the data provided in add/reset/set, it can just check if the model exists in the collection by passing the object or model\n\t\t// But to assume that the existence of an `attributes` property makes this a model is not good for us\n\t\tif (obj.attributes && this._isModel(obj)) {\n\t\t\tif (obj.cid && this._byId[obj.cid]) {\n\t\t\t\treturn this._byId[obj.cid];\n\t\t\t}\n\t\t\tobj = obj.attributes;\n\t\t}\n\t\t// At this point it should either by an id, cid or a raw object of attributes (set/reset/add)\n\t\t// `_byId` is an object indexed twice, once by id and then cid\n\t\t// If you are ever having issues with this method, check the state of `this._byId`.\n\t\treturn this._byId[obj] || this._byId[this.modelId(obj)];\n\t}\n\n\t/**\n\t * Add model to session storage\n\t * @note It will only store the attributes (and only the attributes which do not reference other objects directly)\n\t * This is because we can only store json strings in the local/session storage\n\t * @param {Netx.Model} model Instance of Netx.Model\n\t */\n\taddToLocalStorage(model) {\n\t\tif (!model || !this.localStorageKey) return;\n\t\t// Keep in bounds of this.maxStore\n\t\tthis.checkMaxStore();\n\t\t// Model key\n\t\tconst keyName = [this.localStorageKey, model.id].join('');\n\t\t// To persist or not\n\t\tconst persist = model.storeOptions.persist;\n\n\t\t// Set the value\n\t\t// TODO: implement this in the model itself? (model.toLocalStorage() or similar.)\n\t\tlocalStore.set(\n\t\t\tkeyName,\n\t\t\tthis.parseLocalStorageModelOut(_.clone(model.self())),\n\t\t);\n\t\t// Add to beginning of this.stored array\n\t\tthis.stored.unshift(model.id);\n\t\t// Keep until explicitly removed\n\t\tif (persist === true) {\n\t\t\tlocalStore.persist(keyName);\n\t\t}\n\t\t// Expires\n\t\telse if (_.isString(persist) || _.isNumber(persist)) {\n\t\t\tlocalStore.expire(keyName, persist);\n\t\t}\n\t}\n\n\t/**\n\t * Enforce this.maxStore\n\t * @method\n\t */\n\tcheckMaxStore() {\n\t\tif (!this.maxStore || this.stored.length < this.maxStore - 1) return;\n\n\t\t// Amount to rmeove\n\t\tconst count = this.stored.length - this.maxStore + 1;\n\t\t// Items to remove\n\t\tconst items = _.last(this.stored, count);\n\t\t// Loop over and remove them\n\t\t_.each(items, (id) => this.removeFromLocalStorage(this.get(id)));\n\t}\n\n\t/**\n\t * Clear out session storage for this.localStorageKey\n\t * @method\n\t */\n\tclearLocalStorage() {\n\t\tif (!this.localStorageKey) return;\n\n\t\t// Match all my model keys\n\t\tconst regexp = new RegExp(['^', this.localStorageKey, '.*'].join(''));\n\t\tlocalStore.remove(localStore.keys(regexp));\n\t\tthis.stored = [];\n\t}\n\n\t/**\n\t * Perform a deeper clone than the Backbone standard: also clone the collection's models.\n\t * @method\n\t */\n\tdeepClone() {\n\t\tconst clone = this.clone();\n\t\tclone.reset([], {silent: true});\n\t\tclone.set(this.map((model) => model.attributes));\n\n\t\t// Make sure our pagers match as well\n\t\t// todo: this would fail for collections\n\t\t// that don't create a pager on init\n\t\t// like netx-collection\n\t\tif (this.pager) {\n\t\t\tclone.pager.set({...this.pager.attributes});\n\t\t}\n\n\t\treturn clone;\n\t}\n\n\t/**\n\t * @method\n\t * @param {array} ids Model ids to delete\n\t */\n\tdeleteMultiple(ids) {\n\t\tif (ids.isCollection) {\n\t\t\tids = ids.ids();\n\t\t}\n\n\t\treturn $.when.apply(\n\t\t\t$,\n\t\t\tthis.chain() // .chain() lets us perform a stream of tasks.\n\t\t\t\t.filter((item) => ids.indexOf(item.id) > -1) // returns just the objects on the list.\n\t\t\t\t.invoke('destroy', {wait: true}) // calls 'destroy' on each one of those objects, waits for server response\n\t\t\t\t.value(), // returns an array of promises, one returned by each 'destroy' call.\n\t\t);\n\t}\n\n\t/**\n\t * Now that all model views contain the [data-nx-model-id] attribute on their elements,\n\t * this utility function can find a model given a DOM event from that model's view\n\t */\n\tgetModelIdFromEvent(e) {\n\t\tconst id = parseInt(\n\t\t\t$(e.target).closest('[data-nx-model-id]').attr('data-nx-model-id'),\n\t\t);\n\t\treturn this.get(id);\n\t}\n\n\t/**\n\t * Get size information on localStorage\n\t * http://blog.blakesimpson.co.uk/read/46-check-size-of-localstorage-usage-in-chrome\n\t * @method\n\t * @deprecate\n\t * @note not to be used heavily\n\t * @return {object} totals\n\t */\n\tgetLocalStorageSize() {\n\t\tlet amount = 0;\n\t\tlet total = 0;\n\t\tlet myTotal = 0;\n\t\tconst regexp = new RegExp(['^', this.localStorageKey, '.*'].join(''));\n\n\t\tfor (let x in localStorage) {\n\t\t\tamount = (localStorage[x].length * 2) / 1024 / 1024;\n\t\t\ttotal += amount;\n\t\t\tif (x.match(regexp)) myTotal += amount;\n\t\t}\n\n\t\tconsole.log('My total: ' + myTotal.toFixed(10) + ' MB');\n\t\tconsole.log('Total: ' + total.toFixed(10) + ' MB');\n\n\t\treturn {\n\t\t\tmyTotal: myTotal,\n\t\t\ttotal: total,\n\t\t};\n\t}\n\n\t/**\n\t * @method\n\t * @return {number} Total\n\t */\n\tgetTotal() {\n\t\tif (this.length && this.pager) {\n\t\t\tconst total = this.pager.get('itemTotal');\n\t\t\tif (total < this.length) {\n\t\t\t\treturn this.length;\n\t\t\t}\n\t\t\treturn total;\n\t\t}\n\n\t\tif (_.isFunction(this.assetCount)) {\n\t\t\treturn this.assetCount();\n\t\t}\n\n\t\treturn this.length;\n\t}\n\n\t/*\n\t * @method\n\t * @param {number} page Page number\n\t * @param {object} opts Options\n\t */\n\tgotoPage(page, opts) {\n\t\tif (page === this.curPage) {\n\t\t\treturn new $.Deferred().resolveWith(this);\n\t\t}\n\n\t\tthis.curPage = parseInt(page);\n\t\t// Getting a page for detail view\n\t\treturn this.fetch(_.extend({duplicateQueryPolicy: 'abort'}, opts));\n\t}\n\n\t/**\n\t * Return an array of the IDs of the models in this collection.\n\t * @method\n\t */\n\tids() {\n\t\treturn this.pluck(this.model.prototype.idAttribute);\n\t}\n\n\t/**\n\t * @method\n\t * @return {boolean}\n\t */\n\tisFiltered() {\n\t\treturn this.filterStr !== '' || this.filtered === true;\n\t}\n\n\t/**\n\t * Load session storage - happens at this.initialize\n\t * Looks for this.localStorageKey in sessionStorage and loads the data if available\n\t */\n\tloadLocalStorage() {\n\t\tif (!this.localStorageKey) return;\n\n\t\tthis.trigger('request:read', this, null);\n\n\t\t// Reset stored array\n\t\tthis.stored = [];\n\t\t// My model keys\n\t\tconst regexp = new RegExp(['^', this.localStorageKey, '.*'].join(''));\n\t\t// My stored models\n\t\tconst things = localStore.get(localStore.keys(regexp));\n\t\t// We have some things\n\t\tif (things && _.isArray(things)) {\n\t\t\t_.each(things, (t) => {\n\t\t\t\t// TODO: implement this in the model itself? (model.fromLocalStorage(t) or similar.)\n\t\t\t\tt = this.parseLocalStorageModelIn(t);\n\t\t\t\tif (!t) return;\n\t\t\t\t// Silent to avoid a loop\n\t\t\t\t// Collection hears model added- check to add to local storage - adds to local storage - check to add to loval storage - repeat repeat\n\t\t\t\t// I feel like adding an additional property isn't worth it when we have things like \"silent\" at our disposal\n\t\t\t\tthis.add(t, {silent: true});\n\t\t\t});\n\t\t\tthis.stored = this.ids();\n\t\t}\n\t\tthis.trigger('sync', this);\n\t}\n\n\t/**\n\t * Model was added to collection\n\t * @method\n\t * @param {Netx.Model} model Instance of Netx.Model\n\t */\n\tmodelAdded(model) {\n\t\tif (this.localStorageKey && model.storeOptions.persist) {\n\t\t\tthis.addToLocalStorage(model);\n\t\t}\n\t}\n\n\t/**\n\t * Model was changed in collection\n\t * @method\n\t * @param {Netx.Model} model Instance of Netx.Model\n\t */\n\tmodelChanged(model) {\n\t\tif (!this.localStorageKey) return;\n\n\t\t// Model key\n\t\tconst keyName = [this.localStorageKey, model.id].join('');\n\t\t// To persist or not\n\t\tconst persist = model.storeOptions.persist;\n\n\t\t// Set the value\n\t\tconst parsed = this.parseLocalStorageModelOut(_.clone(model.self()));\n\t\tif (!parsed) return;\n\n\t\tlocalStore.set(keyName, parsed);\n\t\t// Keep until explicitly removed\n\t\tif (persist === true) {\n\t\t\tlocalStore.persist(keyName);\n\t\t}\n\t\t// Expire\n\t\telse if (_.isString(persist) || _.isNumber(persist)) {\n\t\t\tlocalStore.expire(keyName, persist);\n\t\t}\n\t}\n\n\t/**\n\t * Model was removed from collection\n\t * @method\n\t * @param {Netx.Model} model Instance of Netx.Model\n\t */\n\tmodelRemoved(model) {\n\t\tif (!model || !this.localStorageKey) return;\n\n\t\tthis.removeFromLocalStorage(model);\n\t}\n\n\t/**\n\t * We often need to suggest a name for a new model. \"New Model\" works the first time, but\n\t * after that it's not a unique name any more, so we want to try \"New Model 2\", \"New Model 3\", et cetera,\n\t * until we find a good one.\n\t *\n\t * @method\n\t * @param {string} prefix Prefix of the model name (\"New Model\"), or i18n key of same (\"i18n.newModel\")\n\t * \t\t\t\t\t\t\t\t\t\t\t\t\t\t (i18n key should implement the numeric index via i18next plurals: http://i18next.com/translate/pluralSimple)\n\t * @param {string} attr The 'name' attribute of this model. If undefined, we'll try \"name\", \"title\" and \"label\" in that order.\n\t * @returns {string} Returns a unique name, not yet used by any model in this collection.\n\t */\n\tmakeUniqueName(prefix, attr) {\n\t\tlet index = 1;\n\t\tlet translate = false;\n\t\tlet title = prefix;\n\n\t\tif (prefix.match(/^i18n\\./)) {\n\t\t\ttranslate = true;\n\t\t\t// Translate prefix.\n\t\t\ttitle = i18n.t(prefix, {count: index});\n\n\t\t\t// If pluralization isn't working, we could get an endless loop.\n\t\t\t// Test that here:\n\t\t\tconst testTitle = i18n.t(prefix, {count: index + 1});\n\t\t\tif (title === testTitle) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t\"makeUniqueName: i18n key '\" + prefix + \"' is not pluralized.\",\n\t\t\t\t); // http://i18next.com/translate/pluralSimple\n\t\t\t\treturn title;\n\t\t\t}\n\t\t}\n\n\t\t// Check the easy case: there are no other models!\n\t\tif (!this.length) {\n\t\t\treturn title;\n\t\t}\n\n\t\t// If attr wasn't given, try to guess it.\n\t\tif (!attr) {\n\t\t\tif (this.at(0).has('name')) {\n\t\t\t\tattr = 'name';\n\t\t\t} else if (this.at(0).has('title')) {\n\t\t\t\tattr = 'title';\n\t\t\t} else if (this.at(0).has('label')) {\n\t\t\t\tattr = 'label';\n\t\t\t} else {\n\t\t\t\tthrow 'Undefined attr for model name';\n\t\t\t}\n\t\t}\n\n\t\t// If we can find a model matching this title, make a new title & try again.\n\t\tconst obj = {\n\t\t\t[attr]: title,\n\t\t};\n\t\twhile (this.findWhere(obj)) {\n\t\t\tindex++;\n\t\t\tif (translate) {\n\t\t\t\ttitle = i18n.t(prefix, {count: index});\n\t\t\t} else {\n\t\t\t\ttitle = prefix + ' ' + index;\n\t\t\t}\n\t\t\tobj[attr] = title;\n\t\t}\n\n\t\treturn title;\n\t}\n\n\t/**\n\t * Modify the model object that came back from local storage before inserting it into the collection\n\t * @method\n\t * @param {object} obj Model data object\n\t * @return {object} Model data\n\t */\n\tparseLocalStorageModelIn(obj) {\n\t\treturn obj;\n\t}\n\n\t/**\n\t * Modify the model object that is going to local storage before it does\n\t * @method\n\t * @param {object} obj Model attributes\n\t * @return {object} Model data\n\t */\n\tparseLocalStorageModelOut(obj) {\n\t\treturn obj;\n\t}\n\n\t/**\n\t * Remove model from session storage\n\t * @method\n\t * @param {Netx.Model} model Instance of Netx.Model\n\t */\n\tremoveFromLocalStorage(model) {\n\t\tif (!model || !this.localStorageKey) return;\n\n\t\t// Find by id in this.stored\n\t\tconst idx = _.indexOf(this.stored, model.id);\n\t\tif (idx > -1) {\n\t\t\tthis.stored.splice(idx, 1);\n\t\t}\n\t\tlocalStore.remove([this.localStorageKey, model.id].join(''));\n\t}\n\n\t/**\n\t * this.self() returns just the data in a collection that's reflected in the DAM.\n\t * It can be used in method definitions to omit models or model attributes that should *not* be synced.\n\t * We use it for cases where the data is structured differently in the\n\t * model than on the wire, and for models/collections that want to have additional attributes\n\t * for local-only reasons. .self() is intended to be called from method-definition functions,\n\t * when the API call is looking for a single JSON object to represent the entire collection.\n\t *\n\t * The default Netx.Collection.self() implemetation uses this.invoke() to call model.self() on each model,\n\t * and returns the resulting array.\n\t *\n\t * @return {object}\n\t * @method\n\t */\n\tself() {\n\t\treturn this.invoke('self');\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} str Filter\n\t */\n\tsetFilterStr(str) {\n\t\tstr = str != null ? str.toString() : '';\n\n\t\tif (this.filterStr === str) return new $.Deferred().resolve();\n\n\t\tthis.filterStr = str;\n\t\t// Reset to first page\n\t\tthis.pager.firstPage({fetch: false});\n\n\t\treturn this[this.preferredFetchMethod || 'fetch']({\n\t\t\tduplicateQueryPolicy: 'abort',\n\t\t});\n\t}\n\n\t/**\n\t * Set sort is to be used when sorting on the server with a `sortDTO`\n\t * Otherwise, use the standard backbone/backgrid sorting or override this method\n\t * @method\n\t * @param {string} field Field name\n\t * @param {string} order Order\n\t * @param {object} opts Request options\n\t */\n\tsetSort(field, order, opts) {\n\t\tif (!this.sorter) return;\n\t\tthis.sorter.setSort(field, order, opts);\n\t}\n\n\t/**\n\t * Subscribe to websocket\n\t * @method\n\t */\n\tsubscribe() {\n\t\treturn Model.prototype.subscribe.apply(this, arguments);\n\t}\n\n\t/**\n\t * Message received from websocket channel\n\t * @method\n\t * @param {object} data Message data\n\t */\n\tsubscriptionMessage(data) {\n\t\tconst model = this.get(data.id);\n\t\tswitch (data.action) {\n\t\t\tcase 'add':\n\t\t\t\t!model && this.add(data.dto);\n\t\t\t\tbreak;\n\t\t\tcase 'edit':\n\t\t\t\tmodel ? model.set(data.dto) : this.add(data.dto);\n\t\t\t\tbreak;\n\t\t\tcase 'delete':\n\t\t\t\tmodel && this.remove(model);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n\t * Takes an autocomplete object and returns model with enough data\n\t * for a selection interface\n\t * @method\n\t * @param {object} data Data (an object of autocomplete data)\n\t * @return {module:core/lib/netx-model} Instance of `netx-model`\n\t * @example\n\t * <collection>.toSelectedItemFromAutocomplete({\n\t * id: \"1\",\n\t * text: \"Item label\"\n\t * });\n\t */\n\ttoSelectedItemFromAutocomplete(data, additionalAttrs = {}, opts = {}) {\n\t\tconst model = this.model;\n\t\tconst modelProto = model.prototype;\n\n\t\tlet id = parseInt(data.id);\n\t\tif (_.isNaN(id)) {\n\t\t\tid = data.id;\n\t\t}\n\t\t// This is where computed keys would be cool\n\t\treturn new model(\n\t\t\t{\n\t\t\t\t[modelProto.idAttribute]: id,\n\t\t\t\t[modelProto.titleAttribute]: data.text,\n\t\t\t\t...additionalAttrs,\n\t\t\t},\n\t\t\topts,\n\t\t);\n\t}\n\n\t/**\n\t * Unsubscribe from websocket\n\t * @method\n\t */\n\tunsubscribe() {\n\t\t// If models have an `unsubscribe` method, call them\n\t\tif (_.isFunction(this.model.prototype.unsubscribe)) {\n\t\t\tthis.invoke('unsubscribe');\n\t\t}\n\t\t// Super (of sorts)\n\t\treturn Model.prototype.unsubscribe.apply(this, arguments);\n\t}\n\n\t/**\n\t * @method\n\t */\n\tbatchJobComplete() {\n\t\treturn Model.prototype.batchJobComplete.apply(this, arguments);\n\t}\n\n\t/**\n\t * @method\n\t */\n\tbatchJobError() {\n\t\treturn Model.prototype.batchJobError.apply(this, arguments);\n\t}\n\n\t/**\n\t * @method\n\t */\n\tbatchJobProgress() {\n\t\treturn Model.prototype.batchJobProgress.apply(this, arguments);\n\t}\n\n\t/**\n\t * @method\n\t */\n\tgetRestLoadedMessage() {\n\t\treturn Model.prototype.getRestLoadedMessage.apply(this, arguments);\n\t}\n\n\t/**\n\t * @method\n\t */\n\tgetRestLoadingMessage() {\n\t\treturn Model.prototype.getRestLoadingMessage.apply(this, arguments);\n\t}\n\n\t/**\n\t * @method\n\t */\n\ttrackBatchJob() {\n\t\treturn Model.prototype.trackBatchJob.apply(this, arguments);\n\t}\n\n\t/**\n\t * A scoped version of jQuery.when(), that always uses 'this' as the context for the promise it returns.\n\t * It's also able to accept an array of promises, so we don't need to use .apply to make it go.\n\t * @method\n\t */\n\twhen() {\n\t\treturn Model.prototype.when.apply(this, arguments);\n\t}\n\n\t/**\n\t * Object Polling:\n\t * pollUntil() tells any model/collection to do something repeatedly until a conditional test passes,\n\t * emitting appropriate events along the way. Use this to follow DAM changes to certain object properties,\n\t * or to check status until a status change.\n\t *\n\t * @param function doneTest A function that returns true if polling should finish. (Required)\n\t * @param string eventPrefix Event string prefix for polling events. If undefined, no events are triggered.\n\t * @param function pollMethod A function that causes a poll. Must return a promise. Defaults to this.fetch;\n\t * @param number pollInterval Milliseconds between polls. Defaults to 500.\n\t * @method\n\t */\n\tpollUntil() {\n\t\treturn Model.prototype.pollUntil.apply(this, arguments);\n\t}\n\tpausePolling() {\n\t\treturn Model.prototype.pausePolling.apply(this, arguments);\n\t}\n\tresumePolling() {\n\t\treturn Model.prototype.resumePolling.apply(this, arguments);\n\t}\n\n\t//////////////////////////////////////////\n\t// LAZYLOADING\n\t//////////////////////////////////////////\n\t/**\n\t * @method\n\t * @param {number} index Index\n\t */\n\tcheckReachedBeginning(index) {\n\t\tthis.reachedBeginning = this.reachedBeginning || index === 0;\n\t\treturn this;\n\t}\n\n\t/**\n\t * @method\n\t * @param {number} index Index\n\t */\n\tcheckReachedEnd(index) {\n\t\tthis.reachedEnd =\n\t\t\tthis.reachedEnd ||\n\t\t\tindex + this.pager.get('pageSize') >= this.pager.get('itemTotal');\n\t\treturn this;\n\t}\n\n\t/**\n\t * @method\n\t */\n\tinitializeLazyLoad() {\n\t\tthis.reachedBeginning = this.reachedEnd = false;\n\t\tthis.lazyStartIndex = this.pager.get('startIndex');\n\t\tthis.lowestIndex = this.highestIndex = this.lazyStartIndex;\n\n\t\t// No routing\n\t\tthis.pager.set({\n\t\t\t// TODO: collections/models should not need to know about routes/routing\n\t\t\troutesToPage: false,\n\t\t});\n\n\t\tthis.checkReachedBeginning(this.lazyStartIndex)\n\t\t\t.checkReachedEnd(this.lazyStartIndex)\n\t\t\t.stopListening(this.pager, 'change:startIndex', this.startIndexUpdated)\n\t\t\t.listenTo(this.pager, 'change:startIndex', this.startIndexUpdated);\n\t}\n\n\t/**\n\t * @method\n\t * @param {boolean} forward Forward\n\t * @deprecate - unused\n\t * @return {number} Items loading\n\t */\n\tlazyLoadItems(forward) {\n\t\tif (\n\t\t\tthis.syncing ||\n\t\t\t(!forward && this.reachedBeginning) ||\n\t\t\t(forward && this.reachedEnd)\n\t\t)\n\t\t\treturn false;\n\n\t\tconst pageSize = this.pager.get('pageSize');\n\t\tconst page = forward\n\t\t\t? (this.highestIndex + pageSize) / pageSize + 1\n\t\t\t: (this.lowestIndex - pageSize) / pageSize + 1;\n\n\t\tif (page < 1 || page > this.pager.get('pageTotal')) return false;\n\n\t\tthis.lazyLoadedForward = forward;\n\n\t\t// Update pager\n\t\tthis.pager.set(\n\t\t\t{\n\t\t\t\tcurrentPage: page,\n\t\t\t},\n\t\t\t{\n\t\t\t\tat: forward ? this.length : 0,\n\t\t\t\tmerge: true,\n\t\t\t\tremove: false,\n\t\t\t\tsort: false,\n\t\t\t},\n\t\t);\n\n\t\t// Calculate items that will load\n\t\tif (this.pager.get('pageTotal')) {\n\t\t\tlet diff = page * pageSize - this.pager.get('itemTotal');\n\t\t\tif (diff < 0) diff = 0;\n\t\t\treturn pageSize - diff;\n\t\t}\n\n\t\treturn pageSize;\n\t}\n\n\t/**\n\t * @method\n\t * @param {module:app/models/pager} pager Pager\n\t * @param {number} startIndex Start index\n\t */\n\tstartIndexUpdated(pager, startIndex) {\n\t\t// Was not able to set at lazy load initialize\n\t\tif (this.lazyStartIndex == null) {\n\t\t\tthis.lazyStartIndex = startIndex;\n\t\t}\n\n\t\tif (this.lowestIndex == null || startIndex < this.lowestIndex) {\n\t\t\tthis.lowestIndex = startIndex;\n\t\t}\n\n\t\tif (this.highestIndex == null || startIndex > this.highestIndex) {\n\t\t\tthis.highestIndex = startIndex;\n\t\t}\n\n\t\tthis.checkReachedBeginning(startIndex);\n\t\tthis.checkReachedEnd(startIndex);\n\t}\n\t//////////////////////////////////////////\n\t// !LAZYLOADING\n\t//////////////////////////////////////////\n\n\t//////////////////////////////////////////\n\t// HOUSEKEEPING\n\t//////////////////////////////////////////\n\taddSubCollection() {\n\t\treturn Model.prototype.addSubCollection.apply(this, arguments);\n\t}\n\tremoveSubCollection() {\n\t\treturn Model.prototype.removeSubCollection.apply(this, arguments);\n\t}\n\taddSubModel() {\n\t\treturn Model.prototype.addSubModel.apply(this, arguments);\n\t}\n\tremoveSubModel() {\n\t\treturn Model.prototype.removeSubModel.apply(this, arguments);\n\t}\n\t/**\n\t * Severs all ties to the world so it can be eligible for garbage collection\n\t * @method\n\t */\n\tgarbageCollect() {\n\t\tthis._rpc && this._rpc.garbageCollect();\n\n\t\t// Let go of any websocket channels\n\t\tthis.unsubscribe();\n\t\t// Empty out models - see our reset override\n\t\tthis.reset([]);\n\t\t// Kill all event listeners\n\t\tthis.stopListening().off();\n\n\t\tif (this.pager) {\n\t\t\tthis.pager.garbageCollect();\n\t\t}\n\t\tdelete this.subModels;\n\n\t\t// Loop over sub collection and trigger their cleanup\n\t\tif (_.isObject(this.subCollections)) {\n\t\t\t_.each(this.subCollections, function (c) {\n\t\t\t\tc.garbageCollect();\n\t\t\t});\n\t\t\tdelete this.subCollections;\n\t\t}\n\n\t\tthis.garbageCollected = true;\n\n\t\treturn this;\n\t}\n\t//////////////////////////////////////////\n\t// !HOUSEKEEPING\n\t//////////////////////////////////////////\n\n\t// TODO: Implement the class method Load() for testing\n\t// see Netx.Model definition for implementation guidelines'\n\t//\n\t/**\n\t * @method\n\t * @static\n\t * unused\n\t */\n\tstatic Load(selection) {\n\t\tconst collection = new this();\n\t\tif (selection != null) {\n\t\t\tcollection.selection = selection;\n\t\t}\n\t\treturn collection.fetch().then(() => {\n\t\t\treturn collection;\n\t\t});\n\t}\n\n\t/** @type {boolean} */\n\tstatic get __isCollection__() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Collection';\n\t}\n}\n\nexport default Collection;\n","/**\n * A Netx.Menu defines menus, composed of actions, for use with the data-action-context tag in our templates.\n * It is a more flexible & more centralized syntax than our previous system. Menus are also use to define\n * tabsets and other navigational structures.\n *\n * The 'actions' property of a Netx.Menu is an array that can contain either the names of actions\n * (defined in Netx.Actions) or arrays of same. The arrays are used to define sections in situations\n * where that is useful.\n *\n * The action entries match the \"event\" property of defined actions.\n *\n * This object is not parsed until the moment a menu is rendered. Nonexistent actions are ignored.\n * @class\n */\nimport Base from './netx-model';\nimport {FindLegacyAction} from '@netx/core/legacyActionManager';\n\nclass Menu extends Base {\n\t/** @type {object} */\n\tget defaults() {\n\t\treturn {\n\t\t\tlabel: '', // in some situations (such as submenus) a menu may need a label\n\t\t\tactions: [], // actions in the menu; see example below.\n\t\t};\n\t}\n\n\t/** @type {boolean} */\n\tget isMenu() {\n\t\treturn this.constructor.__isMenu__;\n\t}\n\n\t/*\n\t * return the names of all the actions in a menu, i.e. flatten the menu\n\t */\n\tflatten() {\n\t\treturn this.get('actions'); // TODO: flatten\n\t}\n\n\t/*\n\t * return a flat list of all the action objects (that exist) referenced by a menu\n\t */\n\ttoActions() {\n\t\tvar actions = [];\n\t\t_.each(this.flatten(), function (actionName) {\n\t\t\tif (actionName.isMenu) {\n\t\t\t\tactions = actions.concat(actionName.toActions());\n\t\t\t} else if (_.isArray(actionName)) {\n\t\t\t\t_.map(actionName, function (name) {\n\t\t\t\t\tvar action = FindLegacyAction(actionName);\n\t\t\t\t\taction && actions.push(action);\n\t\t\t\t});\n\t\t\t} else if (_.isString(actionName)) {\n\t\t\t\tvar action = FindLegacyAction(actionName);\n\t\t\t\taction && actions.push(action);\n\t\t\t} else {\n\t\t\t\tconsole.warn('undefined action ' + actionName);\n\t\t\t}\n\t\t});\n\t\treturn actions;\n\t}\n\n\t/** @type {boolean} */\n\tstatic get __isMenu__() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Menu';\n\t}\n}\n\nexport default Menu;\n","/**\n * Given an object it will return a protected version that object\n * @param object Object\n * @return Object\n */\nexport const protectObjectProxy = <T extends Record<string | symbol, any>>(\n\tobject: T,\n) => {\n\treturn new Proxy(object, {\n\t\t// Will return any object/arrays as their own copies\n\t\t// elminating the ability to pollute items in the object\n\t\tget(obj, prop) {\n\t\t\tconst value = obj[prop];\n\t\t\tif (typeof value === 'object') return JSON.parse(JSON.stringify(value));\n\t\t\treturn value;\n\t\t},\n\t\t// No setting\n\t\tset(obj, prop, value) {\n\t\t\treturn false;\n\t\t},\n\t});\n};\n\nexport default protectObjectProxy;\n","/**\n * Netx.Model extends Backbone.Model, adding just a few handy methods.\n * @class\n * @extends Backbone.ES6Model\n */\n// Setup ajv for data validation\nimport Ajv from 'ajv';\nimport Backbone from 'backbone';\nimport Rpc from 'core-libs/backbone.rpc';\nimport {URL} from '@netx/core-next/url';\nimport {protectObjectProxy} from '@netx/core/utils/protectObjectProxy';\n\n// these are circular references\n// import {batchJobs} from '@netx/core-app/collections/singleton/batchJobs';\n// import {legacyWebsocket} from '@netx/core-app/collections/singleton/websocket';\n\n// Wrap an optional error callback with a fallback error event.\n// This is from the backbone.js file and allows us to override the save\n// method so that we can support rejecting promises when validation fails\nconst wrapError = (model, options) => {\n\tconst error = options.error;\n\toptions.error = function (resp) {\n\t\tif (error) error.call(options.context, model, resp, options);\n\t\tmodel.trigger('error', model, resp, options);\n\t};\n};\n\nconst ajv = new Ajv({\n\tallErrors: true,\n\tcoerceTypes: true,\n\t$data: true,\n\tmissingRefs: 'ignore',\n\tuseDefaults: 'empty',\n\tnullable: true,\n});\n\n/**\n * Get default values from schema\n * Used to define `this.defaults`\n * @function\n * @param {schema} schema Schema\n * @return {object} Defaults\n */\nconst getDefaultsFromSchema = (schema) => {\n\tconst {properties} = schema;\n\tconst defaults = {};\n\tfor (let key in properties) {\n\t\tif (properties.hasOwnProperty(key)) {\n\t\t\tconst defaultValue = properties[key].default;\n\t\t\tif (typeof defaultValue !== 'undefined') {\n\t\t\t\tdefaults[key] = defaultValue;\n\t\t\t}\n\t\t}\n\t}\n\treturn defaults;\n};\n\nconst BBModel = Backbone.Model;\n// Make a Model we can extend from in other classes\nclass ES6Model {\n\tget schema() {\n\t\treturn this.constructor.Schema;\n\t}\n\n\t/** @override */\n\tconstructor(attrs, opts) {\n\t\tconst schema = this.schema;\n\t\tif (schema) {\n\t\t\t// If we have not explicitely setup our own validation\n\t\t\t// validate via ajv and our provided schema\n\t\t\tif (!this.validate) {\n\t\t\t\tconst ValidateSchema = ajv.compile(schema);\n\t\t\t\tthis.validate = (attrs, opts) => {\n\t\t\t\t\tconst isValid = ValidateSchema(attrs);\n\t\t\t\t\treturn !isValid ? [...ValidateSchema.errors] : false;\n\t\t\t\t};\n\t\t\t}\n\n\t\t\t// Set our defaults based on the schema provided\n\t\t\t// If you are coming from the old backbone stuff and want to use schema and extend from another schema\n\t\t\t// you will need to do that in your schema file and not in the model \"defaults\" getter that we have\n\t\t\t// been using\n\t\t\tObject.defineProperty(this, 'defaults', {\n\t\t\t\tget() {\n\t\t\t\t\treturn getDefaultsFromSchema(schema);\n\t\t\t\t},\n\t\t\t\tconfigurable: false,\n\t\t\t});\n\t\t}\n\n\t\tBBModel.call(this, attrs, opts);\n\n\t\t// Always represent `id` on the model's attributes regardless of what the key actually is\n\t\t// I have yet to find a model that is utilizing a key of id for anything but the id\n\t\t// DEVNOTE: Setting this after call to backbone model as `this.attributes` does not exist until then\n\t\tif (schema && schema.primary !== 'id') {\n\t\t\tObject.defineProperty(this.attributes, 'id', {\n\t\t\t\tget: () => {\n\t\t\t\t\treturn this.id;\n\t\t\t\t},\n\t\t\t\tconfigurable: false,\n\t\t\t});\n\t\t}\n\t}\n}\n// Object.assign(ES6Model.prototype, BBModel.prototype);\n_.extend(ES6Model.prototype, BBModel.prototype);\nBackbone.ES6Model = ES6Model;\n\nclass Model extends ES6Model {\n\t/** @override */\n\tget idAttribute() {\n\t\tconst schema = this.schema;\n\t\t// The backbone way (so that we do not have to do every model at once)\n\t\t// Any model that does not use `id` will already be overriding this getter\n\t\tif (!schema) return 'id';\n\n\t\t// The new schema way\n\t\treturn schema.primary;\n\t}\n\n\t/** @type {boolean} */\n\tget isModel() {\n\t\treturn this.constructor.__isModel__;\n\t}\n\n\t// Whelp\n\t// Need to fix in backbone.rpc - the model get's a property of `syncing`\n\t// whether the call is a syncable (read) or not\n\t// And since our loading indication relies on the `request:read` event and the `sync` event\n\t// we will get false loading positives by checking `this.syncing`\n\t// So, check for the `read` method in our current calls list\n\tget isSyncing() {\n\t\treturn this._rpc && this.syncing && this._rpc.callsByName.read != null;\n\t}\n\n\t/**\n\t * The attribute key to find the model's \"title\"\n\t * @type {string}\n\t */\n\tget titleAttribute() {\n\t\treturn 'title';\n\t}\n\n\tget url() {\n\t\treturn URL.api;\n\t}\n\n\t// TODO: when we have switched all the way over to the schema pattern we can remove this\n\tget defaults() {\n\t\treturn {};\n\t}\n\n\t/** @type {array} */\n\tget clientAttrs() {\n\t\treturn [];\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadedMessages() {\n\t\treturn {};\n\t}\n\n\t/** @type {object} */\n\tget xhrLoadingMessages() {\n\t\treturn {};\n\t}\n\n\t/** @type {object} */\n\tget methods() {\n\t\treturn {};\n\t}\n\n\t/** @type {object} */\n\tget parsers() {\n\t\treturn {};\n\t}\n\n\t/**\n\t * @method\n\t * @param {object} attrs Model attributes\n\t * @param {object} opts Model options\n\t */\n\tconstructor(attrs, opts = {}) {\n\t\tsuper(attrs, opts);\n\n\t\t// Init backbone.rpc if requested:\n\t\tconst rpc = opts.rpc != null ? opts.rpc : this.rpc;\n\t\tif (rpc === true) {\n\t\t\tthis._rpc = new Rpc();\n\t\t}\n\n\t\t/**\n\t\t * When a stored model should expire\n\t\t * Set to true to persist until explicitly deleted\n\t\t * https://github.com/ozantunca/locally\n\t\t * Forever/Milliseconds/TTL\n\t\t * @type {boolean|integer|string}\n\t\t * @default\n\t\t * @see Netx.Collection\n\t\t */\n\t\tthis.storeOptions = {\n\t\t\tpersist: false,\n\t\t};\n\t\t// Store options\n\t\tif (opts && _.isObject(opts.storeOptions)) {\n\t\t\tthis.storeOptions = _.extend({}, this.storeOptions, opts.storeOptions);\n\t\t\tdelete opts.storeOptions;\n\t\t}\n\n\t\t/**\n\t\t * If we defined the object _unsavedChanges on a Netx.Model, that\n\t\t * object will track every change between syncs. This is useful\n\t\t * for tracking unsaved local changes over time.\n\t\t */\n\t\t// On change events, store the changes.\n\t\tthis.listenTo(this, 'change', (model, options) => {\n\t\t\tif (!_.isObject(this._unsavedChanges)) return;\n\t\t\tif (options && options.silent) return;\n\t\t\t_.extend(this._unsavedChanges, model.changedAttributes());\n\t\t});\n\t\t// On sync events, flush the changes.\n\t\tthis.listenTo(this, 'sync', () => {\n\t\t\tthis.syncedOnce = true;\n\t\t\tif (_.isObject(this._unsavedChanges)) {\n\t\t\t\tthis._unsavedChanges = {};\n\t\t\t}\n\t\t});\n\n\t\t//////////////////////////////////////////\n\t\t// HOUSEKEEPING\n\t\t//////////////////////////////////////////\n\n\t\t// Where will store references to the collection we belong to. We use the _listenId and store only that\n\t\t// That way we are not creating any circular references and do not risk making our garbage collection\n\t\t// even more difficult to deal with in regards to our ghost models\n\t\t// On one hand- it is great to see details about the collection the model claims to belong to in cases\n\t\t// where you are not sure why it still belongs to one - but the cost of storing the actual collection\n\t\t// coul be that neither the model nor the collection ever get collected as the model is listening to some\n\t\t// global object and maintiaining a reference to a collection that should have been garbage collected\n\t\t// which then could be referencing other objects that would have otherwise been garbage collected and so on.\n\t\t// this.debugCollections = [];\n\t\tthis.collections = [];\n\t\t// Backbone never really anticipated (on purpose) that models\n\t\t// would create models and listen to other things (not self) (especially global variables like our dispatcher)\n\t\t// Cleanup\n\t\tthis.listenTo(this, 'remove', (model, collection, opts) => {\n\t\t\t// Each model that creates sub models should be listening for remove and then triggering the same on its sub models\n\t\t\t// That way everything gets cleaned up and memory leaks decline\n\t\t\tthis.removeCollectionReference(collection);\n\t\t});\n\t\tthis.listenTo(this, 'add', (model, collection, opts) => {\n\t\t\t// If we are not already storing a reference - store one\n\t\t\tthis.addCollectionReference(collection);\n\t\t});\n\t\t//////////////////////////////////////////\n\t\t// !HOUSEKEEPING\n\t\t//////////////////////////////////////////\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} perm Permission\n\t * @return {boolean} Allowed\n\t */\n\tallows(perm) {\n\t\tif (perm === 'read' || perm === 'r' || perm === 'download') return true;\n\n\t\tvar permitted = this.get('permission');\n\n\t\t// Nothing we can check\n\t\tif (!permitted) return true;\n\n\t\tswitch (perm) {\n\t\t\tcase 'd':\n\t\t\tcase 'delete':\n\t\t\t\treturn permitted === 'delete' || permitted === 'd';\n\t\t\tcase 'modify':\n\t\t\tcase 'w':\n\t\t\tcase 'edit':\n\t\t\tcase 'write':\n\t\t\t\treturn (\n\t\t\t\t\tpermitted === 'delete' ||\n\t\t\t\t\tpermitted === 'write' ||\n\t\t\t\t\tpermitted === 'd' ||\n\t\t\t\t\tpermitted === 'w'\n\t\t\t\t);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t * @override\n\t * @param {Netx.Models.BatchJob} Batch job model\n\t */\n\tbatchJobComplete(batchJob) {\n\t\tvar args = batchJob.get('args') || [];\n\t\tthis.trigger.apply(this, ['complete', this, batchJob].concat(args));\n\t}\n\t/**\n\t * @override\n\t * @param {Netx.Models.BatchJob} Batch job model\n\t * @param {string} error Error\n\t */\n\tbatchJobError(batchJob, error) {\n\t\tvar args = batchJob.get('args') || [];\n\t\tthis.trigger.apply(this, ['error', this, error].concat(args));\n\t}\n\t/**\n\t * @override\n\t * @param {Netx.Models.BatchJob} Batch job model\n\t * @param {number} progress Progress\n\t */\n\tbatchJobProgress(batchJob, progress) {\n\t\tvar args = batchJob.get('args') || [];\n\t\tthis.trigger.apply(\n\t\t\tthis,\n\t\t\t['progress', this, batchJob, progress].concat(args),\n\t\t);\n\t}\n\n\t/**\n\t * There is a fun labels game we play with some of our objects; particularly users\n\t * We need to get our labels on the same page as what we might get from an autolookup\n\t * This method allows less than ideal models to modify how this label is gathered\n\t * @method\n\t * @return {string} Atuocomplete label\n\t */\n\tgetAutocompleteLabel() {\n\t\treturn this.getLabel();\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} method Method name\n\t */\n\tgetRestLoadedMessage(method) {\n\t\tvar messages = this.xhrLoadedMessages || {};\n\t\treturn messages[method];\n\t}\n\t/**\n\t * @method\n\t * @param {string} method Method name\n\t */\n\tgetRestLoadingMessage(method) {\n\t\tvar messages = this.xhrLoadingMessages || {};\n\t\treturn messages[method];\n\t}\n\n\t/**\n\t * this.self() returns just the attributes of a model that are reflected in the DAM;\n\t * it is used in method definitions to omit model attributes that should *not* be\n\t * synced. We use it for cases where the data is structured differently in the\n\t * model than on the wire, and for models that want to have additional attributes\n\t * for local-only reasons.\n\t *\n\t * The default implementation removes any/all client-only attributes defined in the optional array property this.clientAttrs,\n\t * and aggregates ny/all attributes defined in the optional array property this.gooAttrs\n\t * into a single attribute called 'goo'. If neither of those optional properties\n\t * is defined, this.self() returns all model attributes.\n\t * @return {object}\n\t * @method\n\t */\n\tself() {\n\t\t// If we have goo attrs, this will pack them. Otherwise it will return a clone of this.attributes.\n\t\tlet attrs = this.packAttrs();\n\n\t\tconst schema = this.schema;\n\t\t// If we have client-only attrs, omit them.\n\t\t// The new schema way\n\t\tif (schema) {\n\t\t\tattrs = _.omit(attrs, schema.clientSide);\n\t\t}\n\t\t// The old way\n\t\telse if (this.clientAttrs) {\n\t\t\tattrs = _.omit(attrs, this.clientAttrs);\n\t\t}\n\t\t// Cloning so we don't accidentally modify model properties while preparing attributes to be sent to RPC methods\n\t\treturn _.clone(attrs);\n\t}\n\n\t/**\n\t * this.packAttrs(), given an attributes object (usually this.attributes), returns the JSON string\n\t * representation of any/all model properties listed in this.gooAttrs.\n\t * It's used by this.self, when converting from the client-side to the server-side representation.\n\t * @param {string} goo an attributes object. If undefined, this.attributes is used.\n\t * @return {string}\n\t * @method\n\t */\n\tpackAttrs(ungooeyObj) {\n\t\tungooeyObj = ungooeyObj || this.attributes;\n\t\tif (this.gooAttrs) {\n\t\t\tvar clientGoo = JSON.stringify(_.pick(ungooeyObj, this.gooAttrs));\n\n\t\t\t// HACK around bugs in the DAM JSON parser: triple-escape escaped quotes!\n\t\t\tvar serverGoo = clientGoo.replace(/\"/g, '\\\\\"');\n\n\t\t\treturn _.extend({}, _.omit(ungooeyObj, this.gooAttrs), {goo: serverGoo});\n\t\t} else {\n\t\t\treturn ungooeyObj;\n\t\t}\n\t}\n\n\t/**\n\t * this.unpackAttrs(), given an object with packed goo, returns an unpacked version.\n\t * It's used by parsers converting from server-side to client-side representations.\n\t * @param {object} gooeyObj the goo-encoded object\n\t * @return {object} the goo-decoded version.\n\t */\n\tunpackAttrs(gooeyObj) {\n\t\tif (!(this.gooAttrs && gooeyObj && gooeyObj.goo)) {\n\t\t\t// do nothing if model defines no goo.\n\t\t\treturn gooeyObj;\n\t\t}\n\n\t\tvar serverGoo = gooeyObj.goo;\n\t\t// HACK around bugs in the DAM JSON parser: unescape triple-escaped quotes!\n\t\tvar clientGoo = serverGoo.replace(/\\\\\"/g, '\"');\n\n\t\t// with _.omit, delete the goo key\n\t\treturn _.omit(\n\t\t\t_.extend(\n\t\t\t\t{},\n\t\t\t\tgooeyObj,\n\t\t\t\t// with _.pick, only allow goo we've defined in .gooAttrs!\n\t\t\t\t_.pick(JSON.parse(clientGoo), this.gooAttrs),\n\t\t\t),\n\t\t\t'goo',\n\t\t);\n\t}\n\n\t/**\n\t * Overriding because we expect to get back a promise\n\t * when validation or an error in set occurs backbone just returns false\n\t * @override\n\t */\n\tsave(key, val, options) {\n\t\t// Handle both `\"key\", value` and `{key: value}` -style arguments.\n\t\tvar attrs;\n\t\tif (key == null || typeof key === 'object') {\n\t\t\tattrs = key;\n\t\t\toptions = val;\n\t\t} else {\n\t\t\t(attrs = {})[key] = val;\n\t\t}\n\n\t\toptions = _.extend({validate: true, parse: true}, options);\n\t\tvar wait = options.wait;\n\n\t\t// If we're not waiting and attributes exist, save acts as\n\t\t// `set(attr).save(null, opts)` with validation. Otherwise, check if\n\t\t// the model will be valid when the attributes, if any, are set.\n\t\tif (attrs && !wait) {\n\t\t\tif (!this.set(attrs, options)) {\n\t\t\t\tconst error = new Error(`Error setting data`);\n\t\t\t\treturn new $.Deferred().reject(error);\n\t\t\t\t// return false;\n\t\t\t}\n\t\t} else if (!this._validate(attrs, options)) {\n\t\t\tconst error = new Error(`Validation error`);\n\t\t\terror.details = this.validationError;\n\t\t\treturn new $.Deferred().reject(error);\n\t\t\t// return false;\n\t\t}\n\n\t\t// After a successful server-side save, the client is (optionally)\n\t\t// updated with the server-side state.\n\t\tvar model = this;\n\t\tvar success = options.success;\n\t\tvar attributes = this.attributes;\n\t\toptions.success = function (resp) {\n\t\t\t// Ensure attributes are restored during synchronous saves.\n\t\t\tmodel.attributes = attributes;\n\t\t\tvar serverAttrs = options.parse ? model.parse(resp, options) : resp;\n\t\t\tif (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n\t\t\tif (serverAttrs && !model.set(serverAttrs, options)) return false;\n\t\t\tif (success) success.call(options.context, model, resp, options);\n\t\t\tmodel.trigger('sync', model, resp, options);\n\t\t};\n\t\twrapError(this, options);\n\n\t\t// Set temporary attributes if `{wait: true}` to properly find new ids.\n\t\tif (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n\t\tvar method = this.isNew() ? 'create' : options.patch ? 'patch' : 'update';\n\t\tif (method === 'patch' && !options.attrs) options.attrs = attrs;\n\t\tvar xhr = this.sync(method, this, options);\n\n\t\t// Restore attributes.\n\t\tthis.attributes = attributes;\n\n\t\treturn xhr;\n\t}\n\n\t/**\n\t * Keep track of any models or collections that may be attributes on the model\n\t * @override\n\t */\n\tset(key, val, options) {\n\t\tif (_.isObject(key)) {\n\t\t\t_.each(\n\t\t\t\tkey,\n\t\t\t\tfunction (v, k) {\n\t\t\t\t\tif (!v) return;\n\n\t\t\t\t\tif (v instanceof this.constructor) {\n\t\t\t\t\t\tthis.addSubModel(v);\n\t\t\t\t\t} else if (v && v.isModel) {\n\t\t\t\t\t\tthis.addSubCollection(v);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tthis,\n\t\t\t);\n\t\t} else if (val) {\n\t\t\tif (val instanceof this.constructor) {\n\t\t\t\tthis.addSubModel(val);\n\t\t\t} else if (val.isCollection) {\n\t\t\t\tthis.addSubCollection(val);\n\t\t\t}\n\t\t}\n\n\t\treturn super.set(key, val, options);\n\t}\n\n\t/**\n\t * @method\n\t * @return {object} Defaults\n\t */\n\tgetDefaults() {\n\t\treturn this.constructor.GetDefaults();\n\t}\n\n\t/**\n\t * @method\n\t * @return {number}\n\t */\n\tgetIndex() {\n\t\treturn this.collection ? this.collection.indexOf(this) : -1;\n\t}\n\n\t/**\n\t * A general-purpose function for getting a UI-compliant label for an object.\n\t * This function can & should be overridden in all child classes.\n\t * @method\n\t * @return {string} Label (title)\n\t */\n\tgetLabel() {\n\t\treturn this.get(this.titleAttribute);\n\t}\n\n\t/**\n\t * Object Polling:\n\t * pollUntil() tells any model/collection to do something repeatedly until a conditional test passes,\n\t * emitting appropriate events along the way. Use this to follow DAM changes to certain object properties,\n\t * or to check status until a status change.\n\t *\n\t * @param {function} doneTest A function that returns true if polling should finish. (Required)\n\t * @param {string} eventPrefix Event string prefix for polling events. If undefined, no events are triggered.\n\t * @param {function} pollMethod A function that causes a poll. Must return a promise. Defaults to this.fetch;\n\t * @param {number} pollInterval Milliseconds between polls. Defaults to 500.\n\t * @param {object} pollMethodOptions Options to pass to the RPC method\n\t * @method\n\t * @todo convert params to a single object so that we can add/remove options without needing to modify every piece of code that utilizes this method\n\t * (you know, unless they NEED to be updated)\n\t */\n\tpollUntil(\n\t\tdoneTest,\n\t\teventPrefix,\n\t\tpollMethod,\n\t\tpollInterval,\n\t\tpollMethodOptions,\n\t) {\n\t\t// Vars\n\t\tvar d = new $.Deferred(),\n\t\t\tself = this;\n\n\t\tif (!_.isFunction(doneTest)) {\n\t\t\tthrow new Error('pollUntil: doneTest argument is not a function.');\n\t\t}\n\n\t\tpollMethodOptions = pollMethodOptions || {};\n\t\tpollInterval = pollInterval || 500; // ms\n\n\t\tpollMethod =\n\t\t\tpollMethod ||\n\t\t\tfunction () {\n\t\t\t\tif (_.isFunction(self.fetch)) return self.fetch(pollMethodOptions);\n\t\t\t\tthrow new Error('default poll method (fetch) not defined.');\n\t\t\t};\n\n\t\tif (this._polling) {\n\t\t\t// We are already polling.\n\t\t\tconsole.warn('This instance is already polling');\n\t\t\treturn this._polling.promise();\n\t\t}\n\n\t\t// Method for when we're finished:\n\t\tvar finished = function () {\n\t\t\tself._polling.resolveWith(self);\n\t\t\tif (eventPrefix) {\n\t\t\t\tdispatcher.trigger.apply(\n\t\t\t\t\tdispatcher,\n\t\t\t\t\t[\n\t\t\t\t\t\teventPrefix +\n\t\t\t\t\t\t\t(self._stopPolling ? ':stoppedPolling' : ':donePolling'),\n\t\t\t\t\t].concat(_.toArray(arguments)),\n\t\t\t\t);\n\t\t\t}\n\t\t\tdelete self._polling;\n\t\t\tdelete self._pausedPolling;\n\t\t\tdelete self._stopPolling;\n\t\t};\n\n\t\ttry {\n\t\t\t// Pass undefined so that we may differentiate between the first test and the rest\n\t\t\tif (doneTest.apply(this, [undefined])) {\n\t\t\t\t// We don't even need to poll.\n\t\t\t\tfinished();\n\t\t\t\treturn d.promise();\n\t\t\t}\n\t\t} catch (ex) {\n\t\t\t// doneTest() might fail without proper arguments. If so, assume that means 'false'.\n\t\t\t// That means we're going to have to poll at least once in order to perform this test.\n\t\t}\n\n\t\tvar loop = function () {\n\t\t\tif (self._pausedPolling) {\n\t\t\t\t_.delay(loop, pollInterval);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tpollMethod.call(self, pollMethodOptions).then(\n\t\t\t\tfunction (response) {\n\t\t\t\t\t// For those cases that the server sends an error as a success\n\t\t\t\t\tif (_.isObject(response) && response.error) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t'Server sent error as success. \\nModule :',\n\t\t\t\t\t\t\tself.module,\n\t\t\t\t\t\t\t'\\nModel :',\n\t\t\t\t\t\t\tself,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn d.reject(\n\t\t\t\t\t\t\tnew Error(response.error.message || response.error),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (eventPrefix) {\n\t\t\t\t\t\tdispatcher.trigger.apply(\n\t\t\t\t\t\t\tdispatcher,\n\t\t\t\t\t\t\t[eventPrefix + ':polled'].concat(_.toArray(arguments)),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (this._stopPolling || doneTest.apply(self, arguments)) {\n\t\t\t\t\t\t// Done!\n\t\t\t\t\t\tfinished.apply(self, arguments);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t_.delay(loop, pollInterval);\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t},\n\t\t\t\tfunction (err) {\n\t\t\t\t\tif (self._pausedPolling) {\n\t\t\t\t\t\t_.delay(loop, pollInterval);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\td.reject(err);\n\t\t\t\t\tif (eventPrefix) {\n\t\t\t\t\t\tdispatcher.trigger.apply(\n\t\t\t\t\t\t\tdispatcher,\n\t\t\t\t\t\t\t[eventPrefix + ':errorPolling', err.message].concat(\n\t\t\t\t\t\t\t\t_.toArray(arguments),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t); // use instead (becuase verbs are better?)\n\t\t\t\t\t\t// This would be nicer & more right:\n\t\t\t\t\t\t// dispatcher.applyTrigger( eventPrefix + ':errorPolling', arguments);\n\t\t\t\t\t}\n\t\t\t\t\tdelete this._polling;\n\t\t\t\t\tdelete this._pausedPolling;\n\t\t\t\t},\n\t\t\t);\n\t\t};\n\n\t\t// Save the deferred as this._polling, to show we're polling.\n\t\tthis._polling = d;\n\t\tif (eventPrefix) {\n\t\t\tdispatcher.trigger.apply(\n\t\t\t\tdispatcher,\n\t\t\t\t[eventPrefix + ':startedPolling'].concat(_.toArray(arguments)),\n\t\t\t);\n\t\t}\n\t\tloop();\n\n\t\treturn this._polling.promise();\n\t}\n\n\tpausePolling() {\n\t\tif (this._polling) {\n\t\t\tthis._pausedPolling = true;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tresumePolling() {\n\t\tif (this._polling) {\n\t\t\tthis._pausedPolling = false;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * stopPolling() halts any poll loop currently in process.\n\t */\n\tstopPolling() {\n\t\tif (this._polling) {\n\t\t\tthis._stopPolling = true;\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} uuid UUID\n\t * @param {array} args Arguments\n\t * @return {Netx.Models.BatchJob}\n\t * @fires module:app#app:pollBatchJob\n\t */\n\ttrackBatchJob(uuid, args, pollInterval) {\n\t\t// Poll\n\t\tvar batchJob = Netx.batchJobs.get(uuid);\n\t\tif (!batchJob) {\n\t\t\tdispatcher.trigger(\n\t\t\t\t'app:pollBatchJob',\n\t\t\t\tuuid,\n\t\t\t\tnull,\n\t\t\t\tfalse,\n\t\t\t\targs,\n\t\t\t\tpollInterval,\n\t\t\t);\n\t\t\tbatchJob = Netx.batchJobs.get(uuid);\n\t\t}\n\t\tif (batchJob) {\n\t\t\tthis.listenToOnce(batchJob, 'complete', function (batchJob) {\n\t\t\t\tthis.stopListening(batchJob);\n\t\t\t\tthis.batchJobComplete(batchJob);\n\t\t\t});\n\t\t\tthis.listenToOnce(batchJob, 'error', function (batchJob, error) {\n\t\t\t\tthis.stopListening(batchJob);\n\t\t\t\tthis.batchJobError(batchJob, error);\n\t\t\t});\n\t\t\tthis.listenTo(\n\t\t\t\tbatchJob,\n\t\t\t\t'change:percentComplete',\n\t\t\t\tfunction (batchJob, progress) {\n\t\t\t\t\tthis.batchJobProgress(batchJob, progress);\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\treturn batchJob;\n\t}\n\n\t/**\n\t * A scoped version of jQuery.when(), that always uses 'this' as the context for the promise it returns.\n\t * It's also able to accept an array of promises, so we don't need to use .apply to make it go.\n\t */\n\twhen() {\n\t\t// Vars\n\t\tvar d = new $.Deferred(),\n\t\t\tself = this,\n\t\t\tresolve = function () {\n\t\t\t\td.resolveWith(self, arguments);\n\t\t\t},\n\t\t\treject = function () {\n\t\t\t\td.rejectWith(self, arguments);\n\t\t\t},\n\t\t\tprogress = function () {\n\t\t\t\td.notifyWith(self, arguments);\n\t\t\t};\n\n\t\t// If the first argument is an array of promises, we ignore the others.\n\t\tvar arg0 = _.first(arguments);\n\t\tif (_.isArray(arg0) && arg0.length > 0) {\n\t\t\t$.when.apply($, arg0).then(resolve, reject, progress);\n\t\t} else {\n\t\t\t$.when.apply($, arguments).then(resolve, reject, progress);\n\t\t}\n\n\t\treturn d.promise();\n\t}\n\n\t//////////////////////////////////////////\n\t// HOUSEKEEPING\n\t//////////////////////////////////////////\n\t/**\n\t * Keep track of the collections I belong to\n\t * @method\n\t * @param {Netx.Collection} collection Collection\n\t */\n\taddCollectionReference(collection) {\n\t\tif (collection && this.collections) {\n\t\t\tif (_.indexOf(this.collections, collection._listenId) < 0) {\n\t\t\t\tif (!collection._listenId) return;\n\t\t\t\tthis.collections.push(collection._listenId);\n\t\t\t\t// this.debugCollections[ collection._listenId ] = collection;\n\t\t\t}\n\t\t}\n\t}\n\t/**\n\t * Keep track of the collections I belong to\n\t * @method\n\t * @param {Netx.Collection} collection Collection\n\t */\n\tremoveCollectionReference(collection) {\n\t\tif (this.collections) {\n\t\t\tif (collection) {\n\t\t\t\tvar idx = _.indexOf(this.collections, collection._listenId);\n\t\t\t\tif (idx > -1) {\n\t\t\t\t\tthis.collections.splice(idx, 1);\n\t\t\t\t\t// delete this.debugCollections[ collection._listenId ];\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Give it time and see if we may have been added to another collection before checking length\n\t\t\t_.defer(\n\t\t\t\t_.bind(function () {\n\t\t\t\t\tif (!this.collections.length) {\n\t\t\t\t\t\tthis.garbageCollect();\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t);\n\t\t}\n\t}\n\t/**\n\t * Call this when manually adding a sub collection\n\t * @method\n\t * @param {Netx.Collection} collection Collection to track\n\t */\n\taddSubCollection(collection) {\n\t\tif (collection) {\n\t\t\tif (!_.isObject(this.subCollections)) this.subCollections = {};\n\t\t\t// In very rare situations some collections do not have their _listenId yet\n\t\t\t// Defer seems to solve it and I cannot recreate any further\n\t\t\t_.defer(\n\t\t\t\t_.bind(function () {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.subCollections &&\n\t\t\t\t\t\t_.isUndefined(this.subCollections[collection._listenId])\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.subCollections[collection._listenId] = collection;\n\t\t\t\t\t}\n\t\t\t\t}, this),\n\t\t\t);\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t * Call this when manually removing a sub collection\n\t * @method\n\t * @param {Netx.Collection} collection Collection to cleanup\n\t */\n\tremoveSubCollection(collection) {\n\t\tif (\n\t\t\tcollection &&\n\t\t\tcollection._listenId &&\n\t\t\t!_.isUndefined(this.subCollections[collection._listenId])\n\t\t) {\n\t\t\tcollection.garbageCollect();\n\t\t\tdelete this.subCollections[collection._listenId];\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t * Call this when manually adding a sub model\n\t * @method\n\t * @param {Netx.Model} model Model to track\n\t */\n\taddSubModel(model) {\n\t\tif (!_.isObject(this.subModels)) this.subModels = {};\n\t\tif (_.isUndefined(this.subModels[model._listenId])) {\n\t\t\tthis.subModels[model._listenId] = model;\n\t\t}\n\t\treturn this;\n\t}\n\t/**\n\t * Call this when manually removing a sub model\n\t * @method\n\t * @param {Netx.Model} model Model to cleanup\n\t */\n\tremoveSubModel(model) {\n\t\tif (\n\t\t\tmodel &&\n\t\t\tmodel._listenId &&\n\t\t\t!_.isUndefined(this.subModels[model._listenId])\n\t\t) {\n\t\t\t// Hotfix for DAM-6402 -- revisit in 8.6 . This solves a mistaken assumption about references,\n\t\t\t// but it un-solves a memory leak ...\n\t\t\t// model.trigger('remove', model, null, null);\n\t\t\tdelete this.subModels[model._listenId];\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Subscribe to websocket\n\t * @method\n\t */\n\tsubscribe() {\n\t\tif (!this.socket) {\n\t\t\tif (this.roomName == null) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'`this.roomName` is not set. Cannot subscribe to websocket channel.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tvar socket = (this.socket = Netx.websocket);\n\t\t\tthis.listenTo(\n\t\t\t\tsocket,\n\t\t\t\t'socket:message:' + this.roomName,\n\t\t\t\tthis.subscriptionMessage,\n\t\t\t);\n\t\t\tsocket.subscribe(this.roomName);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * Message received from websocket channel\n\t * @method\n\t * @param {object} data Message data\n\t */\n\tsubscriptionMessage(data) {\n\t\tswitch (data.action) {\n\t\t\tcase 'edit':\n\t\t\t\tthis.set(data.dto);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t/**\n\t * Unsubscribe from websocket\n\t * @method\n\t */\n\tunsubscribe() {\n\t\tif (this.socket) {\n\t\t\tif (this.roomName == null) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'`this.roomName` is not set. Cannot unsubscribe from websocket channel.',\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.socket.unsubscribe(this.roomName);\n\t\t\tthis.stopListening(this.socket);\n\t\t\tthis.socket = false;\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * Severs all ties to the world so it can be eligible for garbage collection\n\t * @method\n\t */\n\tgarbageCollect() {\n\t\tthis._rpc && this._rpc.garbageCollect();\n\n\t\t// Let go of any websocket channels\n\t\tthis.unsubscribe();\n\t\t// Let go of event listeners\n\t\tthis.stopListening().off();\n\t\tthis.clear();\n\n\t\t// Loop over sub models and trigger their cleanup\n\t\tif (_.isObject(this.subModels)) {\n\t\t\t// Hotfix for DAM-6402 -- ditto to above.\n\t\t\t// _.each( this.subModels, function( m ) {\n\t\t\t// \tm.trigger('remove', m, null, null);\n\t\t\t// } );\n\t\t\tdelete this.subModels;\n\t\t}\n\t\t// Loop over sub collection and trigger their cleanup\n\t\tif (_.isObject(this.subCollections)) {\n\t\t\t_.each(this.subCollections, function (c) {\n\t\t\t\tc.garbageCollect();\n\t\t\t});\n\t\t\tdelete this.subCollections;\n\t\t}\n\n\t\tthis.garbageCollected = true;\n\n\t\treturn this;\n\t}\n\t/**\n\t * Backbone.Model.destroy() returns false -- not a promise -- if the model is new;\n\t * it presumes the server doesn't have the model, and doesn't need to be contacted.\n\t *\n\t * That's reasonable ... but every other sync method always returns a promise,\n\t * and we've written all our code presuming destroy() always returns a promise,\n\t * so at this point we're making it Netx policy that Netx.Model.destroy()\n\t * _always_ returns a promise.\n\t *\n\t * @param {objct} opts sync args\n\t * @returns {Promise}\n\t */\n\tdestroy(opts) {\n\t\tconst retVal = super.destroy(opts);\n\t\tif (!_.isPromise(retVal)) {\n\t\t\treturn this.when(); // a pre-resolved promise with correct context.\n\t\t} else {\n\t\t\treturn retVal;\n\t\t}\n\t}\n\t//////////////////////////////////////////\n\t// !HOUSEKEEPING\n\t//////////////////////////////////////////\n\n\t/**\n\t * Our defaults could be an object or a function that returns an object\n\t * Do not make others figure this out everytime the defaults are neeeded\n\t * @method\n\t * @return {object} Model defaults (cloned so you do not risk polluting the prototype)\n\t */\n\tstatic GetDefaults() {\n\t\tif (!this.Schema) return this.prototype.defaults;\n\t\treturn getDefaultsFromSchema(this.Schema);\n\t}\n\n\t/**\n\t * The attribute key to find the model's \"title\"\n\t * @type {string}\n\t */\n\tstatic get TitleAttribute() {\n\t\treturn this.prototype.titleAttribute;\n\t}\n\n\t/**\n\t * Netx.Model.*.Load() (experimental) takes a unique ID and converts into a server populated model instance.\n\t * It returns a promise for the eventual object.\n\t * @param {number} id Id that corresponds to the model's idAttribute.\n\t * @todo Load() would be handy for a wide variety of collections.\n\t * To get it to all of them we'd need to add the Load class method to Netx.Collection.\n\t */\n\tstatic Load(id) {\n\t\t// Setting the idAttribute on instantiation does not work in Backbone.\n\t\t// So we must explicitly set idAttribute after the instance has been created\n\t\tconst a = new this();\n\t\tconst idAttr = this.prototype.idAttribute || 'id';\n\n\t\treturn a\n\t\t\t.set(idAttr, id)\n\t\t\t.fetch()\n\t\t\t.then(() => {\n\t\t\t\treturn a;\n\t\t\t});\n\t}\n\n\t/**\n\t * @method\n\t * @param {schema} schema Schema\n\t */\n\tstatic SetSchema(schema) {\n\t\tObject.defineProperty(this, 'Schema', {\n\t\t\tvalue: protectObjectProxy(schema),\n\t\t\tconfigurable: false,\n\t\t\twritable: false,\n\t\t});\n\t}\n\n\t/** @type {boolean} */\n\tstatic get __isModel__() {\n\t\treturn true;\n\t}\n\n\t/** @type {string} */\n\tstatic get __name__() {\n\t\treturn 'Model';\n\t}\n}\n\nexport default Model;\n","// created this file to address the fact that we need to tell moment\n// what locale to use\n// the prime place for this imo was the i18n initialization BUT moment\n// is not needed for logging in (atm) and it increases our pre-logged in bundle\n// enough\n// this file ensures that no matter when moment is called on that we have\n// set the locale\n\nimport {i18n, i18nInitialized} from '@netx/core-next/locales';\nimport moment from 'moment';\n\ni18nInitialized.then(() => {\n\t// We have to set this manually\n\t// https://momentjs.com/docs/#/i18n/changing-locale/\n\tmoment.locale(i18n.language);\n});\n\n// eslint-disable-next-line import/named\nexport {type Moment, utc} from 'moment';\nexport {default} from 'moment';\n","/**\n * Netx.Routers.App is the class of our sole router instance, Netx.router\n * @class\n * @param {object} opts Options\n * @extends Backbone.ES6Router\n * @todo: This is an interesting idea\n * http://stackoverflow.com/questions/25806608/how-to-detect-browser-back-button-event-cross-browser\n */\nimport Backbone from 'backbone';\nimport _ from 'underscore';\nimport {session} from '@netx/core-auth/collections/singleton/session';\nimport coreConfig from '@netx/core-next/config';\nimport {dispatcher} from '@netx/core-next/instance/dispatcher';\nimport {escapeURI} from '@netx/core/utils/escapeURI';\nimport {unescapeURI} from '@netx/core/utils/unescapeURI';\n\n// base64 search routes, good times! ¯\\_(ツ)_/¯\n// we need to unescape and then re-escape since things get escaped automagically\n// by either the browser, backbone, or the two\n// note: need to trim and re-add the base route as that will get mangled in an escape\nconst BASE64_ROUTES_BASES = ['search/attribute/history/', 'search/advanced/'];\nconst routeIsBase64 = (route) =>\n\tBASE64_ROUTES_BASES.find((base) => route.includes(base));\nconst correctBase64RouteIfNeeded = (route) => {\n\tconst base = routeIsBase64(route);\n\tif (!base) return route;\n\treturn base + escapeURI(unescapeURI(route.replace(base, '')));\n};\n\n/**\n * Only the most recent interceptor will be used. The reason for allowing the setting this\n * way is to try and prevent one view creating while another is removing, and the removing one\n * removed its interceptor\n */\nconst routeInterceptors = new Map();\n\n/*****************\n * NetX extensions to Backbone.History:\n *\n * Certain parts of X7 need to know whether they're being executed in the context\n * of a route change. Backbone.History.isRouting() returns the boolean value of a flag\n * that is set when Backbone.History.loadUrl() begins, and cleared when it ends.\n *\n */\nconst History = Backbone.History;\nHistory.prototype.loadUrl = _.wrap(\n\tHistory.prototype.loadUrl,\n\tfunction (loadUrl) {\n\t\tthis._isRouting = true;\n\t\tvar args = _.rest(arguments);\n\t\tvar ret = loadUrl.apply(this, args);\n\t\tdelete this._isRouting;\n\t\treturn ret;\n\t},\n);\n\nHistory.prototype.isRouting = function () {\n\treturn this._isRouting || false;\n};\n\nconst Router = Backbone.Router;\nclass ES6Router {\n\t/** @override */\n\tconstructor(opts) {\n\t\tRouter.apply(this, arguments);\n\t}\n}\n_.extend(ES6Router.prototype, Router.prototype);\nBackbone.ES6Router = ES6Router;\n\nclass AppRouter extends ES6Router {\n\tready = false;\n\n\t/** @override */\n\tconstructor(opts = {}) {\n\t\tsuper(opts);\n\n\t\t/** @type {array} */\n\t\tthis.history = [];\n\n\t\t/**\n\t\t * @type {number}\n\t\t * @default\n\t\t */\n\t\tthis.size = opts.size || 50;\n\n\t\tthis.listenTo(this, 'route', this.routeChanged);\n\t\t// listen for route paging from pager.js\n\t\tthis.listenTo(dispatcher, 'router:page', (page, routeContext) => {\n\t\t\tlet {hash} = window.location;\n\t\t\t// We need to escape things like `'` (%27) and ` ` (%20)\n\t\t\t// Our `routeContext` encodes, but only some things are encoded in the route by backbone, like spaces,\n\t\t\t// where things like apostrophes are not encoded by backbone ¯\\_(ツ)_/¯\n\t\t\tif (!unescapeURI(hash).includes(unescapeURI(routeContext))) return;\n\n\t\t\tif (!routeIsBase64(routeContext)) {\n\t\t\t\t// We have to handle this a bit specially - see the wonderful search controller\n\t\t\t\thash = hash.replace(/ /g, '%20');\n\t\t\t}\n\n\t\t\t// see notes about function\n\t\t\trouteContext = correctBase64RouteIfNeeded(routeContext);\n\n\t\t\tlet pageRoute = `/page/${page}`;\n\n\t\t\t// Do not specify a page in the hash if one was not specified already\n\t\t\t// (can end up in a loop if you use the browser's back button)\n\t\t\tif (page === 1 && !/page\\/\\d/.test(hash)) {\n\t\t\t\tpageRoute = '';\n\t\t\t}\n\n\t\t\tthis.navigate(`${routeContext}${pageRoute}`, true);\n\t\t});\n\n\t\t// USE RESPONSIBLY\n\t\t// Currently, \"routed\" only gets dispatched when {trigger:false} is not set.\n\t\t// This code is for skins, etc that have pieces that would like to know when the route changes\n\t\t// whether or not it was silenced.\n\t\t// A good example:\n\t\t// When you run a search and then navigate into an asset detail view- when done you close the detail\n\t\t// view and return to your search results... Rather than running the search over again we put the\n\t\t// search string back into the hash and silence the change.\n\t\t// @fires 'hash:changed' and provides newHash and oldHash (if you are into that sort of thing)\n\n\t\t// In IE originalEvent.newURL and originalEvent.oldURL are not a thing. We will fake it.\n\t\tif (_.isUndefined(this.oldHash)) {\n\t\t\tthis.oldHash = window.location.hash ? window.location.hash : '';\n\t\t}\n\t\t$(window).on('hashchange.router', (e) => {\n\t\t\tconst newHash = window.location.hash;\n\t\t\tdispatcher.trigger(\n\t\t\t\t'hash:changed',\n\t\t\t\tnewHash,\n\t\t\t\tthis.oldHash ? this.oldHash : '',\n\t\t\t);\n\t\t\tthis.oldHash = newHash;\n\t\t});\n\t}\n\n\t/**\n\t * Add route interceptor\n\t * Note: Only the most recent interceptor will be used. The reason for allowing the setting this\n\t * way is to try and prevent one view creating while another is removing, and the removing one\n\t * removed its interceptor\n\t * @param {string} key\n\t * @param {Function} func\n\t */\n\taddRouteInterceptor(key, func) {\n\t\trouteInterceptors.set(key, func);\n\t}\n\n\t/**\n\t * Remove route interceptor\n\t * @param {string} key\n\t * @param {Function} func\n\t */\n\tremoveRouteInterceptor(key) {\n\t\trouteInterceptors.delete(key);\n\t}\n\n\t/**\n\t * Rewind the route one step. Just like window.history.back(), except it also manages our\n\t * local history cache.\n\t *\n\t * WARNING: intersecting back() with push()/pop() can lead to unknown, probably-wrong behavior.\n\t * @param {object} opts Options\n\t */\n\tback(opts = {}) {\n\t\tif (this.history.length > 1) {\n\t\t\twindow.history.back();\n\t\t} else {\n\t\t\tthis.home(opts);\n\t\t}\n\t}\n\n\t/**\n\t * @param {string} page Page\n\t */\n\t// TODO: provide a proper 404 error here.\n\tdefaultRoute(page) {\n\t\tconsole.warn('The page you are trying to reach: %s, does not exist.', page);\n\t}\n\n\t/**\n\t * @method\n\t * @param {string} route Route event (or route if ananymous function was used)\n\t */\n\trouteChanged(route) {\n\t\t// TODO: This is a band-aid until we can get some finer\n\t\t// control over our routes (white listing etc)\n\t\tconst validUnauthenticatedRoutes = [\n\t\t\t'auth:user:login',\n\t\t\t'auth:user:register:approvalNeeded',\n\t\t\t'auth:user:register',\n\t\t\t'auth:user:password:reset',\n\t\t\t'auth:user:password:change',\n\t\t\t'auth:user:sessionKey',\n\t\t\t// share request bundle will handle invalid token messaging\n\t\t\t'share:request',\n\t\t];\n\t\tif (\n\t\t\tsession.requiresLogin() &&\n\t\t\t!session.authenticated() &&\n\t\t\t!_.contains(validUnauthenticatedRoutes, route)\n\t\t) {\n\t\t\t// If empty route send them to the login page\n\t\t\tif (route === '') {\n\t\t\t\tdispatcher.trigger('auth:session:invalid');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn window.location.reload();\n\t\t}\n\n\t\t// Maintains routing history. Keeps up to the value of 'this.size' in history.\n\t\t// Accessible from the history object where index 0 is the current route\n\t\tif (this.history.length >= this.size) {\n\t\t\tthis.history.pop();\n\t\t}\n\n\t\tconst oldRoute = this.history[0];\n\t\tif (Backbone.history.fragment != history[0]) {\n\t\t\tthis.history.unshift(Backbone.history.fragment);\n\t\t}\n\n\t\t// Triggers a decoupled 'routed' event that view instances can listen to\n\t\t// to perform custom tasks. Ex. Netx.views.assetDetailView listens to the\n\t\t// dispatcher for the 'routed' event and pauses the video player.\n\t\tdispatcher.trigger('routed', Backbone.history.fragment, oldRoute);\n\t}\n\n\t/**\n\t * Support promises\n\t * @override\n\t * @param {string} route Route\n\t * @param {string} name Route name\n\t * @param {function} callback Route collback\n\t */\n\troute(route, name, callback) {\n\t\tif (!_.isRegExp(route)) {\n\t\t\troute = this._routeToRegExp(route);\n\t\t}\n\t\tif (_.isFunction(name)) {\n\t\t\tcallback = name;\n\t\t\tname = '';\n\t\t}\n\t\tif (!callback) {\n\t\t\tcallback = this[name];\n\t\t}\n\n\t\tBackbone.history.route(route, (fragment) => {\n\t\t\tconst args = this._extractParameters(route, fragment);\n\n\t\t\tconst _route = () => {\n\t\t\t\t// Strip trailing lone slash `asset/3/` -> `asset/3`\n\t\t\t\tif (fragment.length - 1 === fragment.lastIndexOf('/')) {\n\t\t\t\t\tfragment = fragment.substr(0, fragment.length - 1);\n\t\t\t\t\twindow.location.hash = `#${fragment}`;\n\t\t\t\t}\n\n\t\t\t\tconst ret = this.execute(callback, args, name);\n\n\t\t\t\t// Execute route\n\t\t\t\tconst executeRoute = () => {\n\t\t\t\t\tthis.trigger.apply(this, [`route:${name}`].concat(args));\n\t\t\t\t\tthis.trigger('route', name, args);\n\t\t\t\t\tBackbone.history.trigger('route', this, name, args);\n\t\t\t\t};\n\n\t\t\t\tif (!_.isPromise(ret)) {\n\t\t\t\t\tret !== false && executeRoute();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tret.then((execute) => {\n\t\t\t\t\texecute !== false && executeRoute();\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tif (routeInterceptors.size) {\n\t\t\t\t// See note on `routeInterceptors`\n\t\t\t\trouteInterceptors.get(\n\t\t\t\t\tArray.from(routeInterceptors.keys())[routeInterceptors.size - 1],\n\t\t\t\t)(_route, fragment, name, args);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_route();\n\t\t});\n\t\treturn this;\n\t}\n\n\t/*\n\t * reroute() is useful in a route handler that wants to trigger a route;\n\t * it uses replaceState() to delete the intermediate route from the history.\n\t * @param {string} frag The url component\n\t * @param {object} opts Options for .navigate();\n\t */\n\treroute(frag, opts) {\n\t\t// Replace the #upload in the browser history so that the back button won't re-forward:\n\t\t// Note the blank 'state object' because I haven't found the doc on what that should contain;\n\t\t// I think it's up to us, but i hope Backbone isn't using it ...\n\t\thistory.replaceState({}, '', `#${frag}`);\n\n\t\t// Tidy up our local .history\n\t\tthis.history[0] = frag;\n\n\t\t// This will trigger the route, even though our href is here already:\n\t\tthis.navigate(frag, opts);\n\t}\n\n\t/**\n\t * Add a set of new routes to the routes we already have.\n\t * @param {object} routes Routes\n\t */\n\taddRoutes(routes) {\n\t\t// apparently, routes must be added in reverse order to their position in the object.\n\t\t_.keys(routes)\n\t\t\t.reverse()\n\t\t\t.forEach((routePattern) =>\n\t\t\t\tthis.route(routePattern, routes[routePattern]),\n\t\t\t);\n\t}\n\n\t/**\n\t * inCategory() parses the current route to see if it's a category route\n\t * @return {number} a route ID, or undefined if not a category route.\n\t */\n\tinCategory() {\n\t\tif (Backbone.history.fragment?.match(/category\\/(\\d+)/)) {\n\t\t\treturn parseInt(\n\t\t\t\tBackbone.history.fragment.match(/category\\/(\\d+)/)[1],\n\t\t\t\t10,\n\t\t\t);\n\t\t} else {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\t/**\n\t * push() and pop() have had problems.\n\t * New strategy: find the most recent route that does *not* match a pattern, and go to that.\n\t * @param {string} pattern Pattern\n\t * @param {object} opts Options\n\t */\n\texitRoute(pattern, opts = {}) {\n\t\tconst targetRoute = _.find(this.history, (r) => {\n\t\t\t// Only use match if RegExp was passed\n\t\t\tif (pattern instanceof RegExp) {\n\t\t\t\t// Find the first route that doesn't match this pattern\n\t\t\t\treturn !r.match(pattern);\n\t\t\t}\n\t\t\t// Otheriwse we do an exact comparison\n\t\t\treturn r !== pattern;\n\t\t});\n\n\t\tconst {force, ...sendOpts} = opts;\n\t\t// If there is no available history, or it happens to be the last route\n\t\t// use this.back(), it will fall back on home()\n\t\tif (!targetRoute || (!force && targetRoute === this.history[1])) {\n\t\t\tif (force && !targetRoute && this.history.length) return this.home();\n\t\t\treturn this.back({trigger: true});\n\t\t}\n\n\t\tthis.navigate(targetRoute || '', {trigger: true, ...sendOpts});\n\t}\n\n\t/**\n\t * Route to the HOME_ROUTE, or the null route if HOME_ROUTE is not defined.\n\t * If no options provided, we set {trigger: true} to actually fire the route handler -- which is what we usually want.\n\t * @param {object} opts Options\n\t */\n\thome(opts = {}) {\n\t\topts.trigger = opts.trigger !== false;\n\t\tthis.navigate(coreConfig.HOME_ROUTE || '#', opts);\n\t}\n}\n\nexport default AppRouter;\n","/***************\n * NetX extensions to Underscore's _ object, adding miscellaneous utility functions.\n * NOTE: Be sure to document new items in https://confluence.netx.net/display/DEV/X7+Library+Overrides%2C+Extensions+and+Mixins\n */\nimport _ from 'underscore';\nimport Modernizr from 'core-libs/modernizr/modernizr';\n\nimport {arrayToCsv, csvToArray} from '@netx/core-next/utils/array';\n\n/**\n * Convert arguments to array\n * @param {arguments} args Arguments\n * @return {array}\n */\nexport const argsToArray = (args) => {\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments\n\treturn args.length === 1 ? [args[0]] : Array.apply(null, args);\n};\n\n/**\n * Convert integer byte counts into human-readable strings\n * @param {number} bytes Bytes to be formatted\n * @param {boolean} floor Whether to Math.floor the return\n * @param {string} maxScale The maximum unit\n * @returns {string} converted bytes affixed with units\n */\nexport const bytes = (bytes, floor, maxScale) => {\n\tbytes = parseFloat((bytes || 0).toString());\n\tvar i = -1;\n\tvar byteUnits = ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n\tvar idx = _.indexOf(byteUnits, maxScale);\n\tif (idx > -1) {\n\t\ti = idx;\n\t\tbytes = bytes ? bytes / Math.pow(1000, idx + 1) : 0;\n\t} else {\n\t\tdo {\n\t\t\tbytes = bytes / 1000;\n\t\t\ti++;\n\t\t} while (bytes >= 1000);\n\t}\n\n\tif (bytes > 0) {\n\t\tif (floor) {\n\t\t\treturn Math.floor(bytes) + ' ' + byteUnits[i];\n\t\t} else {\n\t\t\t// We need more info when it comes to over a gig\n\t\t\tif (i > 1) {\n\t\t\t\treturn Math.max(bytes, 0.01).toFixed(2) + ' ' + byteUnits[i];\n\t\t\t} else {\n\t\t\t\treturn Math.max(bytes, 0.1).toFixed(1) + ' ' + byteUnits[i];\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn idx > -1 ? '0 ' + byteUnits[idx] : '0 kB';\n\t}\n};\n\n/**\n * Returns str without quotes and spaces commas\n * @param {string} str String to clean up\n * @returns {string} Clean spaced string\n */\nexport const cleanQuotes = (str) => {\n\treturn str.replace(/\"/g, '').replace(/,/g, ', ');\n};\n\n/**\n * @param {Date|number|string} d Date string\n * @returns {string} HTML date string (YYYY-MM-DD)\n */\nexport const dateToHTML = (d) => {\n\tif (!_.isUndefined(d) && d) {\n\t\t// Support milliseconds\n\t\tif (_.isNumber(d)) {\n\t\t\td = new Date(d);\n\t\t}\n\n\t\tif (d instanceof Date) {\n\t\t\treturn [\n\t\t\t\td.getFullYear(),\n\t\t\t\tpad(d.getMonth() + 1, 2),\n\t\t\t\tpad(d.getDate(), 2),\n\t\t\t].join('-');\n\t\t}\n\n\t\tvar temp = d.split('/');\n\t\tif (temp.length && temp[0].length === 4)\n\t\t\treturn d.replace(/(\\d+)\\/(\\d+)\\/(\\d+)/, '$1-$2-$3');\n\n\t\treturn d.replace(/(\\d+)\\/(\\d+)\\/(\\d+)/, '$3-$1-$2');\n\t}\n\treturn '';\n};\n\n/**\n * Escape asset attribute name\n * (Do what underscore's _.escape does, then encode any open & close parens as HTML entities.)\n *\n * @param {string} string Attribute name\n * @return {string} Escaped attribute name\n */\nexport const escapeAttributeName = (string) => {\n\tstring = _.escape(string);\n\tstring = string\n\t\t.replace(/\\(/g, '(')\n\t\t.replace(/\\)/g, ')')\n\t\t.replace(/\\[/g, '[')\n\t\t.replace(/\\]/g, ']');\n\treturn string;\n};\n\n/**\n * @param {object} exports module.exports\n * @param {array} actions Actions\n * @return {array} Extended actions\n */\nexport const extendActions = (exports, actions) => {\n\tvar _action;\n\t_.each(actions, function (action) {\n\t\t_action = _.findWhere(exports, {event: action.event});\n\t\t_action && _.extend(_action, action);\n\t});\n\treturn exports;\n};\n\n/**\n * Get the body of a function as string\n * https://stackoverflow.com/questions/3179861/javascript-get-function-body\n * @method\n * @param {function} func Function\n * @return {string} Function body\n */\nexport const getFunctionBody = (func) => {\n\tvar fstring = func.toString();\n\treturn fstring.substring(fstring.indexOf('{') + 1, fstring.lastIndexOf('}'));\n};\n\n/**\n * Returns a worker\n * @method\n * @param {function} func Worker function\n * @return {Worker} Worker\n */\nexport const getInlineWorker = (func) => {\n\tvar blob = new Blob([getFunctionBody(func)]);\n\n\tvar worker = new Worker(window.URL.createObjectURL(blob));\n\treturn worker;\n};\n\n/**\n * @param {mixed} value Value\n * @return {boolean}\n */\nexport const isEmptyValue = (value) => {\n\tif (Array.isArray(value)) {\n\t\treturn value.length === 0 || (value.length === 1 && value[0] === '');\n\t}\n\treturn value == null || (value + '').trim() === '';\n};\n\n/**\n * Is this a touch device and smaller than mobile-breakpoint-max?\n * @function\n * @param {boolean} testTouch Inlcude testing for touch\n */\nexport const isMobile = (testTocuh = true) => {\n\treturn (!testTocuh || Modernizr.touch) && window.innerWidth < 767;\n};\n\n/**\n * Returns str (perhaps representing an integer)\n * left-padded with zeroes to at least 'max' characters in width\n * example: pad(\"3\",4) == \"0003\"\n * @param {string} str String to pad\n * @param {integer} max The amount of '0's to pad to\n * @returns {string} Padded string\n */\nexport const pad = (str, max) => {\n\tstr = str + '';\n\twhile (str.length < max) {\n\t\tstr = '0' + str;\n\t}\n\treturn str;\n};\n\n/**\n * Provided with full dimensions and dimensions to fit, will return resized dimensions\n * @param {object} dimensions Full dimensions of thing to fit\n * @param {object} fitDimensions Dimensions to fit to\n * @return {object} Resized dimensions\n */\nexport const resizeToFit = (dimensions, fitDimensions) => {\n\tlet height = dimensions.height;\n\tlet width = dimensions.width;\n\tlet newDimensions = _.clone(dimensions);\n\n\tconst aspectRatio = dimensions.aspectRatio || width / height;\n\tconst maxWidth = fitDimensions.width;\n\tconst maxHeight = fitDimensions.height;\n\n\tif (maxHeight && maxWidth) {\n\t\tif (maxWidth < width) {\n\t\t\twidth = maxWidth;\n\t\t\theight = Math.round(width / aspectRatio);\n\t\t}\n\t\tif (maxHeight < height) {\n\t\t\theight = maxHeight;\n\t\t\twidth = Math.round(height * aspectRatio);\n\t\t}\n\t\t// Make a second pass to be sure our resize did not cause the height or width to exceed the fitDimensions\n\t\tif (maxHeight < height) {\n\t\t\theight = maxHeight;\n\t\t\twidth = Math.round(height * aspectRatio);\n\t\t}\n\t\tif (maxWidth < width) {\n\t\t\twidth = maxWidth;\n\t\t\theight = Math.round(width / aspectRatio);\n\t\t}\n\t\tnewDimensions = {\n\t\t\theight: height,\n\t\t\twidth: width,\n\t\t};\n\t}\n\treturn newDimensions;\n};\n\n/**\n * Unescape asset attribute name in form fields.\n * (Specifically, do everything underscore's _.unescape method does,\n * and also decode the HTML entities for open & close parens, if present.)\n *\n * @param {string} string Attribute name\n * @return {string} Unescaped attribute name\n */\nexport const unescapeAttributeName = (string) => {\n\tstring = _.unescape(string);\n\tstring = string\n\t\t.replace(/(/g, '(')\n\t\t.replace(/)/g, ')')\n\t\t.replace(/[/g, '[')\n\t\t.replace(/]/g, ']');\n\treturn string;\n};\n\n_.mixin({\n\tbytes,\n\n\t/**\n\t * @param {array|number} items Either an array of items or a number\n\t * @param {number} currentIndex Current index in items\n\t * @param {number} itemsToDisplay Number of items to display\n\t * @param {mixed} ellipsis What to use for ellipis\n\t * @returns {array} array of crumbs\n\t */\n\tcrumbs: function (items, currentIndex, itemsToDisplay, ellipsis) {\n\t\tcurrentIndex = parseInt(currentIndex) || 1;\n\t\titemsToDisplay = parseInt(itemsToDisplay) || 2;\n\t\tellipsis = ellipsis || '...';\n\n\t\tvar crumbArray = [],\n\t\t\ttotalItems = _.isArray(items) ? items.length : parseInt(items) || 0,\n\t\t\tfirstItem = 1;\n\n\t\tif (totalItems) {\n\t\t\t// Subtract 2 ( for 1 on each side ) then divide by 2\n\t\t\tvar adjacentCount = Math.floor((itemsToDisplay - 2) / 2),\n\t\t\t\tfirstAdjacentItem,\n\t\t\t\tlastAdjacentItem;\n\n\t\t\t// Page count must be greater than pages to display\n\t\t\tif (totalItems >= itemsToDisplay) {\n\t\t\t\tif (currentIndex <= adjacentCount + adjacentCount) {\n\t\t\t\t\tfirstAdjacentItem = firstItem;\n\t\t\t\t\tlastAdjacentItem = Math.min(\n\t\t\t\t\t\tfirstItem + adjacentCount + adjacentCount,\n\t\t\t\t\t\ttotalItems,\n\t\t\t\t\t);\n\t\t\t\t} else if (currentIndex > totalItems - adjacentCount - adjacentCount) {\n\t\t\t\t\tlastAdjacentItem = totalItems;\n\t\t\t\t\tfirstAdjacentItem = totalItems - adjacentCount - adjacentCount;\n\t\t\t\t} else {\n\t\t\t\t\tfirstAdjacentItem = currentIndex - adjacentCount;\n\t\t\t\t\tlastAdjacentItem = currentIndex + adjacentCount;\n\t\t\t\t}\n\n\t\t\t\tif (firstAdjacentItem > firstItem) {\n\t\t\t\t\tcrumbArray.push(_.isArray(items) ? items[firstItem - 1] : firstItem);\n\t\t\t\t\tif (firstAdjacentItem > firstItem + 1) {\n\t\t\t\t\t\tcrumbArray.push(ellipsis);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (var i = firstAdjacentItem; i <= lastAdjacentItem; i++) {\n\t\t\t\t\tcrumbArray.push(_.isArray(items) ? items[i - 1] : i);\n\t\t\t\t}\n\t\t\t\tif (lastAdjacentItem < totalItems) {\n\t\t\t\t\tif (lastAdjacentItem < totalItems - 1) {\n\t\t\t\t\t\tcrumbArray.push(ellipsis);\n\t\t\t\t\t}\n\t\t\t\t\tcrumbArray.push(\n\t\t\t\t\t\t_.isArray(items) ? items[totalItems - 1] : totalItems,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Just spit em all out\n\t\t\telse {\n\t\t\t\t_.times(totalItems, function (n) {\n\t\t\t\t\tcrumbArray.push(_.isArray(items) ? items[n] : n + 1);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn crumbArray;\n\t},\n\n\t/**\n\t * isURL: returns true if a string is a valid URL.\n\t * @param {string} str the string to be tested\n\t * @return {boolean} Is URL\n\t */\n\tisURL: function (str) {\n\t\treturn !!_.matchURL(str);\n\t},\n\n\t/**\n\t * This is harder than it seems.\n\t * The following page shows a fairly complete test suite for regexp URL validation\n\t * using several popular internet options:\n\t *\n\t * \thttps://mathiasbynens.be/demo/url-regex\n\t *\n\t * isURL uses the only algorithm on this page that passed all tests --\n\t * \thttps://gist.github.com/dperini/729294 -- by Diego Perini\n\t *\n\t * @param {string} str the string to be tested\n\t * @return {array|null} the result of String.match()\n\t */\n\tmatchURL: function (str) {\n\t\treturn str.match(\n\t\t\tnew RegExp(\n\t\t\t\t'^' +\n\t\t\t\t\t// protocol identifier\n\t\t\t\t\t'(?:(?:https?|ftp)://)' +\n\t\t\t\t\t// user:pass authentication\n\t\t\t\t\t'(?:\\\\S+(?::\\\\S*)?@)?' +\n\t\t\t\t\t'(?:' +\n\t\t\t\t\t// IP address exclusion\n\t\t\t\t\t// private & local networks\n\t\t\t\t\t'(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})' +\n\t\t\t\t\t'(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})' +\n\t\t\t\t\t'(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})' +\n\t\t\t\t\t// IP address dotted notation octets\n\t\t\t\t\t// excludes loopback network 0.0.0.0\n\t\t\t\t\t// excludes reserved space >= 224.0.0.0\n\t\t\t\t\t// excludes network & broacast addresses\n\t\t\t\t\t// (first & last IP address of each class)\n\t\t\t\t\t'(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])' +\n\t\t\t\t\t'(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}' +\n\t\t\t\t\t'(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))' +\n\t\t\t\t\t'|' +\n\t\t\t\t\t// host name\n\t\t\t\t\t'(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)' +\n\t\t\t\t\t// domain name\n\t\t\t\t\t'(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*' +\n\t\t\t\t\t// TLD identifier\n\t\t\t\t\t'(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))' +\n\t\t\t\t\t// TLD may end with dot\n\t\t\t\t\t'\\\\.?' +\n\t\t\t\t\t')' +\n\t\t\t\t\t// port number\n\t\t\t\t\t'(?::\\\\d{2,5})?' +\n\t\t\t\t\t// resource path\n\t\t\t\t\t'(?:[/?#]\\\\S*)?' +\n\t\t\t\t\t'$',\n\t\t\t\t'i',\n\t\t\t),\n\t\t);\n\t},\n\n\t/**\n\t * Determine if a string (or number) is numeric; different from _.isNumber, which just tests type\n\t * http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric\n\t * @param {*} String/Integer\n\t * @returns {bool} Whether or not it is a number to test\n\t */\n\tisNumeric: function (n) {\n\t\treturn !isNaN(parseFloat(n)) && isFinite(n);\n\t},\n\n\t/**\n\t * @method\n\t * @param {string} str String to parse\n\t * @return {string} Parsed URL string\n\t */\n\tparseURLS: function (str) {\n\t\treturn (\n\t\t\tstr &&\n\t\t\tstr.replace(\n\t\t\t\t/(https?:\\/\\/.*?[^\\s|'|\"]+)/g,\n\t\t\t\t'<a title=\"$1\" class=\"url-link\" target=\"_blank\" href=\"$1\">$1</a>',\n\t\t\t)\n\t\t);\n\t},\n\n\t/**\n\t * Convert a string \"true\"/\"false\" to boolean\n\t * @param {string} val String to convert\n\t * @returns {bool} The string as a boolean\n\t */\n\ttoBoolean: function (val) {\n\t\tif (val.toLowerCase() == 'false') return false;\n\t\treturn true;\n\t},\n\n\t/**\n\t * For historical reasons, the DAM sometimes encodes object data as an array of LabelValueBeans.\n\t * objectToLvbs and lvbsToObject are utilities to convert in and out of that format.\n\t * @param {object} obj Label value bean object to convert to array\n\t * @returns {array} Label value been object as array\n\t */\n\tobjectToLvbs: function (obj) {\n\t\treturn _.map(obj, function (v, l) {\n\t\t\treturn {label: l, value: v};\n\t\t});\n\t},\n\n\t/**\n\t * For historical reasons, the DAM sometimes encodes object data as an array of LabelValueBeans.\n\t * objectToLvbs and lvbsToObject are utilities to convert in and out of that format.\n\t * @param {array} lvb Label value bean array to convert to object\n\t * @returns {array} Label value been array as object\n\t */\n\tlvbsToObject: function (lvb) {\n\t\tif (_.isUndefined(lvb) || _.isNull(lvb)) return undefined; // undefined array == undefined object.\n\t\tif (!_.isArray(lvb)) lvb = [lvb]; // convert a single LVB into an array of one.\n\t\tif (lvb.length == 0) return {}; // empty array == empty object.\n\n\t\tvar memo = {};\n\t\t_.reduce(\n\t\t\tlvb,\n\t\t\tfunction (memo, b) {\n\t\t\t\tmemo[b.label] = b.value;\n\t\t\t\treturn memo;\n\t\t\t},\n\t\t\tmemo,\n\t\t);\n\t\treturn memo;\n\t},\n\n\t/**\n\t * An attempt at a utility function to turn a bean label-value array like [ {label: 'foo', value: 123 }, ... ] into\n\t * a more useful object like { foo: 123, ... }\n\t * NOTE: it expands into sub-objects when label has dots. or should. (see _dotExpand() above)\n\t * NOTE: this is destructive to the passed in array lv, as it would otherwise get set on the model\n\t * TODO: should this be done instead outside of this function? probably maybe.\n\t * @param {array} lv Bean label-value array\n\t * @returns {object} Bean label-value array as object\n\t */\n\tlvbsToDeepObject: function (lv) {\n\t\tvar obj = {};\n\t\tfor (var i = 0; i < lv.length; i++) {\n\t\t\tvar val = lv[i].value;\n\t\t\t//being outrageously bold here and assuming no string in user prefs wants to be literal \"true\" or \"false\"\n\t\t\t// if this turns out not to be the case, my apologies and this will have to do a case-by-case check on what to turn into boolean. :( -jon\n\t\t\tif (val == 'true' || val == 'false') val = _.toBoolean(val);\n\t\t\t_._dotExpand(obj, lv[i].label.split('.'), val);\n\t\t}\n\t\tlv.length = 0; //the destructive part\n\t\treturn obj;\n\t},\n\n\t/**\n\t * Really just a utility function for beanArrayToObject.\n\t * This will take (obj, [foo, bar, baz, fu], val) and alter obj to be: obj[foo][bar][baz][fu] = val (creating sub-objects iff necessary)\n\t * NOTE: this will alter/affect the passed-in obj, and the return value is only useful for recursing here\n\t * @param {object} obj Object to expand from array\n\t * @param {array} levels An array of levels which to expand the object to\n\t * @param {*} value The value to assign to this new object level\n\t */\n\t_dotExpand: function (obj, levels, value) {\n\t\tvar key = levels.shift();\n\n\t\t//trivial case where initial levels = [] ... just to do the right thing (i think?)\n\t\tif (_.isUndefined(key)) {\n\t\t\tobj = value;\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (levels.length === 0) {\n\t\t\tobj[key] = value;\n\t\t\treturn obj;\n\t\t}\n\n\t\t//still more levels to go, so lets make sure this has a home\n\t\tif (!obj[key]) obj[key] = {};\n\t\t//if (typeof obj[key] != 'object') return; //???????? TODO\n\n\t\treturn _._dotExpand(obj[key], levels, value);\n\t},\n\n\t/**\n\t * Complement to _dotExpand(). Will return an array of [{label: value}, {label: value},...] of leaf nodes\n\t * e.g. {a: {b: 1, c: 2}} -> [ {a.b: 1}, {a.c: 2} ]\n\t * @param {object} obj Object to collapse to an array\n\t * @returns {array} Collapsed object as an array\n\t */\n\t_dotCollapse: function (obj) {\n\t\tvar arr = [];\n\t\tvar o = {};\n\t\tfor (var key in obj) {\n\t\t\tif (typeof obj[key] == 'object') {\n\t\t\t\tvar r = _._dotCollapse(obj[key]);\n\t\t\t\tfor (var i = 0; i < r.length; i++) {\n\t\t\t\t\tfor (var rk in r[i]) {\n\t\t\t\t\t\t//should really only be one key but how to do this shorthand?\n\t\t\t\t\t\to = {};\n\t\t\t\t\t\to[key + '.' + rk] = r[i][rk];\n\t\t\t\t\t\tarr.push(o);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\to = {};\n\t\t\t\t/////////////TODO deal with conversion to boolean !?!\n\t\t\t\to[key] = obj[key];\n\t\t\t\tarr.push(o);\n\t\t\t}\n\t\t}\n\t\treturn arr;\n\t},\n\n\tdateToHTML,\n\n\t/**\n\t * The DAM (sometimes) stores dates on asset attributes in dd/mm/yyyy format, but HTML forms use yyyy-mm-dd format.\n\t * @param {string} d Date string\n\t * @returns {string} DAM date string\n\t */\n\tdateToDAM: function (d) {\n\t\tif (!_.isUndefined(d)) {\n\t\t\tvar temp = d.split('-');\n\t\t\tif (temp.length && temp[0].length === 4)\n\t\t\t\treturn d.replace(/(\\d+)-(\\d+)-(\\d+)/, '$1/$2/$3');\n\n\t\t\treturn d.replace(/(\\d+)-(\\d+)-(\\d+)/, '$3/$1/$2');\n\t\t}\n\t},\n\t/**\n\t * Provided with a date or time (in milliseconds), get a new date in the users timezone\n\t * If nothing is provided you will get now\n\t * @param {date|number} d Date or time\n\t * @return {date} Local date\n\t */\n\tdateToLocalTimezone: function (d) {\n\t\tif (!(d instanceof Date)) {\n\t\t\tif (_.isNumber(d)) {\n\t\t\t\td = new Date(d);\n\t\t\t} else {\n\t\t\t\treturn new Date();\n\t\t\t}\n\t\t}\n\n\t\tvar time = d.getTime(),\n\t\t\ttimezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;\n\n\t\treturn new Date(time + timezoneOffset);\n\t},\n\t/**\n\t * The DAM stores timestamps on assets (and some other objects) in a completely different format:\n\t * yyyy-mm-dd hh:mm:ss.s\n\t * (.s == tenths of a second ... sometimes there and sometimes not)\n\t * This function takes one of those strings, and returns a JS Date object.\n\t * @param {string} d asset timestamp\n\t * @returns {Date} JS Date object\n\t */\n\tdateFromAsset: function (d) {\n\t\tvar t = d.match(/(\\d+)-(\\d+)-(\\d+) (\\d+):(\\d+):(\\d+)/);\n\t\tif (!t || !t.length) {\n\t\t\tthrow new Error(\"dateFromAsset: bad date '\" + d + \"'\");\n\t\t}\n\n\t\treturn new Date(t[1], t[2] - 1, t[3], t[4], t[5], t[6]);\n\t},\n\n\t/**\n\t * The opposite: turn a js Date object into a DAM asset timestamp\n\t * @param {Date} d A Date object. If omitted, we create one with the current time.\n\t * @param {boolean} omitTime Omit the time piece\n\t * @returns {string} asset timestamp in local timezone\n\t */\n\tdateToAsset: function (d, omitTime) {\n\t\td = d || new Date();\n\t\tvar ret =\n\t\t\td.getFullYear() +\n\t\t\t'-' +\n\t\t\tpad(d.getMonth() + 1, 2) +\n\t\t\t'-' +\n\t\t\tpad(d.getDate(), 2);\n\t\tif (!omitTime) {\n\t\t\tret +=\n\t\t\t\t' ' +\n\t\t\t\tpad(d.getHours(), 2) +\n\t\t\t\t':' +\n\t\t\t\tpad(d.getMinutes(), 2) +\n\t\t\t\t':' +\n\t\t\t\tpad(d.getSeconds(), 2) +\n\t\t\t\t'.0';\n\t\t}\n\t\treturn ret;\n\t},\n\n\t/**\n\t * Same thing, but in UTC.\n\t * @param {Date} d A Date object. If omitted, we create one with the current time.\n\t * @returns {string} asset timestamp in UTC\n\t */\n\tdateToAssetUTC: function (d) {\n\t\treturn [\n\t\t\td.getUTCFullYear(),\n\t\t\t'-',\n\t\t\tpad(d.getUTCMonth(), 2),\n\t\t\t'-',\n\t\t\tpad(d.getUTCDate(), 2),\n\t\t\t' ',\n\t\t\tpad(d.getUTCHours(), 2),\n\t\t\t':',\n\t\t\tpad(d.getUTCMinutes(), 2),\n\t\t\t':',\n\t\t\tpad(d.getUTCSeconds(), 2),\n\t\t\t'.0',\n\t\t].join('');\n\t},\n\n\t/**\n\t * Convert string date 'yyyy-mm-dd' to JavaScript Date object\n\t * @param {string} dateString Date string formatted 'yyyy-mm-dd'\n\t * @returns {date} JavaScript Date object\n\t */\n\tdateFromString: function (d) {\n\t\t// Try with \"-\"\n\t\tvar t = d.match(/(\\d+)-(\\d+)-(\\d+)/);\n\t\tif (!t || !t.length) {\n\t\t\t// Try with \"/\"\n\t\t\tt = d.match(/(\\d+)\\/(\\d+)\\/(\\d+)/);\n\t\t\tif (!t || !t.length) {\n\t\t\t\tthrow new Error(\"dateFromString: bad date '\" + d + \"'\");\n\t\t\t}\n\t\t}\n\n\t\tvar nd = new Date(t[1], t[2] - 1, t[3]);\n\t\treturn nd;\n\t},\n\t/**\n\t * Convert month integer to month name string\n\t * @param {integer} m Month from 0 - 11\n\t * @returns {string} month name\n\t */\n\tgetMonthString: function (m) {\n\t\tif (!_.isUndefined(m) && m < 12 && m > -1) {\n\t\t\tvar months = [\n\t\t\t\t'January',\n\t\t\t\t'February',\n\t\t\t\t'March',\n\t\t\t\t'April',\n\t\t\t\t'May',\n\t\t\t\t'June',\n\t\t\t\t'July',\n\t\t\t\t'August',\n\t\t\t\t'September',\n\t\t\t\t'October',\n\t\t\t\t'November',\n\t\t\t\t'December',\n\t\t\t];\n\t\t\treturn months[m];\n\t\t}\n\t\treturn '';\n\t},\n\t/**\n\t * Convert day integer to day name string\n\t * @param {integer} d Day from 0 - 6\n\t * @returns {string} day name\n\t */\n\tgetDayString: function (d) {\n\t\tif (!_.isUndefined(d) && d < 7 && d > -1) {\n\t\t\tvar days = [\n\t\t\t\t'Sunday',\n\t\t\t\t'Monday',\n\t\t\t\t'Tuesday',\n\t\t\t\t'Wednesday',\n\t\t\t\t'Thursday',\n\t\t\t\t'Friday',\n\t\t\t\t'Saturday',\n\t\t\t];\n\t\t\treturn days[d];\n\t\t}\n\t\treturn '';\n\t},\n\t/**\n\t * Convert integer to a stylized string (1000000 -> \"1,000,000\")\n\t * @param {integer} number Number you want formatted\n\t * @returns {string} formatted number string\n\t */\n\tformatNumber: function (number) {\n\t\treturn number.toString().replace(/(\\d)(?=(\\d\\d\\d)+(?!\\d))/g, '$1,');\n\t},\n\t/**\n\t * The jQuery Promise implementation uses some crazy internal class-hackery\n\t * such that 'instanceof' is useless for detecting either $.Promise or $.Deferred classes.\n\t * This is our go-to pattern for detecting either thing:\n\t * Is it an object with a then() function?\n\t * (Please update as the pattern improves, or we use more/different Promise libraries.)\n\t *\n\t * @param {object} obj Something that is or is not a promise\n\t * @returns {boolean} True if a promise was passed\n\t */\n\tisPromise: function (obj) {\n\t\treturn obj && _.isFunction(obj.then);\n\t},\n\n\t/**\n\t * Takes an array and moves item at index to another index\n\t * @param {Array} array Array that in being modified\n\t * @param {Int} fromIndex Index of item that is being moved\n\t * @param {Int} toIndex Index where item should be placed\n\t */\n\tmove: function (array, fromIndex, toIndex) {\n\t\tarray.splice(toIndex, 0, array.splice(fromIndex, 1)[0]);\n\t\treturn array;\n\t},\n\t/**\n\t * Convert milliseconds to a date string yyyy-mm-dd\n\t * @param {string|number} ms Milliseconds\n\t * @return {string} Date str\n\t */\n\tmillisecondsToDateStr: function (ms) {\n\t\tms = parseInt(ms) || 0;\n\t\tif (ms) {\n\t\t\treturn new Date(ms).toISOString().substring(0, 10);\n\t\t}\n\t\treturn '';\n\t},\n\t/**\n\t * Convert milliseconds to a date string `November 30, 2016 (13:55:42)`\n\t * @param {string|number} ms Milliseconds\n\t * @return {string} Date str\n\t */\n\tmillisecondsToFullDateStr: function (ms) {\n\t\tms = parseInt(ms) || 0;\n\t\tif (ms) {\n\t\t\tvar date = new Date(ms);\n\t\t\treturn (\n\t\t\t\t_.getMonthString(date.getMonth()) +\n\t\t\t\t' ' +\n\t\t\t\tdate.getDate() +\n\t\t\t\t', ' +\n\t\t\t\tdate.getFullYear() +\n\t\t\t\t' (' +\n\t\t\t\tpad(date.getHours(), 2) +\n\t\t\t\t':' +\n\t\t\t\tpad(date.getMinutes(), 2) +\n\t\t\t\t':' +\n\t\t\t\tpad(date.getSeconds(), 2) +\n\t\t\t\t')'\n\t\t\t);\n\t\t}\n\t\treturn '';\n\t},\n\t/**\n\t * Convert milliseconds to a time string hh::mm::ss.ms\n\t * @param {string|number} ms Milliseconds\n\t * @return {string} Time str\n\t */\n\tmillisecondsToTimeStr: function (ms) {\n\t\t// Vars\n\t\tvar floor = Math.floor,\n\t\t\ttime = parseInt(ms),\n\t\t\thour,\n\t\t\tminute,\n\t\t\tsecond;\n\n\t\thour = floor(time / 3600000);\n\t\ttime -= hour * 3600000;\n\t\tminute = floor(time / 60000);\n\t\ttime -= floor(minute * 60000);\n\t\tsecond = floor(time / 1000);\n\t\ttime -= floor(second * 1000);\n\n\t\treturn (\n\t\t\tpad(hour, 2) +\n\t\t\t':' +\n\t\t\tpad(minute, 2) +\n\t\t\t':' +\n\t\t\tpad(second, 2) +\n\t\t\t'.' +\n\t\t\tpad(time, 3)\n\t\t);\n\t},\n\t/**\n\t * Convert string to first letter capitalized. You might recognize me from PHP.\n\t * @param {string} str String to have the first letter capitalized\n\t * @returns {string} String with first letter capitalized\n\t */\n\tucfirst: function (str) {\n\t\tif (!_.isUndefined(str)) {\n\t\t\tif (str.length > 1) {\n\t\t\t\treturn str.charAt(0).toUpperCase() + str.substring(1);\n\t\t\t} else {\n\t\t\t\treturn str.toUpperCase();\n\t\t\t}\n\t\t}\n\t\treturn '';\n\t},\n\t/**\n\t * You can't have one without the other ... Lowercase the first character of a string.\n\t * @param {string} str String needing decapitalization\n\t * @returns {string} String with the first letter lowercased.\n\t */\n\tlcfirst: function (str) {\n\t\tif (_.isUndefined(str)) {\n\t\t\treturn str;\n\t\t}\n\t\tif (str.length > 1) {\n\t\t\treturn str.slice(0, 1).toLowerCase() + str.slice(1);\n\t\t} else {\n\t\t\treturn str.toLowerCase();\n\t\t}\n\t},\n\t/**\n\t * Convert string to a proper camelCased string\n\t * @param {string} str String you want camelCased\n\t * @returns {string} camelCased string\n\t */\n\ttoCamelCase: function (str) {\n\t\tif (_.isUndefined(str)) {\n\t\t\t//console.warn('undefined argument');\n\t\t\treturn undefined;\n\t\t}\n\t\tstr = str.toString();\n\t\t// First check if the first character is alphanumeric and strip it if it is not\n\t\t// Otherwise we will end up with a capital first word once non alphanumeric characters are removed\n\t\t// We dont' want to remove all of them yet as things like underscors and dashes symbolize a need for a new capitalized word\n\t\tstr = str.replace(/^[\\W]+/g, '');\n\n\t\t// Characters we will consider as markers for new words\n\t\tvar newWordCharacters = new RegExp(/[-_ .](.)/g);\n\t\tvar stripCharacters = new RegExp(/[\\W_]+/g);\n\n\t\t// Then check if we have capital letters already (\"GEO\", \"NLO / Country\", \"FileType\", etc)\n\t\tvar capitalizedArray = str.match(/([A-Z]?[^A-Z]*)/g).slice(0, -1);\n\t\tvar newStr = '';\n\n\t\t// If we have more than one capital letter we need to do and check some things ourselves\n\t\tif (capitalizedArray.length > 1) {\n\t\t\tfor (var i = 0, c = capitalizedArray.length; i < c; i++) {\n\t\t\t\t// If we are not at the last index\n\t\t\t\t// and this char is capital\n\t\t\t\t// and next char is capital as well\n\t\t\t\t// this maintains all cap words in the string\n\t\t\t\tif (\n\t\t\t\t\ti < c - 1 &&\n\t\t\t\t\tcapitalizedArray[i].toUpperCase() === capitalizedArray[i] &&\n\t\t\t\t\tcapitalizedArray[i + 1].toUpperCase() === capitalizedArray[i + 1]\n\t\t\t\t) {\n\t\t\t\t\tnewStr += capitalizedArray[i];\n\t\t\t\t} else {\n\t\t\t\t\t// If this is the first word and it contains a new word chartacter as defined above\n\t\t\t\t\tif (!i && newWordCharacters.test(capitalizedArray[i])) {\n\t\t\t\t\t\tcapitalizedArray[i] = capitalizedArray[i]\n\t\t\t\t\t\t\t.replace(newWordCharacters, function ($1) {\n\t\t\t\t\t\t\t\treturn $1.toUpperCase();\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.replace(/^(.)/, function ($1) {\n\t\t\t\t\t\t\t\treturn $1.toLowerCase();\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.replace(stripCharacters, '');\n\n\t\t\t\t\t\tnewStr += capitalizedArray[i];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// If it is the first word then we want it lowercase\n\t\t\t\t\t\tif (!i) {\n\t\t\t\t\t\t\tnewStr += capitalizedArray[i]\n\t\t\t\t\t\t\t\t.toLowerCase()\n\t\t\t\t\t\t\t\t.replace(/[\\W_]+/g, '');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnewStr += capitalizedArray[i]\n\t\t\t\t\t\t\t\t.replace(newWordCharacters, function ($1) {\n\t\t\t\t\t\t\t\t\treturn $1.toUpperCase();\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.replace(stripCharacters, '');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn newStr.replace(/[\\W_]+/g, '');\n\t\t}\n\n\t\t// If we are here than this is a standard camelCase issue\n\t\treturn str\n\t\t\t.replace(newWordCharacters, function ($1) {\n\t\t\t\treturn $1.toUpperCase();\n\t\t\t})\n\t\t\t.replace(/^(.)/, function ($1) {\n\t\t\t\treturn $1.toLowerCase();\n\t\t\t})\n\t\t\t.replace(/[\\W_]+/g, '');\n\t},\n\n\t/**\n\t * Convert a camel cased string and returns an underscored string\n\t * @param {string} str camelCased string you want under_scored\n\t * @returns {string} under_scored string\n\t */\n\tcamelCaseToUnderscore: function (str) {\n\t\tif (typeof str !== 'undefined') {\n\t\t\treturn str.replace(/([A-Z])/g, function ($1) {\n\t\t\t\treturn '_' + $1.toLowerCase();\n\t\t\t});\n\t\t}\n\t\treturn '';\n\t},\n\n\t/**\n\t * Convert a camel cased string and returns an dashed string\n\t * @param {string} str camelCased string you want dash-ed\n\t * @returns {string} dash-ed string\n\t */\n\tcamelCaseToDash: function (str) {\n\t\tif (typeof str !== 'undefined') {\n\t\t\treturn str.replace(/([A-Z])/g, function ($1) {\n\t\t\t\treturn '-' + $1.toLowerCase();\n\t\t\t});\n\t\t}\n\t\treturn '';\n\t},\n\n\t/**\n\t * Convert a camel cased string to a titled string\n\t * @param {string} str camelCased string you want To Turn Into A Titled String\n\t * @returns {string} titlelized string\n\t */\n\tcamelCaseToTitle: function (str) {\n\t\tif (typeof str !== 'undefined') {\n\t\t\tvar _str = _.ucfirst(\n\t\t\t\tstr.replace(/([A-Z])/g, function ($1) {\n\t\t\t\t\treturn ' ' + _.ucfirst($1.toLowerCase());\n\t\t\t\t}),\n\t\t\t);\n\t\t\tif (!_str.includes(' ')) {\n\t\t\t\t_str = _str.toUpperCase();\n\t\t\t}\n\t\t\treturn _str;\n\t\t}\n\t\treturn '';\n\t},\n\t/**\n\t * Given a collection, an array of models, an array of objects or a single object,\n\t * return a Backbone.Collection of the given class.\n\t * @param {*} obj Item to be converted to Collection.\n\t * @param {Object} targetClass Target Collection type -- a Backbone class extended from Backbone.Collection.\n\t * @param {Object} classOptions Any Backbone options to pass to the collection instantiation call.\n\t */\n\ttoCollection: function (obj, targetClass, classOptions) {\n\t\tif (_.isUndefined(targetClass)) {\n\t\t\tthrow new Error('Undefined target class');\n\t\t}\n\n\t\t// If we got an undefined object but a defined class,\n\t\t// return an empty collection of that class.\n\t\tif (_.isUndefined(obj)) {\n\t\t\treturn new targetClass([], classOptions);\n\t\t}\n\n\t\t// Maybe obj needs no conversion?\n\t\tif (obj instanceof targetClass) {\n\t\t\treturn obj;\n\t\t}\n\n\t\t// if obj is an array of models or bare objects, Backbone will convert it as needed.\n\t\tif (_.isArray(obj)) {\n\t\t\t//return new targetClass( obj, classOptions );\n\t\t\treturn new targetClass(\n\t\t\t\t_.map(obj, function (item) {\n\t\t\t\t\t// Don't process models.\n\t\t\t\t\tif (item.isModel) {\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t}\n\t\t\t\t\t// Let Backbone convert bare objects into models.\n\t\t\t\t\tif (_.isObject(item)) {\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t}\n\t\t\t\t\tif (_.isNumeric(item)) {\n\t\t\t\t\t\t// Convert objectIds into objects.\n\t\t\t\t\t\tvar model = new targetClass.prototype.model();\n\t\t\t\t\t\t// Fetch them, too.\n\t\t\t\t\t\tmodel.set(model.idAttribute, item);\n\t\t\t\t\t\tmodel.fetch();\n\t\t\t\t\t\treturn model;\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tclassOptions,\n\t\t\t);\n\t\t}\n\n\t\t// TODO: this is a troublesome mixin and will no longer work as models are defined at constructor time\n\n\t\t// If obj is a Model of the correct type, it just needs wrapping.\n\t\t// If obj is a bare object, Backbone will convert it to the correct type.\n\t\tif (obj instanceof targetClass.prototype.model || _.isObject(obj)) {\n\t\t\treturn new targetClass([obj], classOptions);\n\t\t}\n\n\t\tthrow new Error(\"can't convert \" + obj + ' to class ' + targetClass);\n\t},\n\n\t/**\n\t * Given a DOM object, a jQuery object, a jQuery selector or a DOM ID\n\t * return a jQuery object.\n\t * @param {*} obj Item to be converted to jQuery object\n\t * @returns jQuery object\n\t */\n\ttoJQ: function (obj) {\n\t\tif (typeof obj === 'string') {\n\t\t\t/*\n\t\t\t * Upgrading this to handle a selector is easy, but most of the system still passes bare IDs.\n\t\t\t * The following bit of logic tries to avoid excess query work:\n\t\t\t */\n\t\t\tvar jqObj = [];\n\n\t\t\t// this string of yours ... is it a jquery selector?\n\t\t\tif (obj.search(/[#.]/)) {\n\t\t\t\t// does it have id or class selector sigils?\n\t\t\t\tjqObj = $(obj);\n\t\t\t}\n\n\t\t\t// if that failed (or wasn't tried), try backwards-compability: we used to accept a bare element ID\n\t\t\tif (jqObj.length === 0 && obj.indexOf('#') === -1) {\n\t\t\t\tjqObj = $('#' + obj);\n\t\t\t}\n\t\t\t// if that failed, maybe it's a selector after all.\n\t\t\tif (jqObj.length === 0) {\n\t\t\t\tjqObj = $(obj);\n\t\t\t}\n\n\t\t\tobj = jqObj;\n\t\t} else if (typeof obj === 'object') {\n\t\t\tif (obj.nodeType) {\n\t\t\t\tobj = $(obj);\n\t\t\t} else if (typeof obj.jquery === 'string') {\n\t\t\t\t// already jQuery. leave it alone\n\t\t\t\treturn obj;\n\t\t\t} else {\n\t\t\t\tconsole.warn('toJQ received bogus object: ', obj);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.warn('toJQ received bogus argument: ', obj);\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t/**\n\t * Convert various things (an assetId, an asset model, or an array of either)\n\t * to an array of 1 or more assetIDs.\n\t *\n\t * 'assets' may be integer assetIDs or full-on asset models,\n\t * and it can be either an array of them or just one.\n\t * @param {*} assets Array of assetIDs or asset models\n\t * @returns {array} A tidy array of assets\n\t */\n\ttidyAssetList: function (assets) {\n\t\tif (_.isArguments(assets)) {\n\t\t\tassets = _.rest(assets, 0);\n\t\t} else if (!_.isArray(assets)) {\n\t\t\tassets = [assets];\n\t\t}\n\n\t\tvar tidyAssets = [];\n\n\t\t_.each(assets, function (a, idx, all) {\n\t\t\tif (_.isObject(a)) {\n\t\t\t\ttidyAssets.push(a.id);\n\t\t\t} else {\n\t\t\t\ttidyAssets.push(a);\n\t\t\t}\n\t\t});\n\n\t\treturn tidyAssets;\n\t},\n\n\t/**\n\t * Determine where to place a pop-up context menu; takes the click event and a menu element\n\t * @param {event} e MouseEvent\n\t * @param {object} $menu jQuery object for the context menu\n\t * @returns {object} Position\n\t */\n\tgetMenuPosition: function (e, $menu) {\n\t\t$menu = _.toJQ($menu);\n\n\t\tvar mouseX = e.clientX,\n\t\t\tmouseY = e.clientY,\n\t\t\tboundsX = $(window).width(),\n\t\t\tboundsY = $(window).height(),\n\t\t\tmenuWidth = $menu.find('.dropdown-menu').outerWidth(),\n\t\t\tmenuHeight = $menu.find('.dropdown-menu [role=\"menu\"]').outerHeight(),\n\t\t\ttp = {position: 'absolute'},\n\t\t\tY,\n\t\t\tX;\n\n\t\tif (mouseX == null) mouseX = e.pageX;\n\t\tif (mouseY == null) mouseY = e.pageY;\n\n\t\t// If menu is going to be cutoff at bottom of screen, move it up\n\t\t// The +15 is for padding, otherwise menu can open right to the bottom\n\t\t// of the screen and look cutoff, even though it isn't\n\t\tif (mouseY + menuHeight + 15 > boundsY) {\n\t\t\tY = {top: mouseY - menuHeight + $(window).scrollTop()};\n\t\t} else {\n\t\t\tY = {top: mouseY + $(window).scrollTop()};\n\t\t}\n\n\t\t// If menu is going ot be cutoff at right of screen, move it left\n\t\tif (mouseX + menuWidth > boundsX && mouseX - menuWidth > 0) {\n\t\t\tX = {left: mouseX - menuWidth + $(window).scrollLeft()};\n\t\t} else {\n\t\t\tX = {left: mouseX + $(window).scrollLeft()};\n\t\t}\n\n\t\t// Adjust the position of the menu by its offset parent position.\n\t\tvar selectorPosition = $menu.offsetParent().offset();\n\t\tX.left = X.left - selectorPosition.left;\n\t\tY.top = Y.top - selectorPosition.top;\n\n\t\treturn $.extend(tp, Y, X);\n\t},\n\n\t/**\n\t * Utils to convert back & forth between the DAM's quoted-csv format for multiselects <-> a normal array.\n\t * TODO: escape and unescape double-quotes!\n\t * @param {string} csv CSV string\n\t * @returns {array} CSV as array\n\t */\n\tcsvToArray,\n\n\t/**\n\t * Utils to convert back & forth between the DAM's quoted-csv format for multiselects <-> a normal array.\n\t * TODO: escape and unescape double-quotes and commas!\n\t * @param {array} array Array to convert to CSV string\n\t * @returns {string} Array as CSV string\n\t */\n\tarrayToCsv,\n\n\t// Color utilities\n\t/**\n\t * Convert a color to a new shade\n\t * @param {hex} color Hex color '#000000'\n\t * @param {integer} percent Percentage of shading as an integer\n\t * @returns {hex} New shade of color '#000000'\n\t */\n\tshadeColor: function (color, percent) {\n\t\tvar R = parseInt(color.substring(1, 3), 16),\n\t\t\tG = parseInt(color.substring(3, 5), 16),\n\t\t\tB = parseInt(color.substring(5, 7), 16);\n\n\t\tR = parseInt((R * (100 + percent)) / 100);\n\t\tG = parseInt((G * (100 + percent)) / 100);\n\t\tB = parseInt((B * (100 + percent)) / 100);\n\n\t\tR = R < 255 ? R : 255;\n\t\tG = G < 255 ? G : 255;\n\t\tB = B < 255 ? B : 255;\n\n\t\tvar RR = R.toString(16).length == 1 ? '0' + R.toString(16) : R.toString(16),\n\t\t\tGG = G.toString(16).length == 1 ? '0' + G.toString(16) : G.toString(16),\n\t\t\tBB = B.toString(16).length == 1 ? '0' + B.toString(16) : B.toString(16);\n\n\t\treturn '#' + RR + GG + BB;\n\t},\n\n\t/**\n\t * Convert Hex color to RGB color\n\t * @param {hex} color Hex color to be converted to RGB\n\t * @returns {object} RGB color '{ r: 0, g: 0, b: 0 }'\n\t */\n\thexToRgb: function (hex) {\n\t\tvar result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\t\treturn result\n\t\t\t? {\n\t\t\t\t\tr: parseInt(result[1], 16),\n\t\t\t\t\tg: parseInt(result[2], 16),\n\t\t\t\t\tb: parseInt(result[3], 16),\n\t\t\t }\n\t\t\t: {r: 0, g: 0, b: 0};\n\t},\n\t/**\n\t * Convert RGB color to HSL color\n\t * @param {hex} color Hex color to be converted to RGB\n\t * @returns {object} HSL color '{ h: 0, s: 0, l: 0 }'\n\t */\n\n\trgbToHsl: function (rgb) {\n\t\tvar r = rgb[0],\n\t\t\tg = rgb[1],\n\t\t\tb = rgb[2];\n\n\t\t// DEVNOTE: eslint flags this as an error -- https://github.com/eslint/eslint/blob/master/docs/rules/no-sequences.md\n\t\t(r /= 255), (g /= 255), (b /= 255);\n\t\t// Any reason not to use semicolons instead of commas here? -m-\n\n\t\tvar max = Math.max(r, g, b),\n\t\t\tmin = Math.min(r, g, b),\n\t\t\th,\n\t\t\ts,\n\t\t\tl = (max + min) / 2;\n\n\t\tif (max == min) {\n\t\t\th = s = 0; // achromatic\n\t\t} else {\n\t\t\tvar d = max - min;\n\t\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\t\tswitch (max) {\n\t\t\t\tcase r:\n\t\t\t\t\th = (g - b) / d + (g < b ? 6 : 0);\n\t\t\t\t\tbreak;\n\t\t\t\tcase g:\n\t\t\t\t\th = (b - r) / d + 2;\n\t\t\t\t\tbreak;\n\t\t\t\tcase b:\n\t\t\t\t\th = (r - g) / d + 4;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\th /= 6;\n\t\t}\n\t\treturn {h: h, s: s, l: l};\n\t},\n\n\t/**\n\t * I feel I must me missing something here. Is it really the case that\n\t * neither JS, jQuery or underscore have a function to parse the URI query string\n\t * into an object? Please prove me wrong. -m-\n\t */\n\tparseQuery: function () {\n\t\treturn (\n\t\t\t_.chain(\n\t\t\t\t// get the query string (if any) without the leading ?\n\t\t\t\twindow.location.search\n\t\t\t\t\t.slice(1)\n\t\t\t\t\t// chop it up by &\n\t\t\t\t\t.split('&'),\n\t\t\t)\n\t\t\t\t// clean out any weird undefined stuff\n\t\t\t\t.compact()\n\t\t\t\t// chop each string into a tuple by its equals (if any)\n\t\t\t\t.map(function (item) {\n\t\t\t\t\tif (item) return item.split('=');\n\t\t\t\t})\n\t\t\t\t// uri-decode the values, if any\n\t\t\t\t// (NOTE: not sure if i'm supposed to decode the keys or not. There is no standard, apparently ...)\n\t\t\t\t.map(function (array) {\n\t\t\t\t\treturn array.length == 2 ? [array[0], decodeURI(array[1])] : array;\n\t\t\t\t})\n\t\t\t\t// Make that an object.\n\t\t\t\t.object()\n\t\t\t\t.value()\n\t\t);\n\t},\n\n\t/**\n\t * This seems like something underscore would have, but it doesn't:\n\t * http://stackoverflow.com/questions/8747561/is-there-any-way-to-rename-js-object-keys-using-underscore-js\n\t */\n\tmapKeys: function (obj, map) {\n\t\tvar result = {};\n\t\t_.chain(obj)\n\t\t\t.keys()\n\t\t\t.each(function (key) {\n\t\t\t\tvar newKey;\n\t\t\t\tif (_.isFunction(map)) {\n\t\t\t\t\tnewKey = map(key) || key;\n\t\t\t\t} else {\n\t\t\t\t\tnewKey = map[key] || key;\n\t\t\t\t}\n\t\t\t\tresult[newKey] = obj[key];\n\t\t\t});\n\t\treturn result;\n\t},\n});\n\nexport default _;\n","import View from './netx-view';\nimport _ from 'underscore';\nimport {performLegacyAction} from '@netx/core-next/utils/actions/performLegacyAction';\nimport type AppView from '@netx/core-app/models/appView';\nimport type Collection from '@netx/core/lib/netx-collection';\nimport type Model from '@netx/core/lib/netx-model';\n\nexport {isBrandPortal, protectObjectProxy} from '../utils';\n\nexport const getViewModel = <TModel extends Model = Model>(\n\tview: View<TModel | AppView<TModel>>,\n): TModel | undefined => {\n\tconst viewData = view.data || {};\n\tlet model = viewData.model || view.model;\n\tif (model && model.isAppView) {\n\t\tmodel = model.viewModel as TModel;\n\t}\n\treturn !model ? undefined : (model as TModel);\n};\n\nexport const getViewCollection = <TCollection extends Collection = Collection>(\n\tview: View<any, TCollection>,\n): TCollection | undefined => {\n\tconst viewData = view.data || {};\n\tconst collection = viewData.collection || view.collection;\n\treturn !collection ? undefined : (collection as TCollection);\n};\n\nexport const performAction = performLegacyAction;\n\nexport const isTouchEnabled = () =>\n\t'ontouchstart' in window || navigator?.maxTouchPoints > 0;\n\nexport default {\n\tgetViewCollection,\n\tgetViewModel,\n\tperformAction,\n};\n","/**\n * Escape special characters in the URI function escapes [']\n * @param str URI string to be escaped\n * @return Escaped URI string\n * @deprecated\n * @see `@netx/core-next/utils/string/enhancedEncodeURIComponent`\n */\nexport const escapeURI = (str: string) => {\n\treturn encodeURIComponent(str).replace(\"'\", '%27');\n};\n\nexport default escapeURI;\n","export const normalizeFileType = (fileType?: string, fileName?: string) => {\n\tfileType = fileType || 'unknown';\n\tconst fileTypePieces = fileType.split('/');\n\tif (fileTypePieces[1]) fileType = fileTypePieces[1];\n\tswitch (fileType) {\n\t\tcase 'mpeg':\n\t\t\tif (fileName?.endsWith('.mp3')) return 'mp3';\n\t}\n\treturn fileType.replace(/^x-/, '');\n};\n\nexport default normalizeFileType;\n","import {normalizeFileType} from './normalizeFileType';\n\nexport const getGenericIconUrl = (fileType?: string, fileName?: string) => {\n\treturn `/icons/${normalizeFileType(fileType, fileName).toLowerCase()}.png`;\n};\n\nexport default getGenericIconUrl;\n","export const dateToHTML = (d: Date | string | number) => {\n\tif (!d) return '';\n\n\t// Support milliseconds\n\tif (typeof d === 'number') d = new Date(d);\n\n\tif (d instanceof Date) {\n\t\treturn [\n\t\t\td.getFullYear(),\n\t\t\t(d.getMonth() + 1).toString().padStart(2, '0'),\n\t\t\td.getDate().toString().padStart(2, '0'),\n\t\t].join('-');\n\t}\n\n\tconst temp = d.split('/');\n\tif (temp.length && temp[0].length === 4)\n\t\treturn d.replace(/(\\d+)\\/(\\d+)\\/(\\d+)/, '$1-$2-$3');\n\n\treturn d.replace(/(\\d+)\\/(\\d+)\\/(\\d+)/, '$3-$1-$2');\n};\n\nexport default dateToHTML;\n","import {parse} from 'date-fns';\n\nexport const getIsoLongDateFromIsoShortDate = (value?: string | null) => {\n\treturn value == null\n\t\t? null\n\t\t: parse(value, 'yyyy-MM-dd', new Date()).toISOString();\n};\n\nexport default getIsoLongDateFromIsoShortDate;\n","import {format, parseISO} from 'date-fns';\n\nexport const getIsoShortDateFromIsoLongDate = (value?: string | null) => {\n\treturn value == null ? value : format(parseISO(value), 'yyyy-MM-dd');\n};\n\nexport default getIsoShortDateFromIsoLongDate;\n","export const getNormalizedHexColor = (color: any) => {\n\tif (typeof color !== 'string') return color;\n\tif ((color.length === 4 || color.length === 7) && color.match(/^#/))\n\t\treturn color;\n\treturn `#${color}`;\n};\n\nexport default getNormalizedHexColor;\n","import {Events} from 'backbone';\n\n/**\n * Register a backbone event and return a function to unregister it.\n * @param thing Backbone collection/model/view/dispatcher (anything that extends `Backbone.Events`)\n * @param event Event name\n * @param cb Event callback\n * @returns Function to unregister the event\n *\n * @example\n * ```ts\n * const unregister = registerBackboneEvent(collection, 'add', (model) => {...});\n * unregister();\n * ```\n */\nexport const registerBackboneEvent = <T extends Events = Events>(\n\tthing: T,\n\tevent: string,\n\tcb: (...args: any) => void,\n) => {\n\tthing.on(event, cb);\n\treturn () => thing.off(event, cb);\n};\n\nexport default registerBackboneEvent;\n","import {emptyValueSymbol} from '@netx/core-attribute/constants';\n\n/**\n * @param value Value\n * @return Is empty value\n */\nexport const isEmptyValue = (value: any) => {\n\tif (value === emptyValueSymbol) return true;\n\tif (value === void 0 || value == null) return true;\n\tif (value.length === 0) return true;\n\tif (typeof value === 'string' && value.trim() === '') return true;\n\tif (Array.isArray(value) && value[0] === '') return true;\n\treturn false;\n};\n\nexport default isEmptyValue;\n","/**\n * Purge elements from an array of elements\n * @param els Elements selected\n * @param purgeEls Elements to be purged from\n * @returns Elements after purging\n *\n * @example\n * ```ts\n * const els = document.querySelectorAll('.el');\n * const purge = document.querySelectorAll('.purge-el');\n * const newEls = purgeEls(els, purgeEls);\n * ```\n */\nexport const purgeEls = (els: Element[], purge: Element[]) => {\n\tconst purgeCount = purge.length;\n\tif (purgeCount === 0) return els;\n\n\treturn els.filter((el) => {\n\t\tfor (let i = 0; i < purgeCount; i++) {\n\t\t\tif (purge[i].contains(el)) return false;\n\t\t}\n\t\treturn true;\n\t});\n};\n\nexport default purgeEls;\n","/**\n * Generate random text.\n * @param {number} length How much.\n * @param {string} [chars] A set of characters to compose random text from.\n */\nexport const randomChars = (length: number, chars: string) => {\n\tif (!chars) {\n\t\tchars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\t}\n\tlet result = '';\n\tfor (let i = length; i > 0; --i) {\n\t\tresult += chars[Math.round(Math.random() * (chars.length - 1))];\n\t}\n\treturn result;\n};\n\nexport default randomChars;\n","import _ from 'underscore';\n\n/**\n * Unescape asset attribute name in form fields.\n * (Specifically, do everything underscore's _.unescape method does,\n * and also decode the HTML entities for open & close parens, if present.)\n *\n * @param {string} string Attribute name\n * @return {string} Unescaped attribute name\n */\nexport const unescapeAttributeName = (string: string) => {\n\tstring = _.unescape(string);\n\tstring = string\n\t\t.replace(/(/g, '(')\n\t\t.replace(/)/g, ')')\n\t\t.replace(/[/g, '[')\n\t\t.replace(/]/g, ']');\n\treturn string;\n};\n\nexport default unescapeAttributeName;\n","/**\n * Unescape special characters in the URI function unescape [%27]\n * @param {string} str URI string to be unescaped\n * @return {string} Unescaped URI string\n *\n * @deprecated Use `decodeURIComponent` directly\\\n * Even though encodeURIComponent does not encode EVERYTHING, decodeURIComponent will decode everything\n */\nexport const unescapeURI = (str: string) => {\n\treturn decodeURIComponent(str.replace('%27', \"'\"));\n};\n\nexport default unescapeURI;\n","/** @license URI.js v4.4.1 (c) 2011 Gary Court. License: http://github.com/garycourt/uri-js */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n\ttypeof define === 'function' && define.amd ? define(['exports'], factory) :\n\t(factory((global.URI = global.URI || {})));\n}(this, (function (exports) { 'use strict';\n\nfunction merge() {\n for (var _len = arguments.length, sets = Array(_len), _key = 0; _key < _len; _key++) {\n sets[_key] = arguments[_key];\n }\n\n if (sets.length > 1) {\n sets[0] = sets[0].slice(0, -1);\n var xl = sets.length - 1;\n for (var x = 1; x < xl; ++x) {\n sets[x] = sets[x].slice(1, -1);\n }\n sets[xl] = sets[xl].slice(1);\n return sets.join('');\n } else {\n return sets[0];\n }\n}\nfunction subexp(str) {\n return \"(?:\" + str + \")\";\n}\nfunction typeOf(o) {\n return o === undefined ? \"undefined\" : o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase();\n}\nfunction toUpperCase(str) {\n return str.toUpperCase();\n}\nfunction toArray(obj) {\n return obj !== undefined && obj !== null ? obj instanceof Array ? obj : typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj) : [];\n}\nfunction assign(target, source) {\n var obj = target;\n if (source) {\n for (var key in source) {\n obj[key] = source[key];\n }\n }\n return obj;\n}\n\nfunction buildExps(isIRI) {\n var ALPHA$$ = \"[A-Za-z]\",\n CR$ = \"[\\\\x0D]\",\n DIGIT$$ = \"[0-9]\",\n DQUOTE$$ = \"[\\\\x22]\",\n HEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"),\n //case-insensitive\n LF$$ = \"[\\\\x0A]\",\n SP$$ = \"[\\\\x20]\",\n PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)),\n //expanded\n GEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n SUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n RESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n UCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\",\n //subset, excludes bidi control characters\n IPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\",\n //subset\n UNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n SCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n USERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n DEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n DEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$),\n //relaxed parsing rules\n IPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n H16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n LS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n IPV6ADDRESS1$ = subexp(subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$),\n // 6( h16 \":\" ) ls32\n IPV6ADDRESS2$ = subexp(\"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$),\n // \"::\" 5( h16 \":\" ) ls32\n IPV6ADDRESS3$ = subexp(subexp(H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$),\n //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n IPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$),\n //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n IPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$),\n //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n IPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$),\n //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n IPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$),\n //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n IPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$),\n //[ *5( h16 \":\" ) h16 ] \"::\" h16\n IPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\"),\n //[ *6( h16 \":\" ) h16 ] \"::\"\n IPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n ZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"),\n //RFC 6874\n IPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$),\n //RFC 6874\n IPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$),\n //RFC 6874, with relaxed parsing rules\n IPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n IP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"),\n //RFC 6874\n REG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n HOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n PORT$ = subexp(DIGIT$$ + \"*\"),\n AUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n PCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n SEGMENT$ = subexp(PCHAR$ + \"*\"),\n SEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n SEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n PATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n PATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"),\n //simplified\n PATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$),\n //simplified\n PATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$),\n //simplified\n PATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n PATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n QUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n FRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n HIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n RELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n RELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n URI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n ABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n GENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n RELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n ABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n SAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n AUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\";\n return {\n NOT_SCHEME: new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n NOT_USERINFO: new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_HOST: new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_PATH: new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_PATH_NOSCHEME: new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n NOT_QUERY: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n NOT_FRAGMENT: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n ESCAPE: new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n UNRESERVED: new RegExp(UNRESERVED$$, \"g\"),\n OTHER_CHARS: new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n PCT_ENCODED: new RegExp(PCT_ENCODED$, \"g\"),\n IPV4ADDRESS: new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n IPV6ADDRESS: new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n };\n}\nvar URI_PROTOCOL = buildExps(false);\n\nvar IRI_PROTOCOL = buildExps(true);\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar toConsumableArray = function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n\n/** Highest positive signed 32-bit float value */\n\nvar maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nvar base = 36;\nvar tMin = 1;\nvar tMax = 26;\nvar skew = 38;\nvar damp = 700;\nvar initialBias = 72;\nvar initialN = 128; // 0x80\nvar delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nvar regexPunycode = /^xn--/;\nvar regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nvar regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nvar errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nvar baseMinusTMin = base - tMin;\nvar floor = Math.floor;\nvar stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error$1(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tvar result = [];\n\tvar length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tvar parts = string.split('@');\n\tvar result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tvar labels = string.split('.');\n\tvar encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tvar output = [];\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t// Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nvar ucs2encode = function ucs2encode(array) {\n\treturn String.fromCodePoint.apply(String, toConsumableArray(array));\n};\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nvar basicToDigit = function basicToDigit(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nvar digitToBasic = function digitToBasic(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nvar adapt = function adapt(delta, numPoints, firstTime) {\n\tvar k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (; /* no initialization */delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nvar decode = function decode(input) {\n\t// Don't use UCS-2.\n\tvar output = [];\n\tvar inputLength = input.length;\n\tvar i = 0;\n\tvar n = initialN;\n\tvar bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tvar basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (var j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror$1('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (var index = basic > 0 ? basic + 1 : 0; index < inputLength;) /* no final expression */{\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tvar oldi = i;\n\t\tfor (var w = 1, k = base;; /* no condition */k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror$1('invalid-input');\n\t\t\t}\n\n\t\t\tvar digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror$1('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tvar t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tvar baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror$1('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\t\t}\n\n\t\tvar out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror$1('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\t}\n\n\treturn String.fromCodePoint.apply(String, output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nvar encode = function encode(input) {\n\tvar output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tvar inputLength = input.length;\n\n\t// Initialize the state.\n\tvar n = initialN;\n\tvar delta = 0;\n\tvar bias = initialBias;\n\n\t// Handle the basic code points.\n\tvar _iteratorNormalCompletion = true;\n\tvar _didIteratorError = false;\n\tvar _iteratorError = undefined;\n\n\ttry {\n\t\tfor (var _iterator = input[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n\t\t\tvar _currentValue2 = _step.value;\n\n\t\t\tif (_currentValue2 < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(_currentValue2));\n\t\t\t}\n\t\t}\n\t} catch (err) {\n\t\t_didIteratorError = true;\n\t\t_iteratorError = err;\n\t} finally {\n\t\ttry {\n\t\t\tif (!_iteratorNormalCompletion && _iterator.return) {\n\t\t\t\t_iterator.return();\n\t\t\t}\n\t\t} finally {\n\t\t\tif (_didIteratorError) {\n\t\t\t\tthrow _iteratorError;\n\t\t\t}\n\t\t}\n\t}\n\n\tvar basicLength = output.length;\n\tvar handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tvar m = maxInt;\n\t\tvar _iteratorNormalCompletion2 = true;\n\t\tvar _didIteratorError2 = false;\n\t\tvar _iteratorError2 = undefined;\n\n\t\ttry {\n\t\t\tfor (var _iterator2 = input[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n\t\t\t\tvar currentValue = _step2.value;\n\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow.\n\t\t} catch (err) {\n\t\t\t_didIteratorError2 = true;\n\t\t\t_iteratorError2 = err;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!_iteratorNormalCompletion2 && _iterator2.return) {\n\t\t\t\t\t_iterator2.return();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (_didIteratorError2) {\n\t\t\t\t\tthrow _iteratorError2;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror$1('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tvar _iteratorNormalCompletion3 = true;\n\t\tvar _didIteratorError3 = false;\n\t\tvar _iteratorError3 = undefined;\n\n\t\ttry {\n\t\t\tfor (var _iterator3 = input[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n\t\t\t\tvar _currentValue = _step3.value;\n\n\t\t\t\tif (_currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror$1('overflow');\n\t\t\t\t}\n\t\t\t\tif (_currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\t\tvar q = delta;\n\t\t\t\t\tfor (var k = base;; /* no condition */k += base) {\n\t\t\t\t\t\tvar t = k <= bias ? tMin : k >= bias + tMax ? tMax : k - bias;\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvar qMinusT = q - t;\n\t\t\t\t\t\tvar baseMinusT = base - t;\n\t\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)));\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (err) {\n\t\t\t_didIteratorError3 = true;\n\t\t\t_iteratorError3 = err;\n\t\t} finally {\n\t\t\ttry {\n\t\t\t\tif (!_iteratorNormalCompletion3 && _iterator3.return) {\n\t\t\t\t\t_iterator3.return();\n\t\t\t\t}\n\t\t\t} finally {\n\t\t\t\tif (_didIteratorError3) {\n\t\t\t\t\tthrow _iteratorError3;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nvar toUnicode = function toUnicode(input) {\n\treturn mapDomain(input, function (string) {\n\t\treturn regexPunycode.test(string) ? decode(string.slice(4).toLowerCase()) : string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nvar toASCII = function toASCII(input) {\n\treturn mapDomain(input, function (string) {\n\t\treturn regexNonASCII.test(string) ? 'xn--' + encode(string) : string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nvar punycode = {\n\t/**\n * A string representing the current Punycode.js version number.\n * @memberOf punycode\n * @type String\n */\n\t'version': '2.1.0',\n\t/**\n * An object of methods to convert from JavaScript's internal character\n * representation (UCS-2) to Unicode code points, and back.\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode\n * @type Object\n */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\n/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\nvar SCHEMES = {};\nfunction pctEncChar(chr) {\n var c = chr.charCodeAt(0);\n var e = void 0;\n if (c < 16) e = \"%0\" + c.toString(16).toUpperCase();else if (c < 128) e = \"%\" + c.toString(16).toUpperCase();else if (c < 2048) e = \"%\" + (c >> 6 | 192).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();else e = \"%\" + (c >> 12 | 224).toString(16).toUpperCase() + \"%\" + (c >> 6 & 63 | 128).toString(16).toUpperCase() + \"%\" + (c & 63 | 128).toString(16).toUpperCase();\n return e;\n}\nfunction pctDecChars(str) {\n var newStr = \"\";\n var i = 0;\n var il = str.length;\n while (i < il) {\n var c = parseInt(str.substr(i + 1, 2), 16);\n if (c < 128) {\n newStr += String.fromCharCode(c);\n i += 3;\n } else if (c >= 194 && c < 224) {\n if (il - i >= 6) {\n var c2 = parseInt(str.substr(i + 4, 2), 16);\n newStr += String.fromCharCode((c & 31) << 6 | c2 & 63);\n } else {\n newStr += str.substr(i, 6);\n }\n i += 6;\n } else if (c >= 224) {\n if (il - i >= 9) {\n var _c = parseInt(str.substr(i + 4, 2), 16);\n var c3 = parseInt(str.substr(i + 7, 2), 16);\n newStr += String.fromCharCode((c & 15) << 12 | (_c & 63) << 6 | c3 & 63);\n } else {\n newStr += str.substr(i, 9);\n }\n i += 9;\n } else {\n newStr += str.substr(i, 3);\n i += 3;\n }\n }\n return newStr;\n}\nfunction _normalizeComponentEncoding(components, protocol) {\n function decodeUnreserved(str) {\n var decStr = pctDecChars(str);\n return !decStr.match(protocol.UNRESERVED) ? str : decStr;\n }\n if (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n if (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n if (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n return components;\n}\n\nfunction _stripLeadingZeros(str) {\n return str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\nfunction _normalizeIPv4(host, protocol) {\n var matches = host.match(protocol.IPV4ADDRESS) || [];\n\n var _matches = slicedToArray(matches, 2),\n address = _matches[1];\n\n if (address) {\n return address.split(\".\").map(_stripLeadingZeros).join(\".\");\n } else {\n return host;\n }\n}\nfunction _normalizeIPv6(host, protocol) {\n var matches = host.match(protocol.IPV6ADDRESS) || [];\n\n var _matches2 = slicedToArray(matches, 3),\n address = _matches2[1],\n zone = _matches2[2];\n\n if (address) {\n var _address$toLowerCase$ = address.toLowerCase().split('::').reverse(),\n _address$toLowerCase$2 = slicedToArray(_address$toLowerCase$, 2),\n last = _address$toLowerCase$2[0],\n first = _address$toLowerCase$2[1];\n\n var firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n var lastFields = last.split(\":\").map(_stripLeadingZeros);\n var isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n var fieldCount = isLastFieldIPv4Address ? 7 : 8;\n var lastFieldsStart = lastFields.length - fieldCount;\n var fields = Array(fieldCount);\n for (var x = 0; x < fieldCount; ++x) {\n fields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n }\n if (isLastFieldIPv4Address) {\n fields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n }\n var allZeroFields = fields.reduce(function (acc, field, index) {\n if (!field || field === \"0\") {\n var lastLongest = acc[acc.length - 1];\n if (lastLongest && lastLongest.index + lastLongest.length === index) {\n lastLongest.length++;\n } else {\n acc.push({ index: index, length: 1 });\n }\n }\n return acc;\n }, []);\n var longestZeroFields = allZeroFields.sort(function (a, b) {\n return b.length - a.length;\n })[0];\n var newHost = void 0;\n if (longestZeroFields && longestZeroFields.length > 1) {\n var newFirst = fields.slice(0, longestZeroFields.index);\n var newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n newHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n } else {\n newHost = fields.join(\":\");\n }\n if (zone) {\n newHost += \"%\" + zone;\n }\n return newHost;\n } else {\n return host;\n }\n}\nvar URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nvar NO_MATCH_IS_UNDEFINED = \"\".match(/(){0}/)[1] === undefined;\nfunction parse(uriString) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var components = {};\n var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n if (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n var matches = uriString.match(URI_PARSE);\n if (matches) {\n if (NO_MATCH_IS_UNDEFINED) {\n //store each component\n components.scheme = matches[1];\n components.userinfo = matches[3];\n components.host = matches[4];\n components.port = parseInt(matches[5], 10);\n components.path = matches[6] || \"\";\n components.query = matches[7];\n components.fragment = matches[8];\n //fix port number\n if (isNaN(components.port)) {\n components.port = matches[5];\n }\n } else {\n //IE FIX for improper RegExp matching\n //store each component\n components.scheme = matches[1] || undefined;\n components.userinfo = uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined;\n components.host = uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined;\n components.port = parseInt(matches[5], 10);\n components.path = matches[6] || \"\";\n components.query = uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined;\n components.fragment = uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined;\n //fix port number\n if (isNaN(components.port)) {\n components.port = uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined;\n }\n }\n if (components.host) {\n //normalize IP hosts\n components.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n }\n //determine reference type\n if (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n components.reference = \"same-document\";\n } else if (components.scheme === undefined) {\n components.reference = \"relative\";\n } else if (components.fragment === undefined) {\n components.reference = \"absolute\";\n } else {\n components.reference = \"uri\";\n }\n //check for reference errors\n if (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n components.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n }\n //find scheme handler\n var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n //check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n //if host component is a domain name\n if (components.host && (options.domainHost || schemeHandler && schemeHandler.domainHost)) {\n //convert Unicode IDN -> ASCII IDN\n try {\n components.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n } catch (e) {\n components.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n }\n }\n //convert IRI -> URI\n _normalizeComponentEncoding(components, URI_PROTOCOL);\n } else {\n //normalize encodings\n _normalizeComponentEncoding(components, protocol);\n }\n //perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(components, options);\n }\n } else {\n components.error = components.error || \"URI can not be parsed.\";\n }\n return components;\n}\n\nfunction _recomposeAuthority(components, options) {\n var protocol = options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL;\n var uriTokens = [];\n if (components.userinfo !== undefined) {\n uriTokens.push(components.userinfo);\n uriTokens.push(\"@\");\n }\n if (components.host !== undefined) {\n //normalize IP hosts, add brackets and escape zone separator for IPv6\n uriTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, function (_, $1, $2) {\n return \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\";\n }));\n }\n if (typeof components.port === \"number\" || typeof components.port === \"string\") {\n uriTokens.push(\":\");\n uriTokens.push(String(components.port));\n }\n return uriTokens.length ? uriTokens.join(\"\") : undefined;\n}\n\nvar RDS1 = /^\\.\\.?\\//;\nvar RDS2 = /^\\/\\.(\\/|$)/;\nvar RDS3 = /^\\/\\.\\.(\\/|$)/;\nvar RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\nfunction removeDotSegments(input) {\n var output = [];\n while (input.length) {\n if (input.match(RDS1)) {\n input = input.replace(RDS1, \"\");\n } else if (input.match(RDS2)) {\n input = input.replace(RDS2, \"/\");\n } else if (input.match(RDS3)) {\n input = input.replace(RDS3, \"/\");\n output.pop();\n } else if (input === \".\" || input === \"..\") {\n input = \"\";\n } else {\n var im = input.match(RDS5);\n if (im) {\n var s = im[0];\n input = input.slice(s.length);\n output.push(s);\n } else {\n throw new Error(\"Unexpected dot segment condition\");\n }\n }\n }\n return output.join(\"\");\n}\n\nfunction serialize(components) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var protocol = options.iri ? IRI_PROTOCOL : URI_PROTOCOL;\n var uriTokens = [];\n //find scheme handler\n var schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n //perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n if (components.host) {\n //if host component is an IPv6 address\n if (protocol.IPV6ADDRESS.test(components.host)) {}\n //TODO: normalize IPv6 address as per RFC 5952\n\n //if host component is a domain name\n else if (options.domainHost || schemeHandler && schemeHandler.domainHost) {\n //convert IDN via punycode\n try {\n components.host = !options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host);\n } catch (e) {\n components.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n }\n }\n }\n //normalize encoding\n _normalizeComponentEncoding(components, protocol);\n if (options.reference !== \"suffix\" && components.scheme) {\n uriTokens.push(components.scheme);\n uriTokens.push(\":\");\n }\n var authority = _recomposeAuthority(components, options);\n if (authority !== undefined) {\n if (options.reference !== \"suffix\") {\n uriTokens.push(\"//\");\n }\n uriTokens.push(authority);\n if (components.path && components.path.charAt(0) !== \"/\") {\n uriTokens.push(\"/\");\n }\n }\n if (components.path !== undefined) {\n var s = components.path;\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s);\n }\n if (authority === undefined) {\n s = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n }\n uriTokens.push(s);\n }\n if (components.query !== undefined) {\n uriTokens.push(\"?\");\n uriTokens.push(components.query);\n }\n if (components.fragment !== undefined) {\n uriTokens.push(\"#\");\n uriTokens.push(components.fragment);\n }\n return uriTokens.join(\"\"); //merge tokens into a string\n}\n\nfunction resolveComponents(base, relative) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var skipNormalization = arguments[3];\n\n var target = {};\n if (!skipNormalization) {\n base = parse(serialize(base, options), options); //normalize base components\n relative = parse(serialize(relative, options), options); //normalize relative components\n }\n options = options || {};\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme;\n //target.authority = relative.authority;\n target.userinfo = relative.userinfo;\n target.host = relative.host;\n target.port = relative.port;\n target.path = removeDotSegments(relative.path || \"\");\n target.query = relative.query;\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n //target.authority = relative.authority;\n target.userinfo = relative.userinfo;\n target.host = relative.host;\n target.port = relative.port;\n target.path = removeDotSegments(relative.path || \"\");\n target.query = relative.query;\n } else {\n if (!relative.path) {\n target.path = base.path;\n if (relative.query !== undefined) {\n target.query = relative.query;\n } else {\n target.query = base.query;\n }\n } else {\n if (relative.path.charAt(0) === \"/\") {\n target.path = removeDotSegments(relative.path);\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = \"/\" + relative.path;\n } else if (!base.path) {\n target.path = relative.path;\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n }\n target.path = removeDotSegments(target.path);\n }\n target.query = relative.query;\n }\n //target.authority = base.authority;\n target.userinfo = base.userinfo;\n target.host = base.host;\n target.port = base.port;\n }\n target.scheme = base.scheme;\n }\n target.fragment = relative.fragment;\n return target;\n}\n\nfunction resolve(baseURI, relativeURI, options) {\n var schemelessOptions = assign({ scheme: 'null' }, options);\n return serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n}\n\nfunction normalize(uri, options) {\n if (typeof uri === \"string\") {\n uri = serialize(parse(uri, options), options);\n } else if (typeOf(uri) === \"object\") {\n uri = parse(serialize(uri, options), options);\n }\n return uri;\n}\n\nfunction equal(uriA, uriB, options) {\n if (typeof uriA === \"string\") {\n uriA = serialize(parse(uriA, options), options);\n } else if (typeOf(uriA) === \"object\") {\n uriA = serialize(uriA, options);\n }\n if (typeof uriB === \"string\") {\n uriB = serialize(parse(uriB, options), options);\n } else if (typeOf(uriB) === \"object\") {\n uriB = serialize(uriB, options);\n }\n return uriA === uriB;\n}\n\nfunction escapeComponent(str, options) {\n return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE, pctEncChar);\n}\n\nfunction unescapeComponent(str, options) {\n return str && str.toString().replace(!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED, pctDecChars);\n}\n\nvar handler = {\n scheme: \"http\",\n domainHost: true,\n parse: function parse(components, options) {\n //report missing host\n if (!components.host) {\n components.error = components.error || \"HTTP URIs must have a host.\";\n }\n return components;\n },\n serialize: function serialize(components, options) {\n var secure = String(components.scheme).toLowerCase() === \"https\";\n //normalize the default port\n if (components.port === (secure ? 443 : 80) || components.port === \"\") {\n components.port = undefined;\n }\n //normalize the empty path\n if (!components.path) {\n components.path = \"/\";\n }\n //NOTE: We do not parse query strings for HTTP URIs\n //as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n //and not the HTTP spec.\n return components;\n }\n};\n\nvar handler$1 = {\n scheme: \"https\",\n domainHost: handler.domainHost,\n parse: handler.parse,\n serialize: handler.serialize\n};\n\nfunction isSecure(wsComponents) {\n return typeof wsComponents.secure === 'boolean' ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === \"wss\";\n}\n//RFC 6455\nvar handler$2 = {\n scheme: \"ws\",\n domainHost: true,\n parse: function parse(components, options) {\n var wsComponents = components;\n //indicate if the secure flag is set\n wsComponents.secure = isSecure(wsComponents);\n //construct resouce name\n wsComponents.resourceName = (wsComponents.path || '/') + (wsComponents.query ? '?' + wsComponents.query : '');\n wsComponents.path = undefined;\n wsComponents.query = undefined;\n return wsComponents;\n },\n serialize: function serialize(wsComponents, options) {\n //normalize the default port\n if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === \"\") {\n wsComponents.port = undefined;\n }\n //ensure scheme matches secure flag\n if (typeof wsComponents.secure === 'boolean') {\n wsComponents.scheme = wsComponents.secure ? 'wss' : 'ws';\n wsComponents.secure = undefined;\n }\n //reconstruct path from resource name\n if (wsComponents.resourceName) {\n var _wsComponents$resourc = wsComponents.resourceName.split('?'),\n _wsComponents$resourc2 = slicedToArray(_wsComponents$resourc, 2),\n path = _wsComponents$resourc2[0],\n query = _wsComponents$resourc2[1];\n\n wsComponents.path = path && path !== '/' ? path : undefined;\n wsComponents.query = query;\n wsComponents.resourceName = undefined;\n }\n //forbid fragment component\n wsComponents.fragment = undefined;\n return wsComponents;\n }\n};\n\nvar handler$3 = {\n scheme: \"wss\",\n domainHost: handler$2.domainHost,\n parse: handler$2.parse,\n serialize: handler$2.serialize\n};\n\nvar O = {};\nvar isIRI = true;\n//RFC 3986\nvar UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nvar HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nvar PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nvar ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nvar QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nvar VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nvar SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nvar UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nvar PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nvar NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nvar NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nvar NOT_HFVALUE = NOT_HFNAME;\nfunction decodeUnreserved(str) {\n var decStr = pctDecChars(str);\n return !decStr.match(UNRESERVED) ? str : decStr;\n}\nvar handler$4 = {\n scheme: \"mailto\",\n parse: function parse$$1(components, options) {\n var mailtoComponents = components;\n var to = mailtoComponents.to = mailtoComponents.path ? mailtoComponents.path.split(\",\") : [];\n mailtoComponents.path = undefined;\n if (mailtoComponents.query) {\n var unknownHeaders = false;\n var headers = {};\n var hfields = mailtoComponents.query.split(\"&\");\n for (var x = 0, xl = hfields.length; x < xl; ++x) {\n var hfield = hfields[x].split(\"=\");\n switch (hfield[0]) {\n case \"to\":\n var toAddrs = hfield[1].split(\",\");\n for (var _x = 0, _xl = toAddrs.length; _x < _xl; ++_x) {\n to.push(toAddrs[_x]);\n }\n break;\n case \"subject\":\n mailtoComponents.subject = unescapeComponent(hfield[1], options);\n break;\n case \"body\":\n mailtoComponents.body = unescapeComponent(hfield[1], options);\n break;\n default:\n unknownHeaders = true;\n headers[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n break;\n }\n }\n if (unknownHeaders) mailtoComponents.headers = headers;\n }\n mailtoComponents.query = undefined;\n for (var _x2 = 0, _xl2 = to.length; _x2 < _xl2; ++_x2) {\n var addr = to[_x2].split(\"@\");\n addr[0] = unescapeComponent(addr[0]);\n if (!options.unicodeSupport) {\n //convert Unicode IDN -> ASCII IDN\n try {\n addr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n } catch (e) {\n mailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n }\n } else {\n addr[1] = unescapeComponent(addr[1], options).toLowerCase();\n }\n to[_x2] = addr.join(\"@\");\n }\n return mailtoComponents;\n },\n serialize: function serialize$$1(mailtoComponents, options) {\n var components = mailtoComponents;\n var to = toArray(mailtoComponents.to);\n if (to) {\n for (var x = 0, xl = to.length; x < xl; ++x) {\n var toAddr = String(to[x]);\n var atIdx = toAddr.lastIndexOf(\"@\");\n var localPart = toAddr.slice(0, atIdx).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n var domain = toAddr.slice(atIdx + 1);\n //convert IDN via punycode\n try {\n domain = !options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain);\n } catch (e) {\n components.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n }\n to[x] = localPart + \"@\" + domain;\n }\n components.path = to.join(\",\");\n }\n var headers = mailtoComponents.headers = mailtoComponents.headers || {};\n if (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n if (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n var fields = [];\n for (var name in headers) {\n if (headers[name] !== O[name]) {\n fields.push(name.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) + \"=\" + headers[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar));\n }\n }\n if (fields.length) {\n components.query = fields.join(\"&\");\n }\n return components;\n }\n};\n\nvar URN_PARSE = /^([^\\:]+)\\:(.*)/;\n//RFC 2141\nvar handler$5 = {\n scheme: \"urn\",\n parse: function parse$$1(components, options) {\n var matches = components.path && components.path.match(URN_PARSE);\n var urnComponents = components;\n if (matches) {\n var scheme = options.scheme || urnComponents.scheme || \"urn\";\n var nid = matches[1].toLowerCase();\n var nss = matches[2];\n var urnScheme = scheme + \":\" + (options.nid || nid);\n var schemeHandler = SCHEMES[urnScheme];\n urnComponents.nid = nid;\n urnComponents.nss = nss;\n urnComponents.path = undefined;\n if (schemeHandler) {\n urnComponents = schemeHandler.parse(urnComponents, options);\n }\n } else {\n urnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n }\n return urnComponents;\n },\n serialize: function serialize$$1(urnComponents, options) {\n var scheme = options.scheme || urnComponents.scheme || \"urn\";\n var nid = urnComponents.nid;\n var urnScheme = scheme + \":\" + (options.nid || nid);\n var schemeHandler = SCHEMES[urnScheme];\n if (schemeHandler) {\n urnComponents = schemeHandler.serialize(urnComponents, options);\n }\n var uriComponents = urnComponents;\n var nss = urnComponents.nss;\n uriComponents.path = (nid || options.nid) + \":\" + nss;\n return uriComponents;\n }\n};\n\nvar UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\n//RFC 4122\nvar handler$6 = {\n scheme: \"urn:uuid\",\n parse: function parse(urnComponents, options) {\n var uuidComponents = urnComponents;\n uuidComponents.uuid = uuidComponents.nss;\n uuidComponents.nss = undefined;\n if (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n uuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n }\n return uuidComponents;\n },\n serialize: function serialize(uuidComponents, options) {\n var urnComponents = uuidComponents;\n //normalize UUID\n urnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n return urnComponents;\n }\n};\n\nSCHEMES[handler.scheme] = handler;\nSCHEMES[handler$1.scheme] = handler$1;\nSCHEMES[handler$2.scheme] = handler$2;\nSCHEMES[handler$3.scheme] = handler$3;\nSCHEMES[handler$4.scheme] = handler$4;\nSCHEMES[handler$5.scheme] = handler$5;\nSCHEMES[handler$6.scheme] = handler$6;\n\nexports.SCHEMES = SCHEMES;\nexports.pctEncChar = pctEncChar;\nexports.pctDecChars = pctDecChars;\nexports.parse = parse;\nexports.removeDotSegments = removeDotSegments;\nexports.serialize = serialize;\nexports.resolveComponents = resolveComponents;\nexports.resolve = resolve;\nexports.normalize = normalize;\nexports.equal = equal;\nexports.escapeComponent = escapeComponent;\nexports.unescapeComponent = unescapeComponent;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n//# sourceMappingURL=uri.all.js.map\n","/**\n * @license React\n * use-sync-external-store-shim.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var e=require(\"react\");function h(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var k=\"function\"===typeof Object.is?Object.is:h,l=e.useState,m=e.useEffect,n=e.useLayoutEffect,p=e.useDebugValue;function q(a,b){var d=b(),f=l({inst:{value:d,getSnapshot:b}}),c=f[0].inst,g=f[1];n(function(){c.value=d;c.getSnapshot=b;r(c)&&g({inst:c})},[a,d,b]);m(function(){r(c)&&g({inst:c});return a(function(){r(c)&&g({inst:c})})},[a]);p(d);return d}\nfunction r(a){var b=a.getSnapshot;a=a.value;try{var d=b();return!k(a,d)}catch(f){return!0}}function t(a,b){return b()}var u=\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement?t:q;exports.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:u;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.min.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","// Backbone.js 1.3.3\n\n// (c) 2010-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Backbone may be freely distributed under the MIT license.\n// For all details and documentation:\n// http://backbonejs.org\n\n(function(factory) {\n\n // Establish the root object, `window` (`self`) in the browser, or `global` on the server.\n // We use `self` instead of `window` for `WebWorker` support.\n var root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global);\n\n // Set up Backbone appropriately for the environment. Start with AMD.\n if (typeof define === 'function' && define.amd) {\n define(['underscore', 'jquery', 'exports'], function(_, $, exports) {\n // Export global even in AMD case in case this script is loaded with\n // others that may still expect a global Backbone.\n root.Backbone = factory(root, exports, _, $);\n });\n\n // Next for Node.js or CommonJS. jQuery may not be needed as a module.\n } else if (typeof exports !== 'undefined') {\n var _ = require('underscore'), $;\n try { $ = require('jquery'); } catch (e) {}\n factory(root, exports, _, $);\n\n // Finally, as a browser global.\n } else {\n root.Backbone = factory(root, {}, root._, (root.jQuery || root.Zepto || root.ender || root.$));\n }\n\n})(function(root, Backbone, _, $) {\n\n // Initial Setup\n // -------------\n\n // Save the previous value of the `Backbone` variable, so that it can be\n // restored later on, if `noConflict` is used.\n var previousBackbone = root.Backbone;\n\n // Create a local reference to a common array method we'll want to use later.\n var slice = Array.prototype.slice;\n\n // Current version of the library. Keep in sync with `package.json`.\n Backbone.VERSION = '1.3.3';\n\n // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n // the `$` variable.\n Backbone.$ = $;\n\n // Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n // to its previous owner. Returns a reference to this Backbone object.\n Backbone.noConflict = function() {\n root.Backbone = previousBackbone;\n return this;\n };\n\n // Turn on `emulateHTTP` to support legacy HTTP servers. Setting this option\n // will fake `\"PATCH\"`, `\"PUT\"` and `\"DELETE\"` requests via the `_method` parameter and\n // set a `X-Http-Method-Override` header.\n Backbone.emulateHTTP = false;\n\n // Turn on `emulateJSON` to support legacy servers that can't deal with direct\n // `application/json` requests ... this will encode the body as\n // `application/x-www-form-urlencoded` instead and will send the model in a\n // form param named `model`.\n Backbone.emulateJSON = false;\n\n // Proxy Backbone class methods to Underscore functions, wrapping the model's\n // `attributes` object or collection's `models` array behind the scenes.\n //\n // collection.filter(function(model) { return model.get('age') > 10 });\n // collection.each(this.addView);\n //\n // `Function#apply` can be slow so we use the method's arg count, if we know it.\n var addMethod = function(length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return _[method](this[attribute]);\n };\n case 2: return function(value) {\n return _[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n return _[method](this[attribute], cb(iteratee, this), context);\n };\n case 4: return function(iteratee, defaultVal, context) {\n return _[method](this[attribute], cb(iteratee, this), defaultVal, context);\n };\n default: return function() {\n var args = slice.call(arguments);\n args.unshift(this[attribute]);\n return _[method].apply(_, args);\n };\n }\n };\n var addUnderscoreMethods = function(Class, methods, attribute) {\n _.each(methods, function(length, method) {\n if (_[method]) Class.prototype[method] = addMethod(length, method, attribute);\n });\n };\n\n // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\n var cb = function(iteratee, instance) {\n if (_.isFunction(iteratee)) return iteratee;\n if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee);\n if (_.isString(iteratee)) return function(model) { return model.get(iteratee); };\n return iteratee;\n };\n var modelMatcher = function(attrs) {\n var matcher = _.matches(attrs);\n return function(model) {\n return matcher(model.attributes);\n };\n };\n\n // Backbone.Events\n // ---------------\n\n // A module that can be mixed in to *any object* in order to provide it with\n // a custom event channel. You may bind a callback to an event with `on` or\n // remove with `off`; `trigger`-ing an event fires all callbacks in\n // succession.\n //\n // var object = {};\n // _.extend(object, Backbone.Events);\n // object.on('expand', function(){ alert('expanded'); });\n // object.trigger('expand');\n //\n var Events = Backbone.Events = {};\n\n // Regular expression used to split event strings.\n var eventSplitter = /\\s+/;\n\n // Iterates over the standard `event, callback` (as well as the fancy multiple\n // space-separated events `\"change blur\", callback` and jQuery-style event\n // maps `{event: callback}`).\n var eventsApi = function(iteratee, events, name, callback, opts) {\n var i = 0, names;\n if (name && typeof name === 'object') {\n // Handle event maps.\n if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback;\n for (names = _.keys(name); i < names.length ; i++) {\n events = eventsApi(iteratee, events, names[i], name[names[i]], opts);\n }\n } else if (name && eventSplitter.test(name)) {\n // Handle space-separated event names by delegating them individually.\n for (names = name.split(eventSplitter); i < names.length; i++) {\n events = iteratee(events, names[i], callback, opts);\n }\n } else {\n // Finally, standard events.\n events = iteratee(events, name, callback, opts);\n }\n return events;\n };\n\n // Bind an event to a `callback` function. Passing `\"all\"` will bind\n // the callback to all events fired.\n Events.on = function(name, callback, context) {\n return internalOn(this, name, callback, context);\n };\n\n // Guard the `listening` argument from the public API.\n var internalOn = function(obj, name, callback, context, listening) {\n obj._events = eventsApi(onApi, obj._events || {}, name, callback, {\n context: context,\n ctx: obj,\n listening: listening\n });\n\n if (listening) {\n var listeners = obj._listeners || (obj._listeners = {});\n listeners[listening.id] = listening;\n }\n\n return obj;\n };\n\n // Inversion-of-control versions of `on`. Tell *this* object to listen to\n // an event in another object... keeping track of what it's listening to\n // for easier unbinding later.\n Events.listenTo = function(obj, name, callback) {\n if (!obj) return this;\n var id = obj._listenId || (obj._listenId = _.uniqueId('l'));\n var listeningTo = this._listeningTo || (this._listeningTo = {});\n var listening = listeningTo[id];\n\n // This object is not listening to any other events on `obj` yet.\n // Setup the necessary references to track the listening callbacks.\n if (!listening) {\n var thisId = this._listenId || (this._listenId = _.uniqueId('l'));\n listening = listeningTo[id] = {obj: obj, objId: id, id: thisId, listeningTo: listeningTo, count: 0};\n }\n\n // Bind callbacks on obj, and keep track of them on listening.\n internalOn(obj, name, callback, this, listening);\n return this;\n };\n\n // The reducing API that adds a callback to the `events` object.\n var onApi = function(events, name, callback, options) {\n if (callback) {\n var handlers = events[name] || (events[name] = []);\n var context = options.context, ctx = options.ctx, listening = options.listening;\n if (listening) listening.count++;\n\n handlers.push({callback: callback, context: context, ctx: context || ctx, listening: listening});\n }\n return events;\n };\n\n // Remove one or many callbacks. If `context` is null, removes all\n // callbacks with that function. If `callback` is null, removes all\n // callbacks for the event. If `name` is null, removes all bound\n // callbacks for all events.\n Events.off = function(name, callback, context) {\n if (!this._events) return this;\n this._events = eventsApi(offApi, this._events, name, callback, {\n context: context,\n listeners: this._listeners\n });\n return this;\n };\n\n // Tell this object to stop listening to either specific events ... or\n // to every object it's currently listening to.\n Events.stopListening = function(obj, name, callback) {\n var listeningTo = this._listeningTo;\n if (!listeningTo) return this;\n\n var ids = obj ? [obj._listenId] : _.keys(listeningTo);\n\n for (var i = 0; i < ids.length; i++) {\n var listening = listeningTo[ids[i]];\n\n // If listening doesn't exist, this object is not currently\n // listening to obj. Break out early.\n if (!listening) break;\n\n listening.obj.off(name, callback, this);\n }\n\n return this;\n };\n\n // The reducing API that removes a callback from the `events` object.\n var offApi = function(events, name, callback, options) {\n if (!events) return;\n\n var i = 0, listening;\n var context = options.context, listeners = options.listeners;\n\n // Delete all events listeners and \"drop\" events.\n if (!name && !callback && !context) {\n var ids = _.keys(listeners);\n for (; i < ids.length; i++) {\n listening = listeners[ids[i]];\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n return;\n }\n\n var names = name ? [name] : _.keys(events);\n for (; i < names.length; i++) {\n name = names[i];\n var handlers = events[name];\n\n // Bail out if there are no events stored.\n if (!handlers) break;\n\n // Replace events if there are any remaining. Otherwise, clean up.\n var remaining = [];\n for (var j = 0; j < handlers.length; j++) {\n var handler = handlers[j];\n if (\n callback && callback !== handler.callback &&\n callback !== handler.callback._callback ||\n context && context !== handler.context\n ) {\n remaining.push(handler);\n } else {\n listening = handler.listening;\n if (listening && --listening.count === 0) {\n delete listeners[listening.id];\n delete listening.listeningTo[listening.objId];\n }\n }\n }\n\n // Update tail event if the list has any events. Otherwise, clean up.\n if (remaining.length) {\n events[name] = remaining;\n } else {\n delete events[name];\n }\n }\n return events;\n };\n\n // Bind an event to only be triggered a single time. After the first time\n // the callback is invoked, its listener will be removed. If multiple events\n // are passed in using the space-separated syntax, the handler will fire\n // once for each event, not once for a combination of all events.\n Events.once = function(name, callback, context) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.off, this));\n if (typeof name === 'string' && context == null) callback = void 0;\n return this.on(events, callback, context);\n };\n\n // Inversion-of-control versions of `once`.\n Events.listenToOnce = function(obj, name, callback) {\n // Map the event into a `{event: once}` object.\n var events = eventsApi(onceMap, {}, name, callback, _.bind(this.stopListening, this, obj));\n return this.listenTo(obj, events);\n };\n\n // Reduces the event callbacks into a map of `{event: onceWrapper}`.\n // `offer` unbinds the `onceWrapper` after it has been called.\n var onceMap = function(map, name, callback, offer) {\n if (callback) {\n var once = map[name] = _.once(function() {\n offer(name, once);\n callback.apply(this, arguments);\n });\n once._callback = callback;\n }\n return map;\n };\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n Events.trigger = function(name) {\n if (!this._events) return this;\n\n var length = Math.max(0, arguments.length - 1);\n var args = Array(length);\n for (var i = 0; i < length; i++) args[i] = arguments[i + 1];\n\n eventsApi(triggerApi, this._events, name, void 0, args);\n return this;\n };\n\n // Handles triggering the appropriate event callbacks.\n var triggerApi = function(objEvents, name, callback, args) {\n if (objEvents) {\n var events = objEvents[name];\n var allEvents = objEvents.all;\n if (events && allEvents) allEvents = allEvents.slice();\n if (events) triggerEvents(events, args);\n if (allEvents) triggerEvents(allEvents, [name].concat(args));\n }\n return objEvents;\n };\n\n // A difficult-to-believe, but optimized internal dispatch function for\n // triggering events. Tries to keep the usual cases speedy (most internal\n // Backbone events have 3 arguments).\n var triggerEvents = function(events, args) {\n var ev, i = -1, l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];\n switch (args.length) {\n case 0: while (++i < l) (ev = events[i]).callback.call(ev.ctx); return;\n case 1: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1); return;\n case 2: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2); return;\n case 3: while (++i < l) (ev = events[i]).callback.call(ev.ctx, a1, a2, a3); return;\n default: while (++i < l) (ev = events[i]).callback.apply(ev.ctx, args); return;\n }\n };\n\n // Aliases for backwards compatibility.\n Events.bind = Events.on;\n Events.unbind = Events.off;\n\n // Allow the `Backbone` object to serve as a global event bus, for folks who\n // want global \"pubsub\" in a convenient place.\n _.extend(Backbone, Events);\n\n // Backbone.Model\n // --------------\n\n // Backbone **Models** are the basic data object in the framework --\n // frequently representing a row in a table in a database on your server.\n // A discrete chunk of data and a bunch of useful, related methods for\n // performing computations and transformations on that data.\n\n // Create a new model with the specified attributes. A client id (`cid`)\n // is automatically generated and assigned for you.\n var Model = Backbone.Model = function(attributes, options) {\n var attrs = attributes || {};\n options || (options = {});\n this.cid = _.uniqueId(this.cidPrefix);\n this.attributes = {};\n if (options.collection) this.collection = options.collection;\n if (options.parse) attrs = this.parse(attrs, options) || {};\n var defaults = _.result(this, 'defaults');\n attrs = _.defaults(_.extend({}, defaults, attrs), defaults);\n this.set(attrs, options);\n this.changed = {};\n this.initialize.apply(this, arguments);\n };\n\n // Attach all inheritable methods to the Model prototype.\n _.extend(Model.prototype, Events, {\n\n // A hash of attributes whose current and previous value differ.\n changed: null,\n\n // The value returned during the last failed validation.\n validationError: null,\n\n // The default name for the JSON `id` attribute is `\"id\"`. MongoDB and\n // CouchDB users may want to set this to `\"_id\"`.\n idAttribute: 'id',\n\n // The prefix is used to create the client id which is used to identify models locally.\n // You may want to override this if you're experiencing name clashes with model ids.\n cidPrefix: 'c',\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Return a copy of the model's `attributes` object.\n toJSON: function(options) {\n return _.clone(this.attributes);\n },\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Get the value of an attribute.\n get: function(attr) {\n return this.attributes[attr];\n },\n\n // Get the HTML-escaped value of an attribute.\n escape: function(attr) {\n return _.escape(this.get(attr));\n },\n\n // Returns `true` if the attribute contains a value that is not null\n // or undefined.\n has: function(attr) {\n return this.get(attr) != null;\n },\n\n // Special-cased proxy to underscore's `_.matches` method.\n matches: function(attrs) {\n return !!_.iteratee(attrs, this)(this.attributes);\n },\n\n // Set a hash of model attributes on the object, firing `\"change\"`. This is\n // the core primitive operation of a model, updating the data and notifying\n // anyone who needs to know about the change in state. The heart of the beast.\n set: function(key, val, options) {\n if (key == null) return this;\n\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options || (options = {});\n\n // Run validation.\n if (!this._validate(attrs, options)) return false;\n\n // Extract attributes and options.\n var unset = options.unset;\n var silent = options.silent;\n var changes = [];\n var changing = this._changing;\n this._changing = true;\n\n if (!changing) {\n this._previousAttributes = _.clone(this.attributes);\n this.changed = {};\n }\n\n var current = this.attributes;\n var changed = this.changed;\n var prev = this._previousAttributes;\n\n // For each `set` attribute, update or delete the current value.\n for (var attr in attrs) {\n val = attrs[attr];\n if (!_.isEqual(current[attr], val)) changes.push(attr);\n if (!_.isEqual(prev[attr], val)) {\n changed[attr] = val;\n } else {\n delete changed[attr];\n }\n unset ? delete current[attr] : current[attr] = val;\n }\n\n // Update the `id`.\n if (this.idAttribute in attrs) this.id = this.get(this.idAttribute);\n\n // Trigger all relevant attribute changes.\n if (!silent) {\n if (changes.length) this._pending = options;\n for (var i = 0; i < changes.length; i++) {\n this.trigger('change:' + changes[i], this, current[changes[i]], options);\n }\n }\n\n // You might be wondering why there's a `while` loop here. Changes can\n // be recursively nested within `\"change\"` events.\n if (changing) return this;\n if (!silent) {\n while (this._pending) {\n options = this._pending;\n this._pending = false;\n this.trigger('change', this, options);\n }\n }\n this._pending = false;\n this._changing = false;\n return this;\n },\n\n // Remove an attribute from the model, firing `\"change\"`. `unset` is a noop\n // if the attribute doesn't exist.\n unset: function(attr, options) {\n return this.set(attr, void 0, _.extend({}, options, {unset: true}));\n },\n\n // Clear all attributes on the model, firing `\"change\"`.\n clear: function(options) {\n var attrs = {};\n for (var key in this.attributes) attrs[key] = void 0;\n return this.set(attrs, _.extend({}, options, {unset: true}));\n },\n\n // Determine if the model has changed since the last `\"change\"` event.\n // If you specify an attribute name, determine if that attribute has changed.\n hasChanged: function(attr) {\n if (attr == null) return !_.isEmpty(this.changed);\n return _.has(this.changed, attr);\n },\n\n // Return an object containing all the attributes that have changed, or\n // false if there are no changed attributes. Useful for determining what\n // parts of a view need to be updated and/or what attributes need to be\n // persisted to the server. Unset attributes will be set to undefined.\n // You can also pass an attributes object to diff against the model,\n // determining if there *would be* a change.\n changedAttributes: function(diff) {\n if (!diff) return this.hasChanged() ? _.clone(this.changed) : false;\n var old = this._changing ? this._previousAttributes : this.attributes;\n var changed = {};\n for (var attr in diff) {\n var val = diff[attr];\n if (_.isEqual(old[attr], val)) continue;\n changed[attr] = val;\n }\n return _.size(changed) ? changed : false;\n },\n\n // Get the previous value of an attribute, recorded at the time the last\n // `\"change\"` event was fired.\n previous: function(attr) {\n if (attr == null || !this._previousAttributes) return null;\n return this._previousAttributes[attr];\n },\n\n // Get all of the attributes of the model at the time of the previous\n // `\"change\"` event.\n previousAttributes: function() {\n return _.clone(this._previousAttributes);\n },\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var model = this;\n var success = options.success;\n options.success = function(resp) {\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (!model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save: function(key, val, options) {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n var attrs;\n if (key == null || typeof key === 'object') {\n attrs = key;\n options = val;\n } else {\n (attrs = {})[key] = val;\n }\n\n options = _.extend({validate: true, parse: true}, options);\n var wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if (attrs && !wait) {\n if (!this.set(attrs, options)) return false;\n } else if (!this._validate(attrs, options)) {\n return false;\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function(resp) {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n var serverAttrs = options.parse ? model.parse(resp, options) : resp;\n if (wait) serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs && !model.set(serverAttrs, options)) return false;\n if (success) success.call(options.context, model, resp, options);\n model.trigger('sync', model, resp, options);\n };\n wrapError(this, options);\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if (attrs && wait) this.attributes = _.extend({}, attributes, attrs);\n\n var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');\n if (method === 'patch' && !options.attrs) options.attrs = attrs;\n var xhr = this.sync(method, this, options);\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n },\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy: function(options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function() {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n\n options.success = function(resp) {\n if (wait) destroy();\n if (success) success.call(options.context, model, resp, options);\n if (!model.isNew()) model.trigger('sync', model, resp, options);\n };\n\n var xhr = false;\n if (this.isNew()) {\n _.defer(options.success);\n } else {\n wrapError(this, options);\n xhr = this.sync('delete', this, options);\n }\n if (!wait) destroy();\n return xhr;\n },\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url: function() {\n var base =\n _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n urlError();\n if (this.isNew()) return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n },\n\n // **parse** converts a response into the hash of attributes to be `set` on\n // the model. The default implementation is just to pass the response along.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new model with identical attributes to this one.\n clone: function() {\n return new this.constructor(this.attributes);\n },\n\n // A model is new if it has never been saved to the server, and lacks an id.\n isNew: function() {\n return !this.has(this.idAttribute);\n },\n\n // Check if the model is currently in a valid state.\n isValid: function(options) {\n return this._validate({}, _.extend({}, options, {validate: true}));\n },\n\n // Run validation against the next complete set of model attributes,\n // returning `true` if all is well. Otherwise, fire an `\"invalid\"` event.\n _validate: function(attrs, options) {\n if (!options.validate || !this.validate) return true;\n attrs = _.extend({}, this.attributes, attrs);\n var error = this.validationError = this.validate(attrs, options) || null;\n if (!error) return true;\n this.trigger('invalid', this, error, _.extend(options, {validationError: error}));\n return false;\n }\n\n });\n\n // Underscore methods that we want to implement on the Model, mapped to the\n // number of arguments they take.\n var modelMethods = {keys: 1, values: 1, pairs: 1, invert: 1, pick: 0,\n omit: 0, chain: 1, isEmpty: 1};\n\n // Mix in each Underscore method as a proxy to `Model#attributes`.\n addUnderscoreMethods(Model, modelMethods, 'attributes');\n\n // Backbone.Collection\n // -------------------\n\n // If models tend to represent a single row of data, a Backbone Collection is\n // more analogous to a table full of data ... or a small slice or page of that\n // table, or a collection of rows that belong together for a particular reason\n // -- all of the messages in this particular folder, all of the documents\n // belonging to this particular author, and so on. Collections maintain\n // indexes of their models, both in order, and for lookup by `id`.\n\n // Create a new **Collection**, perhaps to contain a specific type of `model`.\n // If a `comparator` is specified, the Collection will maintain\n // its models in sort order, as they're added and removed.\n var Collection = Backbone.Collection = function(models, options) {\n options || (options = {});\n if (options.model) this.model = options.model;\n if (options.comparator !== void 0) this.comparator = options.comparator;\n this._reset();\n this.initialize.apply(this, arguments);\n if (models) this.reset(models, _.extend({silent: true}, options));\n };\n\n // Default options for `Collection#set`.\n var setOptions = {add: true, remove: true, merge: true};\n var addOptions = {add: true, remove: false};\n\n // Splices `insert` into `array` at index `at`.\n var splice = function(array, insert, at) {\n at = Math.min(Math.max(at, 0), array.length);\n var tail = Array(array.length - at);\n var length = insert.length;\n var i;\n for (i = 0; i < tail.length; i++) tail[i] = array[i + at];\n for (i = 0; i < length; i++) array[i + at] = insert[i];\n for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i];\n };\n\n // Define the Collection's inheritable methods.\n _.extend(Collection.prototype, Events, {\n\n // The default model for a collection is just a **Backbone.Model**.\n // This should be overridden in most cases.\n model: Model,\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // The JSON representation of a Collection is an array of the\n // models' attributes.\n toJSON: function(options) {\n return this.map(function(model) { return model.toJSON(options); });\n },\n\n // Proxy `Backbone.sync` by default.\n sync: function() {\n return Backbone.sync.apply(this, arguments);\n },\n\n // Add a model, or list of models to the set. `models` may be Backbone\n // Models or raw JavaScript objects to be converted to Models, or any\n // combination of the two.\n add: function(models, options) {\n return this.set(models, _.extend({merge: false}, options, addOptions));\n },\n\n // Remove a model, or a list of models from the set.\n remove: function(models, options) {\n options = _.extend({}, options);\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n var removed = this._removeModels(models, options);\n if (!options.silent && removed.length) {\n options.changes = {added: [], merged: [], removed: removed};\n this.trigger('update', this, options);\n }\n return singular ? removed[0] : removed;\n },\n\n // Update a collection by `set`-ing a new list of models, adding new ones,\n // removing models that are no longer present, and merging models that\n // already exist in the collection, as necessary. Similar to **Model#set**,\n // the core operation for updating the data contained by the collection.\n set: function(models, options) {\n if (models == null) return;\n\n options = _.extend({}, setOptions, options);\n if (options.parse && !this._isModel(models)) {\n models = this.parse(models, options) || [];\n }\n\n var singular = !_.isArray(models);\n models = singular ? [models] : models.slice();\n\n var at = options.at;\n if (at != null) at = +at;\n if (at > this.length) at = this.length;\n if (at < 0) at += this.length + 1;\n\n var set = [];\n var toAdd = [];\n var toMerge = [];\n var toRemove = [];\n var modelMap = {};\n\n var add = options.add;\n var merge = options.merge;\n var remove = options.remove;\n\n var sort = false;\n var sortable = this.comparator && at == null && options.sort !== false;\n var sortAttr = _.isString(this.comparator) ? this.comparator : null;\n\n // Turn bare objects into model references, and prevent invalid models\n // from being added.\n var model, i;\n for (i = 0; i < models.length; i++) {\n model = models[i];\n\n // If a duplicate is found, prevent it from being added and\n // optionally merge it into the existing model.\n var existing = this.get(model);\n if (existing) {\n if (merge && model !== existing) {\n var attrs = this._isModel(model) ? model.attributes : model;\n if (options.parse) attrs = existing.parse(attrs, options);\n existing.set(attrs, options);\n toMerge.push(existing);\n if (sortable && !sort) sort = existing.hasChanged(sortAttr);\n }\n if (!modelMap[existing.cid]) {\n modelMap[existing.cid] = true;\n set.push(existing);\n }\n models[i] = existing;\n\n // If this is a new, valid model, push it to the `toAdd` list.\n } else if (add) {\n model = models[i] = this._prepareModel(model, options);\n if (model) {\n toAdd.push(model);\n this._addReference(model, options);\n modelMap[model.cid] = true;\n set.push(model);\n }\n }\n }\n\n // Remove stale models.\n if (remove) {\n for (i = 0; i < this.length; i++) {\n model = this.models[i];\n if (!modelMap[model.cid]) toRemove.push(model);\n }\n if (toRemove.length) this._removeModels(toRemove, options);\n }\n\n // See if sorting is needed, update `length` and splice in new models.\n var orderChanged = false;\n var replace = !sortable && add && remove;\n if (set.length && replace) {\n orderChanged = this.length !== set.length || _.some(this.models, function(m, index) {\n return m !== set[index];\n });\n this.models.length = 0;\n splice(this.models, set, 0);\n this.length = this.models.length;\n } else if (toAdd.length) {\n if (sortable) sort = true;\n splice(this.models, toAdd, at == null ? this.length : at);\n this.length = this.models.length;\n }\n\n // Silently sort the collection if appropriate.\n if (sort) this.sort({silent: true});\n\n // Unless silenced, it's time to fire all appropriate add/sort/update events.\n if (!options.silent) {\n for (i = 0; i < toAdd.length; i++) {\n if (at != null) options.index = at + i;\n model = toAdd[i];\n model.trigger('add', model, this, options);\n }\n if (sort || orderChanged) this.trigger('sort', this, options);\n if (toAdd.length || toRemove.length || toMerge.length) {\n options.changes = {\n added: toAdd,\n removed: toRemove,\n merged: toMerge\n };\n this.trigger('update', this, options);\n }\n }\n\n // Return the added (or merged) model (or models).\n return singular ? models[0] : models;\n },\n\n // When you have more items than you want to add or remove individually,\n // you can reset the entire set with a new list of models, without firing\n // any granular `add` or `remove` events. Fires `reset` when finished.\n // Useful for bulk operations and optimizations.\n reset: function(models, options) {\n options = options ? _.clone(options) : {};\n for (var i = 0; i < this.models.length; i++) {\n this._removeReference(this.models[i], options);\n }\n options.previousModels = this.models;\n this._reset();\n models = this.add(models, _.extend({silent: true}, options));\n if (!options.silent) this.trigger('reset', this, options);\n return models;\n },\n\n // Add a model to the end of the collection.\n push: function(model, options) {\n return this.add(model, _.extend({at: this.length}, options));\n },\n\n // Remove a model from the end of the collection.\n pop: function(options) {\n var model = this.at(this.length - 1);\n return this.remove(model, options);\n },\n\n // Add a model to the beginning of the collection.\n unshift: function(model, options) {\n return this.add(model, _.extend({at: 0}, options));\n },\n\n // Remove a model from the beginning of the collection.\n shift: function(options) {\n var model = this.at(0);\n return this.remove(model, options);\n },\n\n // Slice out a sub-array of models from the collection.\n slice: function() {\n return slice.apply(this.models, arguments);\n },\n\n // Get a model from the set by id, cid, model object with id or cid\n // properties, or an attributes object that is transformed through modelId.\n get: function(obj) {\n if (obj == null) return void 0;\n return this._byId[obj] ||\n this._byId[this.modelId(obj.attributes || obj)] ||\n obj.cid && this._byId[obj.cid];\n },\n\n // Returns `true` if the model is in the collection.\n has: function(obj) {\n return this.get(obj) != null;\n },\n\n // Get the model at the given index.\n at: function(index) {\n if (index < 0) index += this.length;\n return this.models[index];\n },\n\n // Return models with matching attributes. Useful for simple cases of\n // `filter`.\n where: function(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n // Return the first model with matching attributes. Useful for simple cases\n // of `find`.\n findWhere: function(attrs) {\n return this.where(attrs, true);\n },\n\n // Force the collection to re-sort itself. You don't need to call this under\n // normal circumstances, as the set will maintain sort order as each item\n // is added.\n sort: function(options) {\n var comparator = this.comparator;\n if (!comparator) throw new Error('Cannot sort a set without a comparator');\n options || (options = {});\n\n var length = comparator.length;\n if (_.isFunction(comparator)) comparator = _.bind(comparator, this);\n\n // Run sort based on type of `comparator`.\n if (length === 1 || _.isString(comparator)) {\n this.models = this.sortBy(comparator);\n } else {\n this.models.sort(comparator);\n }\n if (!options.silent) this.trigger('sort', this, options);\n return this;\n },\n\n // Pluck an attribute from each model in the collection.\n pluck: function(attr) {\n return this.map(attr + '');\n },\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch: function(options) {\n options = _.extend({parse: true}, options);\n var success = options.success;\n var collection = this;\n options.success = function(resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (success) success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return this.sync('read', this, options);\n },\n\n // Create a new instance of a model in this collection. Add the model to the\n // collection immediately, unless `wait: true` is passed, in which case we\n // wait for the server to agree.\n create: function(model, options) {\n options = options ? _.clone(options) : {};\n var wait = options.wait;\n model = this._prepareModel(model, options);\n if (!model) return false;\n if (!wait) this.add(model, options);\n var collection = this;\n var success = options.success;\n options.success = function(m, resp, callbackOpts) {\n if (wait) collection.add(m, callbackOpts);\n if (success) success.call(callbackOpts.context, m, resp, callbackOpts);\n };\n model.save(null, options);\n return model;\n },\n\n // **parse** converts a response into a list of models to be added to the\n // collection. The default implementation is just to pass it through.\n parse: function(resp, options) {\n return resp;\n },\n\n // Create a new collection with an identical list of models as this one.\n clone: function() {\n return new this.constructor(this.models, {\n model: this.model,\n comparator: this.comparator\n });\n },\n\n // Define how to uniquely identify models in the collection.\n modelId: function(attrs) {\n return attrs[this.model.prototype.idAttribute || 'id'];\n },\n\n // Private method to reset all internal state. Called when the collection\n // is first initialized or reset.\n _reset: function() {\n this.length = 0;\n this.models = [];\n this._byId = {};\n },\n\n // Prepare a hash of attributes (or other model) to be added to this\n // collection.\n _prepareModel: function(attrs, options) {\n if (this._isModel(attrs)) {\n if (!attrs.collection) attrs.collection = this;\n return attrs;\n }\n options = options ? _.clone(options) : {};\n options.collection = this;\n var model = new this.model(attrs, options);\n if (!model.validationError) return model;\n this.trigger('invalid', this, model.validationError, options);\n return false;\n },\n\n // Internal method called by both remove and set.\n _removeModels: function(models, options) {\n var removed = [];\n for (var i = 0; i < models.length; i++) {\n var model = this.get(models[i]);\n if (!model) continue;\n\n var index = this.indexOf(model);\n this.models.splice(index, 1);\n this.length--;\n\n // Remove references before triggering 'remove' event to prevent an\n // infinite loop. #3693\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n\n if (!options.silent) {\n options.index = index;\n model.trigger('remove', model, this, options);\n }\n\n removed.push(model);\n this._removeReference(model, options);\n }\n return removed;\n },\n\n // Method for checking whether an object should be considered a model for\n // the purposes of adding to the collection.\n _isModel: function(model) {\n return model instanceof Model;\n },\n\n // Internal method to create a model's ties to a collection.\n _addReference: function(model, options) {\n this._byId[model.cid] = model;\n var id = this.modelId(model.attributes);\n if (id != null) this._byId[id] = model;\n model.on('all', this._onModelEvent, this);\n },\n\n // Internal method to sever a model's ties to a collection.\n _removeReference: function(model, options) {\n delete this._byId[model.cid];\n var id = this.modelId(model.attributes);\n if (id != null) delete this._byId[id];\n if (this === model.collection) delete model.collection;\n model.off('all', this._onModelEvent, this);\n },\n\n // Internal method called every time a model in the set fires an event.\n // Sets need to update their indexes when models change ids. All other\n // events simply proxy through. \"add\" and \"remove\" events that originate\n // in other collections are ignored.\n _onModelEvent: function(event, model, collection, options) {\n if (model) {\n if ((event === 'add' || event === 'remove') && collection !== this) return;\n if (event === 'destroy') this.remove(model, options);\n if (event === 'change') {\n var prevId = this.modelId(model.previousAttributes());\n var id = this.modelId(model.attributes);\n if (prevId !== id) {\n if (prevId != null) delete this._byId[prevId];\n if (id != null) this._byId[id] = model;\n }\n }\n }\n this.trigger.apply(this, arguments);\n }\n\n });\n\n // Underscore methods that we want to implement on the Collection.\n // 90% of the core usefulness of Backbone Collections is actually implemented\n // right here:\n var collectionMethods = {forEach: 3, each: 3, map: 3, collect: 3, reduce: 0,\n foldl: 0, inject: 0, reduceRight: 0, foldr: 0, find: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3, findIndex: 3, findLastIndex: 3};\n\n // Mix in each Underscore method as a proxy to `Collection#models`.\n addUnderscoreMethods(Collection, collectionMethods, 'models');\n\n // Backbone.View\n // -------------\n\n // Backbone Views are almost more convention than they are actual code. A View\n // is simply a JavaScript object that represents a logical chunk of UI in the\n // DOM. This might be a single item, an entire list, a sidebar or panel, or\n // even the surrounding frame which wraps your whole app. Defining a chunk of\n // UI as a **View** allows you to define your DOM events declaratively, without\n // having to worry about render order ... and makes it easy for the view to\n // react to specific changes in the state of your models.\n\n // Creating a Backbone.View creates its initial element outside of the DOM,\n // if an existing element is not provided...\n var View = Backbone.View = function(options) {\n this.cid = _.uniqueId('view');\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regex to split keys for `delegate`.\n var delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n // List of view options to be set as properties.\n var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n // Set up all inheritable **Backbone.View** properties and methods.\n _.extend(View.prototype, Events, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function(selector) {\n return this.$el.find(selector);\n },\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function() {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function() {\n this._removeElement();\n this.stopListening();\n return this;\n },\n\n // Remove this view's element from the document and all event listeners\n // attached to it. Exposed for subclasses using an alternative DOM\n // manipulation API.\n _removeElement: function() {\n this.$el.remove();\n },\n\n // Change the view's element (`this.el` property) and re-delegate the\n // view's events on the new element.\n setElement: function(element) {\n this.undelegateEvents();\n this._setElement(element);\n this.delegateEvents();\n return this;\n },\n\n // Creates the `this.el` and `this.$el` references for this view using the\n // given `el`. `el` can be a CSS selector or an HTML string, a jQuery\n // context or an element. Subclasses can override this to utilize an\n // alternative DOM manipulation API and are only required to set the\n // `this.el` property.\n _setElement: function(el) {\n this.$el = el instanceof Backbone.$ ? el : Backbone.$(el);\n this.el = this.$el[0];\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n delegateEvents: function(events) {\n events || (events = _.result(this, 'events'));\n if (!events) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[method];\n if (!method) continue;\n var match = key.match(delegateEventSplitter);\n this.delegate(match[1], match[2], _.bind(method, this));\n }\n return this;\n },\n\n // Add a single event listener to the view's element (or a child element\n // using `selector`). This only works for delegate-able events: not `focus`,\n // `blur`, and not `change`, `submit`, and `reset` in Internet Explorer.\n delegate: function(eventName, selector, listener) {\n this.$el.on(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Clears all callbacks previously bound to the view by `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function() {\n if (this.$el) this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // A finer-grained `undelegateEvents` for removing a single delegated event.\n // `selector` and `listener` are both optional.\n undelegate: function(eventName, selector, listener) {\n this.$el.off(eventName + '.delegateEvents' + this.cid, selector, listener);\n return this;\n },\n\n // Produces a DOM element to be assigned to your view. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _createElement: function(tagName) {\n return document.createElement(tagName);\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function() {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n this.setElement(this._createElement(_.result(this, 'tagName')));\n this._setAttributes(attrs);\n } else {\n this.setElement(_.result(this, 'el'));\n }\n },\n\n // Set attributes from a hash on this view's element. Exposed for\n // subclasses using an alternative DOM manipulation API.\n _setAttributes: function(attributes) {\n this.$el.attr(attributes);\n }\n\n });\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n //\n // Turn on `Backbone.emulateHTTP` in order to send `PUT` and `DELETE` requests\n // as `POST`, with a `_method` parameter containing the true HTTP method,\n // as well as all requests with the body as `application/x-www-form-urlencoded`\n // instead of `application/json` with the model in a param named `model`.\n // Useful when interfacing with server-side languages like **PHP** that make\n // it difficult to read the body of `PUT` requests.\n Backbone.sync = function(method, model, options) {\n var type = methodMap[method];\n\n // Default options, unless specified.\n _.defaults(options || (options = {}), {\n emulateHTTP: Backbone.emulateHTTP,\n emulateJSON: Backbone.emulateJSON\n });\n\n // Default JSON-request options.\n var params = {type: type, dataType: 'json'};\n\n // Ensure that we have a URL.\n if (!options.url) {\n params.url = _.result(model, 'url') || urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n\n // For older servers, emulate JSON by encoding the request into an HTML-form.\n if (options.emulateJSON) {\n params.contentType = 'application/x-www-form-urlencoded';\n params.data = params.data ? {model: params.data} : {};\n }\n\n // For older servers, emulate HTTP by mimicking the HTTP method with `_method`\n // And an `X-HTTP-Method-Override` header.\n if (options.emulateHTTP && (type === 'PUT' || type === 'DELETE' || type === 'PATCH')) {\n params.type = 'POST';\n if (options.emulateJSON) params.data._method = type;\n var beforeSend = options.beforeSend;\n options.beforeSend = function(xhr) {\n xhr.setRequestHeader('X-HTTP-Method-Override', type);\n if (beforeSend) return beforeSend.apply(this, arguments);\n };\n }\n\n // Don't process data on a non-GET request.\n if (params.type !== 'GET' && !options.emulateJSON) {\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function(xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error) error.call(options.context, xhr, textStatus, errorThrown);\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = Backbone.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n return xhr;\n };\n\n // Map from CRUD to HTTP for our default `Backbone.sync` implementation.\n var methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n };\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n Backbone.ajax = function() {\n return Backbone.$.ajax.apply(Backbone.$, arguments);\n };\n\n // Backbone.Router\n // ---------------\n\n // Routers map faux-URLs to actions, and fire events when routes are\n // matched. Creating a new one sets its `routes` hash, if not set statically.\n var Router = Backbone.Router = function(options) {\n options || (options = {});\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n };\n\n // Cached regular expressions for matching named param parts and splatted\n // parts of route strings.\n var optionalParam = /\\((.*?)\\)/g;\n var namedParam = /(\\(\\?)?:\\w+/g;\n var splatParam = /\\*\\w+/g;\n var escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n // Set up all inheritable **Backbone.Router** properties and methods.\n _.extend(Router.prototype, Events, {\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function(){},\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function(route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n Backbone.history.route(route, function(fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n Backbone.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function(callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function(fragment, options) {\n Backbone.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function() {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function(route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function(match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function(route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function(param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n });\n\n // Backbone.History\n // ----------------\n\n // Handles cross-browser history management, based on either\n // [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n // [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n // and URL fragments. If the browser supports neither (old IE, natch),\n // falls back to polling.\n var History = Backbone.History = function() {\n this.handlers = [];\n this.checkUrl = _.bind(this.checkUrl, this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n };\n\n // Cached regex for stripping a leading hash/slash and trailing space.\n var routeStripper = /^[#\\/]|\\s+$/g;\n\n // Cached regex for stripping leading and trailing slashes.\n var rootStripper = /^\\/+|\\/+$/g;\n\n // Cached regex for stripping urls of hash.\n var pathStripper = /#.*$/;\n\n // Has the history handling already been started?\n History.started = false;\n\n // Set up all inheritable **Backbone.History** properties and methods.\n _.extend(History.prototype, Events, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function() {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function() {\n var path = this.decodeFragment(this.location.pathname);\n var rootPath = path.slice(0, this.root.length - 1) + '/';\n return rootPath === this.root;\n },\n\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function(fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function() {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function(window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function() {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function(fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function(options) {\n if (History.started) throw new Error('Backbone.history has already been started');\n History.started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({root: '/'}, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var rootPath = this.root.slice(0, -1) || '/';\n this.location.replace(rootPath + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), {replace: true});\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function(eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function() {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function(eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function(route, callback) {\n this.handlers.unshift({route: route, callback: callback});\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function(e) {\n var current = this.getFragment();\n\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function(fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function(handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function(fragment, options) {\n if (!History.started) return false;\n if (!options || options === true) options = {trigger: !!options};\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Don't include a trailing slash on the root.\n var rootPath = this.root;\n if (fragment === '' || fragment.charAt(0) === '?') {\n rootPath = rootPath.slice(0, -1) || '/';\n }\n var url = rootPath + fragment;\n\n // Strip the hash and decode for matching.\n fragment = this.decodeFragment(fragment.replace(pathStripper, ''));\n\n if (this.fragment === fragment) return;\n this.fragment = fragment;\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && fragment !== this.getHash(this.iframe.contentWindow)) {\n var iWindow = this.iframe.contentWindow;\n\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function(location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n });\n\n // Create the default Backbone.history.\n Backbone.history = new History;\n\n // Helpers\n // -------\n\n // Helper function to correctly set up the prototype chain for subclasses.\n // Similar to `goog.inherits`, but uses a hash of prototype properties and\n // class properties to be extended.\n var extend = function(protoProps, staticProps) {\n var parent = this;\n var child;\n\n // The constructor function for the new subclass is either defined by you\n // (the \"constructor\" property in your `extend` definition), or defaulted\n // by us to simply call the parent constructor.\n if (protoProps && _.has(protoProps, 'constructor')) {\n child = protoProps.constructor;\n } else {\n child = function(){ return parent.apply(this, arguments); };\n }\n\n // Add static properties to the constructor function, if supplied.\n _.extend(child, parent, staticProps);\n\n // Set the prototype chain to inherit from `parent`, without calling\n // `parent`'s constructor function and add the prototype properties.\n child.prototype = _.create(parent.prototype, protoProps);\n child.prototype.constructor = child;\n\n // Set a convenience property in case the parent's prototype is needed\n // later.\n child.__super__ = parent.prototype;\n\n return child;\n };\n\n // Set up inheritance for the model, collection, router, view and history.\n Model.extend = Collection.extend = Router.extend = View.extend = History.extend = extend;\n\n // Throw an error when a URL is needed, and none is supplied.\n var urlError = function() {\n throw new Error('A \"url\" property or function must be specified');\n };\n\n // Wrap an optional error callback with a fallback error event.\n var wrapError = function(model, options) {\n var error = options.error;\n options.error = function(resp) {\n if (error) error.call(options.context, model, resp, options);\n model.trigger('error', model, resp, options);\n };\n };\n\n return Backbone;\n});\n","/*! Backbone.Rpc - v0.1.1\n------------------------------\nBuild @ 2012-11-15\nDocumentation and Full License Available at:\nhttp://asciidisco.github.com/Backbone.Rpc/index.html\ngit://github.com/asciidisco/Backbone.Rpc.git\nCopyright (c) 2012 Sebastian Golasch <public@asciidisco.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a\ncopy of this software and associated documentation files (the \"Software\"),\nto deal in the Software without restriction, including without limitation\nthe rights to use, copy, modify, merge, publish, distribute, sublicense,\nand/or sell copies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\nDAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,\nARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\nIN THE SOFTWARE.*/\n\n//////////////////////////////////////////////////////////////\n// BEGIN Module inclusion pattern for Node, AMD or globals: //\n//////////////////////////////////////////////////////////////\n(function(root, define, require, exports, module, factory, undef) {\n\t'use strict';\n\tif (typeof exports === 'object') {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like enviroments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory(\n\t\t\trequire('underscore'),\n\t\t\trequire('backbone'),\n\t\t\trequire('jquery'),\n\t\t);\n\t} else if (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine(['underscore', 'backbone', 'jquery'], function(_, Backbone, $) {\n\t\t\t// Check if\n\t\t\t_ = _ === undef ? root._ : _;\n\t\t\tBackbone = Backbone === undef ? root.Backbone : Backbone;\n\t\t\t$ = $ === undef ? root.$ : $;\n\t\t\treturn (root.Backbone = factory(_, Backbone, $));\n\t\t});\n\t} else {\n\t\t// Browser globals\n\t\troot.returnExportsGlobal = factory(root._, root.Backbone, root.$);\n\t}\n})(this, this.define, this.require, this.exports, this.module, function(\n\t_,\n\tBackbone,\n\t$,\n\tundef,\n) {\n\t////////////////////////////////////////////////////////////\n\t// END Module inclusion pattern for Node, AMD or globals: //\n\t////////////////////////////////////////////////////////////\n\n\t// Backbone.Rpc\n\t// Plugin for using the backbone js library with a remote json-rpc handler\n\t// instead of the default REST one\n\t//\n\t// Heavily modified by NetXposure.\n\t//\n\t// FYI when debugging:\n\t// The code path when firing a query is: sync() -> checkMethods() -> triggerQuery() -> _query() -> $.ajax(args, callback ...)\n\t// The code path when receiving a bad result is: callback() -> parseReply() -> onError -> (handleException, sync.error(), promise.reject)\n\t// The code path when receiving a good result is: callback() -> parseReply() -> (method parser) -> (sync.success(), promise.resolve)\n\t//\n\n\t'use strict';\n\n\t_ = _ || window._;\n\t$ = $ || window.$;\n\tBackbone = Backbone || window.Backbone;\n\n\tvar Rpc = function(options) {\n\t\t\t// merge the users options\n\t\t\tthis.options = options = options || {};\n\n\t\t\tthis.garbageCollect = () => {\n\t\t\t\tthis.garbageCollected = true;\n\t\t\t\tthis.callsByName && Object.entries(this.callsByName, ([key, value]) => {\n\t\t\t\t\tconsole.warn(`aborting calls: ${key}`);\n\t\t\t\t\tconst xhr = value && value.xhr;\n\t\t\t\t\tif (xhr && xhr.state && xhr.state() === 'pending') {\n\t\t\t\t\t\txhr.abort && xhr.abort();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\n\t\t\t// check if we have a non std. namespace delimter\n\t\t\tthis.namespaceDelimiter =\n\t\t\t\toptions.namespaceDelimiter || this.namespaceDelimiter;\n\t\t\t// check if we have a non std. content-type\n\t\t\tthis.contentType = options.contentType || this.contentType;\n\t\t\t// check for duplicate query policy\n\t\t\tthis.duplicateQueryPolicy =\n\t\t\t\toptions.duplicateQueryPolicy || this.duplicateQueryPolicy;\n\t\t\t// fix issue with the loss of this\n\t\t\t_.bindAll(\n\t\t\t\tthis,\n\t\t\t\t'onError',\n\t\t\t\t'_query',\n\t\t\t\t'query',\n\t\t\t\t'checkMethods',\n\t\t\t\t'handleExceptions',\n\t\t\t);\n\t\t},\n\t\t// store the old Backbone.Model & Collection constructors\n\t\toldModelConst = Backbone.Model.prototype.constructor,\n\t\toldCollectionConst = Backbone.Collection.prototype.constructor,\n\t\t// wrap the new constructor around Backbone's old ones:\n\t\tnewConst = function(model, my_ctxt) {\n\t\t\t// check if the model has the rpc property and methods defined\n\t\t\tif (my_ctxt.rpc && my_ctxt.methods) {\n\t\t\t\t// walk through the methods, attaching rpc functions for anything other than the CRUD set supported by Backbone.sync:\n\t\t\t\t_.each(\n\t\t\t\t\tmy_ctxt.methods,\n\t\t\t\t\t_.bind(function(method, signature) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t(!_.contains[('create', 'read', 'update', 'remove')], signature)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t// This is the part that binds the non-CRUD rpc methods to model/collection methods:\n\t\t\t\t\t\t\t// generate the method for the signature\n\t\t\t\t\t\t\tmy_ctxt[signature] = _.bind(function() {\n\t\t\t\t\t\t\t\t// DAM-8468: method definition functions should receive arguments and options\n\t\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t\t// Allowing backbone RPC methods to take arguments is tricky, because\n\t\t\t\t\t\t\t\t// execution passes through backbone.sync, which has a very specific signature.\n\t\t\t\t\t\t\t\t// So we try to detect the situations where other arguments are expected by method signature functions,\n\t\t\t\t\t\t\t\t// and pull them from the arguments object as neeed.\n\t\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t\t// To get this right we need the method signature functions to define the number of arguments\n\t\t\t\t\t\t\t\t// they're expecting, including a final options argument. If the method signature defines other\n\t\t\t\t\t\t\t\t// expected arguments but does *not* include an options argument, this algorithm breaks.\n\t\t\t\t\t\t\t\t// Therefore: methods functions that define any other arguments MUST ALSO DEFINE AN OPTIONS ARGUMENT.\n\t\t\t\t\t\t\t\t// That's not ideal, but it's manageable. I don't yet know a better way. -m-\n\n\t\t\t\t\t\t\t\tvar options;\n\n\t\t\t\t\t\t\t\t// JS stores the number of args in a function definition as the function's .length property:\n\t\t\t\t\t\t\t\tvar argsExpected = _.isFunction(this.methods[signature])\n\t\t\t\t\t\t\t\t\t? this.methods[signature].length\n\t\t\t\t\t\t\t\t\t: 0;\n\t\t\t\t\t\t\t\tif (argsExpected == 0) {\n\t\t\t\t\t\t\t\t\t// It's also possible that the method signature is a plain array but one of its elements is a function ....\n\t\t\t\t\t\t\t\t\t_.each(this.methods[signature], function(param) {\n\t\t\t\t\t\t\t\t\t\tif (_.isFunction(param)) {\n\t\t\t\t\t\t\t\t\t\t\t// If that's the case, they had better all expect the same arguments, or there'll be hell to pay ....\n\t\t\t\t\t\t\t\t\t\t\t// (Not even going to test for that. Just do it right.)\n\t\t\t\t\t\t\t\t\t\t\targsExpected = param.length;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (argsExpected == 0) {\n\t\t\t\t\t\t\t\t\t// nothing mentions in the method function, but standard backbone/bRPC args could still have been passed.\n\t\t\t\t\t\t\t\t\toptions = arguments[0]; // maybe undefined\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Get the options object from the defined position (must always be the last argument expected)\n\t\t\t\t\t\t\t\t\toptions = arguments[argsExpected - 1]; // maybe undefined\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (argsExpected > 1) {\n\t\t\t\t\t\t\t\t\t// args other than 'opts' are also expected\n\t\t\t\t\t\t\t\t\toptions = options || {};\n\t\t\t\t\t\t\t\t\t// Preserve the args as an option.\n\t\t\t\t\t\t\t\t\toptions.invokedArguments = [];\n\t\t\t\t\t\t\t\t\targsExpected--; // don't include the options argument\n\t\t\t\t\t\t\t\t\tfor (var i = 0; i < argsExpected; i++) {\n\t\t\t\t\t\t\t\t\t\toptions.invokedArguments[i] = arguments[i];\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tvar defaultExceptionHandler = this.defaultExceptionHandler;\n\t\t\t\t\t\t\t\t// invoke the dynamicly created method\n\t\t\t\t\t\t\t\treturn Backbone.sync(\n\t\t\t\t\t\t\t\t\tsignature,\n\t\t\t\t\t\t\t\t\tmy_ctxt,\n\t\t\t\t\t\t\t\t\t_.extend(\n\t\t\t\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t// If options.error isn't set, set it to our default exception handler:\n\t\t\t\t\t\t\t\t\t\t\terror: defaultExceptionHandler\n\t\t\t\t\t\t\t\t\t\t\t\t? function(model, error) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefaultExceptionHandler(error);\n\t\t\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}, my_ctxt);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, my_ctxt),\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t\t// store the old Backbone.sync method for later use\n\t\toldSync = Backbone.sync;\n\n\t/////////////////\n\t// Custom RPC errors we can throw:\n\t/////////////////\n\t_.extend(Rpc, {\n\t\t/**\n\t\t * A generic JSON-RPC error: adds 'code' and 'data' to the JS Error object.\n\t\t */\n\t\tRpcError: function(code, message, data) {\n\t\t\tvar me = new Error(message || 'JSON-RPC error');\n\t\t\tme.code = code || 0;\n\t\t\tme.message = message || 'JSON-RPC error';\n\t\t\tme.data = data;\n\t\t\treturn me;\n\t\t},\n\n\t\t/***\n\t\t * The parser for an object's backbone.rpc method can decide that the\n\t\t * DAM sent invalid data and throw this error in order to tell X7 that\n\t\t * the result should be considered an error. Sometimes we get errors\n\t\t * encoded in success handlers ...\n\t\t */\n\t\tParseError: function(message, data) {\n\t\t\treturn new Rpc.RpcError(\n\t\t\t\t-101,\n\t\t\t\tmessage || 'invalid data in JSON RPC response',\n\t\t\t\tdata,\n\t\t\t);\n\t\t},\n\n\t\t/***\n\t\t * The DAM sometimes provides responses that are not JSON-RPC compliant.\n\t\t * Backbone.RPC defines several codes for specific problems; our generic problem code will be -102\n\t\t */\n\t\tProtocolError: function(message, data) {\n\t\t\treturn new Rpc.RpcError(\n\t\t\t\t-102,\n\t\t\t\tmessage || 'invalid data in JSON RPC response',\n\t\t\t\tdata,\n\t\t\t);\n\t\t},\n\n\t\t/***\n\t\t * If JSON-RPC reports an error, we can throw one of these:\n\t\t */\n\t\tMethodError: function(code, message, data) {\n\t\t\treturn new Rpc.RpcError(code, message, data);\n\t\t},\n\n\t\t/***\n\t\t * In the case where we get a bad ValidationBean back from the server, the\n\t\t * server is sending error as success again. A special error for that case:\n\t\t */\n\t\tServerValidationError: function(message, data) {\n\t\t\treturn new Rpc.RpcError(-103, message, data);\n\t\t},\n\n\t\t/***\n\t\t * HTTP Transport errors:\n\t\t */\n\t\tHttp404Error: function(message, data) {\n\t\t\treturn new Rpc.RpcError(-1, message || '404', data);\n\t\t},\n\n\t\tHttp500Error: function(message, data) {\n\t\t\treturn new Rpc.RpcError(-2, message || '500', data);\n\t\t},\n\n\t\t/**\n\t\t * Syntax/misc errors in the model definition of the RPC methods/parsers data\n\t\t */\n\t\tDefinitionError: function(message, data) {\n\t\t\treturn new Rpc.RpcError(-3, message || 'Type mismatch', data);\n\t\t},\n\t});\n\n\t// http://stackoverflow.com/questions/783818/how-do-i-create-a-custom-error-in-javascript\n\tRpc.RpcError.prototype = Rpc.MethodError.prototype = Rpc.ProtocolError.prototype = Rpc.ParseError.prototype = Rpc.ServerValidationError.prototype = Rpc.Http404Error.prototype = Rpc.Http500Error.prototype = Rpc.DefinitionError.prototype =\n\t\tError.prototype;\n\n\t// TODO: Document\n\tRpc.prototype = {\n\t\t// User defined options placeholder\n\t\toptions: {},\n\n\t\t// Default charset\n\t\tcharset: 'iso-8859-1',\n\n\t\t// Default namespace\n\t\tnamespace: '',\n\n\t\t// Default namespace delimiter\n\t\t//namespaceDelimiter: '/',\n\t\t// For Netx:\n\t\tnamespaceDelimiter: '',\n\n\t\t// Default content type\n\t\tcontentType: 'application/json',\n\n\t\t// User set url placeholder\n\t\turl: '',//Netx.URL.api, // FYI this doesn't work if Netx.URL isn't set yet, as happens in develop (lately). (Causes DAM-9677, as addressed in netx.js)\n\n\t\t/**\n\t\t * By default, if an RPC method is called multiple times in quick succession, each query eventually\n\t\t * returns its success or failure. But there are situations in which we want each new call of a method\n\t\t * to abort any currently-pending call to that method.\n\t\t *\n\t\t * When calling Netx RPC methods, you can provide the option duplicateQueryPolicy = \"abort\" to\n\t\t * obtain this behavior. Aborted requests neither succeed nor fail, and their promises never\n\t\t * resolve.\n\t\t *\n\t\t * Or, you can provide a policy of 'merge', to prevent the second query & return the promise\n\t\t * of the first one. Both queries will receive the same response, at the same time (or rather, in immediate successive threads.)\n\t\t *\n\t\t * The default policy of 'ignore' changes nothing, which means both queries are processed -- in unknown order.\n\t\t *\n\t\t * An entire RPC instance can be assigned this behavior for all method calls by providing that same option to its constructor.\n\t\t */\n\t\tduplicateQueryPolicy: 'ignore', // standard do-nothing policy == we send two queries.\n\n\t\tnewConst: newConst,\n\n\t\t/**\n\t\t * parseReply() looks at the response from a succesful RPC call. It detects\n\t\t * errors & bad JSON-RPC behavior. If it all looks good, it invokes the\n\t\t * parser for the method (if any), and detects errors from that. If this\n\t\t * method detects no error then the RPC call is successful.\n\t\t */\n\n\t\tparseReply: function(reply, status, fn, id) {\n\t\t\tif (this.garbageCollected) return;\n\n\t\t\t// DAM-3261 dispatch to app:server:error to reset the count of errors\n\t\t\tdispatcher.trigger('app:server:success');\n\n\t\t\tvar replyParsed = false;\n\n\t\t\ttry {\n\t\t\t\t// Occasionally we are seeing the call being declared as undefined\n\t\t\t\t// which causes call.deferred to fail\n\t\t\t\tvar call = this.callsById[id];\n\t\t\t\tvar d = call.deferred;\n\t\t\t\t// So many ways JSON-RPC can go wrong ....\n\n\t\t\t\t// If the reply is empty (null, undefined or empty string), that's a bogus response.\n\t\t\t\tif (_.isUndefined(reply) || _.isNull(reply)) {\n\t\t\t\t\tthrow new Rpc.ProtocolError(\n\t\t\t\t\t\t'\"' + fn + '\": Null reply from server (no reply)',\n\t\t\t\t\t\t{reply: reply, status: status, call: call},\n\t\t\t\t\t);\n\t\t\t\t} else if (!_.isObject(reply)) {\n\t\t\t\t\tthrow new Rpc.ProtocolError(\n\t\t\t\t\t\t'\"' + fn + '\": bad reply from server (no an object)',\n\t\t\t\t\t\t{reply: reply, status: status, call: call},\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// If the ID field doesn't match our id, something is way bogus:\n\t\t\t\telse if (_.isUndefined(reply.id) || reply.id !== id) {\n\t\t\t\t\tthrow new Rpc.ProtocolError('\"' + fn + '\": bad request ID', {\n\t\t\t\t\t\treply: reply,\n\t\t\t\t\t\tstatus: status,\n\t\t\t\t\t\tcall: call,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// If the reply doesn't have either a .result or an .error property, that's bogus JSON-RPC.\n\t\t\t\telse if (\n\t\t\t\t\t!_.isObject(reply) ||\n\t\t\t\t\t(_.isUndefined(reply.result) && _.isUndefined(reply.error))\n\t\t\t\t) {\n\t\t\t\t\tthrow new Rpc.ProtocolError(\n\t\t\t\t\t\t'\"' + fn + '\": Garbled JSON from server',\n\t\t\t\t\t\t{reply: reply, status: status, call: call},\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// If the reply has a .error property that's not an object, that's also bogus JSON-RPC. Trigger an error.\n\t\t\t\telse if (!_.isUndefined(reply.error) && !_.isObject(reply.error)) {\n\t\t\t\t\tthrow new Rpc.ProtocolError(\n\t\t\t\t\t\t'\"' + fn + '\": Garbled JSON from server',\n\t\t\t\t\t\t{reply: reply, status: status, call: call},\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// If the reply does have a .error property, then JSON-RPC is reporting a server error, which we pass along.\n\t\t\t\telse if (reply.error) {\n\t\t\t\t\tthrow new Rpc.MethodError(\n\t\t\t\t\t\treply.error.code,\n\t\t\t\t\t\t'\"' + fn + '\": error: ' + reply.error.message,\n\t\t\t\t\t\t{reply: reply, status: status, call: call},\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Vestigial residue of the DAM's former error handling system:\n\t\t\t\t// If we see a validationData object in the result, check for a failed ValidationBean: an error disguised as success.\n\t\t\t\telse if (\n\t\t\t\t\treply.result &&\n\t\t\t\t\treply.result.validationData &&\n\t\t\t\t\treply.result.validationData.length &&\n\t\t\t\t\t(reply.result.status < 0 ||\n\t\t\t\t\t\treply.result.validationData[0].label == 'Error')\n\t\t\t\t) {\n\t\t\t\t\tconsole.warn('Server sent error as success!');\n\n\t\t\t\t\t// reconfigure the data object to look like proper JSON/RPC error return: http://www.jsonrpc.org/specification#response_object\n\t\t\t\t\treply.error = {\n\t\t\t\t\t\tcode: -32099, // Let's call this a \"Server Validation Error\"\n\t\t\t\t\t\tmessage:\n\t\t\t\t\t\t\t'Server Validation Error: ' +\n\t\t\t\t\t\t\treply.result.validationData[0].value, // TODO: parse the whole array of N validation beans.\n\t\t\t\t\t\treply: reply.result.validationData,\n\t\t\t\t\t};\n\n\t\t\t\t\tdelete reply.result;\n\n\t\t\t\t\tthrow new Rpc.ServerValidationError(\n\t\t\t\t\t\t'\"' + fn + '\": error: ' + reply.error.message,\n\t\t\t\t\t\t{reply: reply, status: status, call: call},\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Anything else is a valid result, we hope.\n\t\t\t\telse {\n\t\t\t\t\tvar result;\n\t\t\t\t\tif (\n\t\t\t\t\t\t// asset collections now have pager models\n\t\t\t\t\t\tcall.rpcMethod !== 'facetedSearch' &&\n\t\t\t\t\t\tcall.rpcMethod !== 'searchAssetsByAttributeHistory' &&\n\t\t\t\t\t\tcall.model &&\n\t\t\t\t\t\tcall.model.isCollection &&\n\t\t\t\t\t\t(call.model.pager && call.model.pager.constructor.__name__ === 'Pager') &&\n\t\t\t\t\t\t_.isObject(reply.result) &&\n\t\t\t\t\t\t_.size(reply.result) >= 2 &&\n\t\t\t\t\t\t(_.isArray(reply.result.results) || _.isArray(reply.result.items)) &&\n\t\t\t\t\t\t(_.isNumeric(reply.result.size) || _.isNumeric(reply.result.totalItems))\n\t\t\t\t\t) {\n\t\t\t\t\t\t// We have detected a paged reply, and a collection with paging\n\t\t\t\t\t\t// For paged replies, the API returns an object containg both a page\n\t\t\t\t\t\t// of results and a total item count: { results: [], size: 0 }\n\t\t\t\t\t\t// The total item count should be set on the collection's pager object:\n\t\t\t\t\t\t// console.debug('updating pager with paged result count');\n\t\t\t\t\t\tcall.model.pager.set('itemTotal', reply.result.size || reply.result.totalItems || 0);\n\t\t\t\t\t\tif (reply.result.startIndex != null) {\n\t\t\t\t\t\t\tcall.model.pager.setStartIndex(reply.result.startIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// The rest can be passed on:\n\t\t\t\t\t\tresult = reply.result.results || reply.result.items;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A normal, unpaged reply\n\t\t\t\t\t\tresult = reply.result;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Things to warn about that aren't necessarily wrong:\n\t\t\t\t\t// If the reply has a .result property that's null or undefined, that's maybe legit JSON-RPC but not how we want things to work; emit a warning.\n\t\t\t\t\tif (_.isNull(result) || _.isUndefined(result)) {\n\t\t\t\t\t\t// For now, just emit a warning and move on:\n\t\t\t\t\t\t// (The rpc method parser can still throw an exception if a null result is truly problematic.)\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t'API error: RPC method \"' + fn + '\" returned null result',\n\t\t\t\t\t\t); // we should file bugs on these.\n\t\t\t\t\t\t//console.warn(call.stack);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (call.model) {\n\t\t\t\t\t\t// Convert 'goo' attributes, if defined\n\t\t\t\t\t\tif (call.model.gooAttrs) {\n\t\t\t\t\t\t\tresult = call.model.unpackAttrs(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// invoke method parser, if defined\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcall.model.parsers &&\n\t\t\t\t\t\t\t_.isFunction(call.model.parsers[call.method])\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tvar parsed = call.model.parsers[call.method].apply(\n\t\t\t\t\t\t\t\tcall.model,\n\t\t\t\t\t\t\t\t[result].concat(this.decodeArguments(call.options)),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tif (!_.isUndefined(parsed)) {\n\t\t\t\t\t\t\t\t// allow the parser to change the result, unless it returned undef.\n\t\t\t\t\t\t\t\tresult = parsed;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// All done.\n\t\t\t\t\treplyParsed = true;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\tthis.onError(e, call, reply, status);\n\t\t\t}\n\n\t\t\t// DEVNOTE: we must do these next things outside of the try/catch loop, so\n\t\t\t// that future exceptions are not caught. That's why we set/check this replyParsed flag.\n\t\t\tif (replyParsed) {\n\t\t\t\t// All done!\n\t\t\t\t// TODO: corrall all the various calls to unregisterCall() ... ideally we'd only call it in one place.\n\t\t\t\t// (How critical is the timing, really?)\n\t\t\t\tthis.unregisterCall(call);\n\n\t\t\t\t// Every succesful sync resets the server's logout timer; reset our client one too:\n\t\t\t\tif (Netx && Netx.session) {\n\t\t\t\t\tNetx.session.resetLogoutTimer(); // every succesful sync resets the server's logout timer; reset our client one too.\n\t\t\t\t}\n\n\t\t\t\t// If this is a backbone sync method, here is where Backbone picks up the changes:\n\t\t\t\tif (_.isFunction(call.options.success)) {\n\t\t\t\t\tcall.options.success(result);\n\t\t\t\t}\n\n\t\t\t\t// Resolve the promise:\n\t\t\t\td.resolveWith(call.model ? call.model : this, [result]);\n\t\t\t}\n\t\t},\n\n\t\t// Handle the fallout from a JSON-RPC error or exception:\n\t\t// find the right error params to call the error handler (if any),\n\t\t// then reject the promise, or call the exceptionHandler if there are no reject handlers on the promise.\n\t\tonError: function(error, call, reply, status) {\n\t\t\tif (!(error instanceof Error)) {\n\t\t\t\t// If the \"error\" argument is the string \"abort\" something\n\t\t\t\t// has triggered our duplicateQueryPolicy and we need to break out of the error method.\n\t\t\t\tif (error === 'abort') {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'Call: %s, aborted by duplicateQueryPolicy',\n\t\t\t\t\t\tcall.method,\n\t\t\t\t\t);\n\t\t\t\t\tthis.unregisterCall(call);\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\t// this should not happen, period.\n\n\t\t\t\t\t// except it does happen any time the dam is unresponsive, no error is passed back\n\t\t\t\t\tconsole.warn('rpc.onError called with non-error!');\n\t\t\t\t\t// DAM-3261 dispatch to app:server:error to count the errors\n\t\t\t\t\tdispatcher.trigger('app:server:error');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Hang on to some knowledge if possible, while trying to absorb the contents of a JSON-RPC error object into a JS Error object.\n\t\t\t// TODO: do this somewhere higher up the tree maybe?\n\t\t\terror.data = error.data || {};\n\t\t\terror.data.call = error.data.call || call;\n\t\t\terror.data.reply = error.data.reply || reply;\n\t\t\tif (!error.code && reply.code) {\n\t\t\t\terror.code = reply.code;\n\t\t\t}\n\n\t\t\t// If we came here from the error handler of the ajax call, then 'reply' is an jqXHR object.\n\t\t\tif (reply instanceof XMLHttpRequest) {\n\t\t\t\tif (status == 'abort') {\n\t\t\t\t\t// We aborted a request. Call no handlers or anything. Just clean up.\n\t\t\t\t\tthis.unregisterCall(call);\n\t\t\t\t\treturn this;\n\t\t\t\t} else {\n\t\t\t\t\t// TODO: this won't be a 500 ... maybe we need a generic HTTP error that includes the code somewhere?\n\t\t\t\t\t//this.handleExceptions(new Rpc.Http500Error(reply.status));\n\t\t\t\t\terror = new Rpc.Http500Error(reply.status);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// If the sync() call defined an error callback, call it.\n\t\t\t// NOTE: this callback calls Backbone's callback, triggering 'error' on the object, unless overridden\n\t\t\t// with the 'error' option to a sync method.\n\t\t\t// We have moved away from that pattern in X7, and prefer to use promises.\n\n\t\t\tif (call && call.options && _.isFunction(call.options.error)) {\n\t\t\t\t// TODO: return error instead of reply.error ? Not sure where this is being parsed.\n\t\t\t\tcall.options.error.apply(this, [reply.error]);\n\t\t\t} else {\n\t\t\t\tconsole.warn('Error in unknown service method. Call is undefined.');\n\t\t\t}\n\n\t\t\t// if there are no reject handlers on the deferred, we should always call the exception handler.\n\t\t\t// This sometimes throws errors after updating the DAM and trying to log back in - `deferred of undefined`\n\t\t\tif (call) {\n\t\t\t\tcall.deferred.rejectWith(call.model ? call.model : this, [\n\t\t\t\t\terror,\n\t\t\t\t\tstatus,\n\t\t\t\t\tcall.xhr,\n\t\t\t\t]);\n\t\t\t}\n\n\t\t\t// TODO: why not just throw this error, causing an exception, and allow it to be\n\t\t\t// handled by an exception-handling mechanism? Why reinvent the wheel with handleExceptions()?\n\t\t\t// (vanilla bRPC came with weird error-munging that never made sense to me ...)\n\t\t\tthis.handleExceptions(error);\n\n\t\t\t// }\n\t\t},\n\n\t\t//////////////////////////////////////////////////////////////////////////////////\n\t\t// Perform a query, sandwiched between a request:* event and a complete:* event .\n\t\t//\n\t\ttriggerQuery: function(method, exec, parsedParameters, options, model) {\n\t\t\t// DEVNOTE:\n\t\t\t// For models & collections, Backbone 1.1.2 'request' events include a jqXHR object\n\t\t\t// from which one can probably deduce the method name.\n\t\t\t// But this 'request:*' event is nicer for most of our needs,\n\t\t\t// and because we use a colon & they don't, there's no conflict.\n\t\t\t// (We added this when we were still using Backbone v1.1.1 .)\n\n\t\t\t// Trigger request:* event as the call goes out:\n\t\t\tmodel.trigger('request:' + method, model, undefined, options);\n\n\t\t\t// Make the call:\n\t\t\tvar p = this._query(method, exec, parsedParameters, options, model);\n\n\t\t\t// Trigger complete:* event when the call finishes:\n\t\t\tp.then(function(result) {\n\t\t\t\tif (!(options && options.silent)) {\n\t\t\t\t\tmodel.trigger(\n\t\t\t\t\t\t'complete:' + method,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\t_.omit(options, 'invokedArguments'),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn p;\n\t\t},\n\n\t\t//////////////////////////////////////////////////////////////\n\t\t// Our public query method: query()\n\t\t//\n\t\t// Backwards compatability fix: a recent refactor changed the signature of .query(),\n\t\t// which is supposed to be an internal method to this file. However, it turns\n\t\t// out that various other parts of Netx/X7 have been reaching in here and calling\n\t\t// Netx.Rpc.query() directly. So here is a public .query() method which translates the former\n\t\t// method signature into the signature of our internal method, now renamed ._query() .\n\t\t//\n\t\tquery: function(fn, params, callback) {\n\t\t\treturn this._query(fn, fn, params).then(callback);\n\t\t},\n\n\t\t//////////////////////////////////////////////////////////////\n\t\t// Our internal query method: _query()\n\t\t//\n\t\t// This manages the call-tracking bureaucracy (registerCall/unregisterCall) for this request,\n\t\t// and then -- if the call is not already a wrapped call -- builds & executes an AJAX query .\n\t\t//\n\t\t_query: function(method, fn, params, options, model) {\n\t\t\toptions = options || {};\n\t\t\toptions.duplicateQueryPolicy =\n\t\t\t\toptions.duplicateQueryPolicy || this.duplicateQueryPolicy;\n\n\t\t\t// Keep track of in-progress RPC calls & all their state:\n\t\t\tthis.callsById = this.callsById || {};\n\t\t\tthis.callsByName = this.callsByName || {};\n\n\t\t\t// Is this meant to be a normal AJAX query, or did a method function return a promise that we're just wrapping?\n\t\t\tvar isAjax = !_.isPromise(fn);\n\n\t\t\t// This is what _query now returns, instead of the raw promise from $.ajax:\n\t\t\tvar d = isAjax ? new $.Deferred() : fn;\n\n\t\t\t// generate unique request id (timestamp)\n\t\t\tvar id = _.uniqueId(String(new Date().getTime()));\n\n\t\t\t// Create a record describing this API call:\n\t\t\tvar call = {\n\t\t\t\tid: id,\n\t\t\t\tdeferred: d,\n\t\t\t\tmodel: model,\n\t\t\t\tmethod: method, // the key of the call in model.methods & model.parsers\n\t\t\t\tparams: params,\n\t\t\t\trpcMethod: isAjax ? fn : method + ':promise', // the name of the API function on the DAM\n\t\t\t\toptions: options,\n\t\t\t};\n\n\t\t\t// Grab the stack:\n\t\t\ttry {\n\t\t\t\tthrow new Error('API call from:');\n\t\t\t} catch (e) {\n\t\t\t\tcall.stack = e.stack;\n\t\t\t}\n\n\t\t\t// Enforce duplicate query policy if there's a duplicate:\n\t\t\tif (\n\t\t\t\toptions.duplicateQueryPolicy !== 'ignore' &&\n\t\t\t\tthis.callsByName[call.rpcMethod]\n\t\t\t) {\n\t\t\t\tswitch (options.duplicateQueryPolicy) {\n\t\t\t\t\tcase 'abort':\n\t\t\t\t\t\tvar otherXhr =\n\t\t\t\t\t\t\tthis.callsByName[call.rpcMethod] &&\n\t\t\t\t\t\t\tthis.callsByName[call.rpcMethod].xhr;\n\t\t\t\t\t\t// Is there another pending call to abort?\n\t\t\t\t\t\tif (otherXhr && otherXhr.state && otherXhr.state() == 'pending') {\n\t\t\t\t\t\t\totherXhr.abort && otherXhr.abort();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'merge':\n\t\t\t\t\t\t// Hand back the previous query's promise\n\t\t\t\t\t\treturn this.callsByName[call.rpcMethod].deferred.promise();\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isAjax) {\n\t\t\t\t// check if params and the function name are ok.\n\t\t\t\tif (!_.isArray(params) || !_.isString(fn)) {\n\t\t\t\t\t// TODO: again, why not just throw errors? why 'onError' them?\n\t\t\t\t\treturn this.onError(\n\t\t\t\t\t\tnew Rpc.DefinitionError(\n\t\t\t\t\t\t\t'Type Mismatch in RPC function definition for \"' +\n\t\t\t\t\t\t\t\tcall.method +\n\t\t\t\t\t\t\t\t'\"',\n\t\t\t\t\t\t),\n\t\t\t\t\t\tcall,\n\t\t\t\t\t\tparams,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t// DAM-6494: prepend session key to parameters list for all non-public API calls:\n\t\t\t\t\tif (Netx && Netx.session) {\n\t\t\t\t\t\tif ((Netx.session.get('publicMethods') || []).indexOf(fn) == -1) {\n\t\t\t\t\t\t\tvar authParam = Netx.session.getToken() || Netx.session.getKey();\n\t\t\t\t\t\t\tif (authParam) {\n\t\t\t\t\t\t\t\t// ... prepend the session key to the parameters\n\t\t\t\t\t\t\t\tparams.unshift(authParam);\n\t\t\t\t\t\t\t\t// console.log('added key to method call'); //DEBUG\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// There would be no access key for the public method `getPublicMethods`\n\t\t\t\t\t\t\t\tif (fn !== 'getPublicMethods') {\n\t\t\t\t\t\t\t\t\tconsole.warn('no access key for private method \"' + fn + '\"');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t////////////////////////////////////////\n\t\t\t\t// XHR PROGRESS TRACKING\n\t\t\t\t////////////////////////////////////////\n\t\t\t\tvar xhrCompletedProgress = false,\n\t\t\t\t\ttrackProgress = false;\n\n\t\t\t\t// REST progress/messaging\n\t\t\t\tvar _xhrComplete = function() {\n\t\t\t\t\tif (!model || !trackProgress) return;\n\t\t\t\t\txhrCompletedProgress = true;\n\t\t\t\t\tdispatcher.trigger('netx:rest:loaded', model, this.namespace, fn);\n\t\t\t\t}.bind(this);\n\n\t\t\t\tif (model && model.xhrTrackProgress) {\n\t\t\t\t\tvar xhrExcludeProgress = model.xhrExcludeProgress || [];\n\t\t\t\t\tif (xhrExcludeProgress.indexOf(fn) < 0) {\n\t\t\t\t\t\tvar xhrTrackProgress = model.xhrTrackProgress;\n\t\t\t\t\t\txhrTrackProgress =\n\t\t\t\t\t\t\txhrTrackProgress === true || xhrTrackProgress[fn];\n\n\t\t\t\t\t\ttrackProgress =\n\t\t\t\t\t\t\txhrTrackProgress != null &&\n\t\t\t\t\t\t\t(xhrTrackProgress === true || xhrTrackProgress.call(model));\n\n\t\t\t\t\t\ttrackProgress &&\n\t\t\t\t\t\t\t_.delay(\n\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t!xhrCompletedProgress &&\n\t\t\t\t\t\t\t\t\t\tdispatcher.trigger(\n\t\t\t\t\t\t\t\t\t\t\t'netx:rest:loading',\n\t\t\t\t\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\t\t\t\t\tthis.namespace,\n\t\t\t\t\t\t\t\t\t\t\tfn,\n\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}.bind(this),\n\t\t\t\t\t\t\t\t15,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t////////////////////////////////////////\n\t\t\t\t// !XHR PROGRESS TRACKING\n\t\t\t\t////////////////////////////////////////\n\n\t\t\t\t// create Ajax query:\n\t\t\t\tvar ajaxArgs = {\n\t\t\t\t\tcontentType: this.contentType + '; charset=' + this.charset,\n\t\t\t\t\ttype: 'POST',\n\t\t\t\t\tdataType: 'json',\n\t\t\t\t\turl: (this.url || Netx.URL.api) + '/' + fn,\n\t\t\t\t\tdata: JSON.stringify({\n\t\t\t\t\t\tdataContext: 'json',\n\t\t\t\t\t\tjsonrpc: '2.0',\n\t\t\t\t\t\tmethod: this.namespace + this.namespaceDelimiter + fn,\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\tparams: params,\n\t\t\t\t\t}),\n\t\t\t\t\tstatusCode: {\n\t\t\t\t\t\t// Convert errorThrown to special HTTP errors ... why?\n\t\t\t\t\t\t404: _.bind(function(jXhr, status, errorThrown) {\n\t\t\t\t\t\t\t_xhrComplete();\n\t\t\t\t\t\t\tthis.onError(\n\t\t\t\t\t\t\t\tnew Rpc.Http404Error(errorThrown.message),\n\t\t\t\t\t\t\t\tcall,\n\t\t\t\t\t\t\t\tjXhr,\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t\t500: _.bind(function(jXhr, status, errorThrown) {\n\t\t\t\t\t\t\t_xhrComplete();\n\t\t\t\t\t\t\tthis.onError(\n\t\t\t\t\t\t\t\tnew Rpc.Http500Error(errorThrown.message),\n\t\t\t\t\t\t\t\tcall,\n\t\t\t\t\t\t\t\tjXhr,\n\t\t\t\t\t\t\t\tstatus,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: _.bind(function(data, status, xhr) {\n\t\t\t\t\t\tif (this.garbageCollected) return;\n\t\t\t\t\t\t_xhrComplete();\n\t\t\t\t\t\tthis.parseReply(data, status, fn, id);\n\t\t\t\t\t}, this),\n\t\t\t\t\terror: _.bind(function(jXhr, status, errorThrown) {\n\t\t\t\t\t\tif (this.garbageCollected) return;\n\t\t\t\t\t\t_xhrComplete();\n\t\t\t\t\t\t// these two error types are handled by statusCode, above...\n\t\t\t\t\t\tif (jXhr.status !== 404 && jXhr.status !== 500) {\n\t\t\t\t\t\t\t// for all other errors, jump to the error handler\n\t\t\t\t\t\t\tthis.onError(errorThrown, call, jXhr, status);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this),\n\t\t\t\t\theaders: options.headers,\n\t\t\t\t};\n\n\t\t\t\t// @if NODE_ENV=\"development\"\n\t\t\t\t////////////////////////////////\n\n\t\t\t\t// TODO: push this logic into jQuery, using sinon.js.\n\t\t\t\t//\n\t\t\t\t// If this object has a test fixture for this method, return the test data directly & don't bother the server\n\n\t\t\t\tif (model && model.fixtures && model.fixtures[fn]) {\n\t\t\t\t\tvar data = {\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\tresult: model.fixtures[fn].valid,\n\t\t\t\t\t};\n\t\t\t\t\tif (_.isString(data.result)) {\n\t\t\t\t\t\tdata.result = JSON.parse(data.result);\n\t\t\t\t\t} else if (_.isFunction(data.result)) {\n\t\t\t\t\t\tdata.result = data.result.apply(model, params);\n\t\t\t\t\t}\n\t\t\t\t\t// call.xhr = {}; // TODO: a more convincing fake XHR object?\n\t\t\t\t\t_.defer(\n\t\t\t\t\t\t_.bind(function() {\n\t\t\t\t\t\t\tthis.parseReply(data, 200, fn, id);\n\t\t\t\t\t\t}, this),\n\t\t\t\t\t);\n\t\t\t\t\tconsole.debug('faking server response for method \"' + fn + '\"');\n\t\t\t\t} else {\n\t\t\t\t\t// send the real query:\n\n\t\t\t\t\t///////////////////////////////\n\t\t\t\t\t// @endif\n\n\t\t\t\t\tcall.xhr = $.ajax(ajaxArgs);\n\n\t\t\t\t\t// @if NODE_ENV=\"development\"\n\t\t\t\t\t///////////////////////////////\n\t\t\t\t}\n\t\t\t\t///////////////////////////////\n\t\t\t\t// @endif\n\t\t\t} else {\n\t\t\t\t// We are wrapping a promise\n\t\t\t\t// Just in case it was an ajax promise, and .xhr is defined:\n\t\t\t\tcall.xhr = d.xhr;\n\n\t\t\t\td.then(\n\t\t\t\t\t_.bind(function(result) {\n\t\t\t\t\t\t// Clean up the call record when we're done,\n\t\t\t\t\t\t// since parseReply won't ever be called.\n\t\t\t\t\t\tthis.unregisterCall(call);\n\n\t\t\t\t\t\tif (this.garbageCollected) return;\n\n\t\t\t\t\t\t// Call the success method if defined,\n\t\t\t\t\t\tif (call.options.success) {\n\t\t\t\t\t\t\tcall.options.success(result);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, this),\n\t\t\t\t\t// on reject, call the error method if defined:\n\t\t\t\t\tcall.options.error,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Store our record of the call:\n\t\t\tthis.registerCall(call);\n\n\t\t\treturn isAjax ? d.promise() : d;\n\t\t},\n\n\t\t// registerCall() keeps track of an API call in progress, in the hashes this.callsByName and this.callsById.\n\t\t// It also sets .syncing on the call's model, to indicate that the model has unresolved API calls in progress.\n\t\t//\n\t\t// unregisterCall() clears tracking of a call, and removes .syncing from the model if it has no more API calls in progress.\n\n\t\tregisterCall: function(call) {\n\t\t\tthis.callsByName[call.rpcMethod] = this.callsById[call.id] = call;\n\t\t\tif (call.model) {\n\t\t\t\tcall.model.syncing = true;\n\t\t\t}\n\t\t},\n\n\t\tunregisterCall: function(call) {\n\t\t\tdelete this.callsById[call.id];\n\t\t\tdelete this.callsByName[call.rpcMethod];\n\t\t\tif (call.model) {\n\t\t\t\t// If there are no more calls, deleting the 'syncing' flag:\n\t\t\t\tif (!(_.size(this.callsById) || _.size(this.callsByName))) {\n\t\t\t\t\tdelete call.model.syncing;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * checkParameters\n\t\t * Check the parameters of a method definition\n\t\t *\n\t\t * @param {Netx.Model} model model\n\t\t * @param {Array} params Parameters of a method definition\n\t\t * @param {Object} options RPC options\n\t\t * @param {boolean} wasFunction Was this parameter generated by a function? Those are parsed differently ...\n\t\t * @returns {Object} The parsed value\n\t\t * @see checkParameter\n\t\t */\n\t\tcheckParameters: function(model, params, options, wasFunction) {\n\t\t\tvar parsedParams = [];\n\n\t\t\t_.each(\n\t\t\t\tparams,\n\t\t\t\tfunction(param) {\n\t\t\t\t\tparsedParams.push(\n\t\t\t\t\t\tthis.checkParameter(model, param, options, wasFunction),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tthis,\n\t\t\t);\n\n\t\t\treturn parsedParams;\n\t\t},\n\n\t\t/**\n\t\t * checkParameter\n\t\t * Check one parameter of a method definition\n\t\t *\n\t\t * @param {Netx.Model} model model\n\t\t * @param {} param Parameter of a method definition\n\t\t * @param {} options RPC options\n\t\t * @param {boolean} wasFunction Was this parameter generated by a function? Those are parsed differently ...\n\t\t * @returns {Object} The parsed value\n\t\t */\n\t\tcheckParameter: function(model, param, options, wasFunction) {\n\t\t\toptions = options || {};\n\n\t\t\t// is the param a function?\n\t\t\tif (_.isFunction(param)) {\n\t\t\t\tvar result = param.apply(model, this.decodeArguments(options));\n\t\t\t\tif (_.isFunction(result)) {\n\t\t\t\t\tthrow new Rpc.DefinitionError(\n\t\t\t\t\t\t'rpc method parameter functions cannot return other functions',\n\t\t\t\t\t\titem,\n\t\t\t\t\t);\n\t\t\t\t} else if (_.isUndefined(result)) {\n\t\t\t\t\tthrow new Rpc.DefinitionError(\n\t\t\t\t\t\t'rpc method parameter functions cannot return undefined parameters',\n\t\t\t\t\t\titem,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (param.isModel || param.isCollection) {\n\t\t\t\treturn param.toJSON();\n\t\t\t}\n\n\t\t\tif (_.isObject(param)) return param;\n\n\t\t\tif (_.isNumber(param)) return param;\n\n\t\t\tif (_.isBoolean(param)) return param;\n\n\t\t\tif (_.isUndefined(param)) {\n\t\t\t\tthrow new Rpc.DefinitionError(\n\t\t\t\t\t'rpc method parameters cannot be undefined',\n\t\t\t\t\titem,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (_.isNull(param)) {\n\t\t\t\t// We dislike using NULL in X7. Backbone doesn't play well with NULL. We prefer to pass\n\t\t\t\t// empty strings in json-rpc calls. But during development we have sometimes found API\n\t\t\t\t// calls that require a null, and until those get fixed we have to allow NULLs.\n\t\t\t\tconsole.warn('passing a NULL rpc parameter!');\n\t\t\t\treturn param;\n\t\t\t}\n\n\t\t\tif (!_.isString(param)) {\n\t\t\t\t// Programmer Hat-Eat Error:\n\t\t\t\t// Somebody defined a seventh fundamental data type in Javascript without consulting the ECMA standards committee!\n\t\t\t\t// Night is day, dogs are cats, society has collapsed, all bets are off, anything could happen.\n\t\t\t\t// Loot some RMEs, retreat to your safe room & await further instructions.\n\t\t\t\tthrow new Rpc.DefinitionError('Unknown parameter data type!');\n\t\t\t}\n\n\t\t\t// From here on can safely assume param is a string.\n\t\t\tif (param == '') {\n\t\t\t\treturn param; // totally valid to specify empty strings as API args.\n\t\t\t}\n\n\t\t\tif (param == 'attributes') {\n\t\t\t\tconsole.warn(\"'attributes' rpc argument removed in 8.12\");\n\t\t\t\t// ... but you can still pass a string called \"attributes\". It just doesn't get any special treatment.\n\t\t\t}\n\n\t\t\t// Encode 'goo' attributes if there are some and 'goo' is specified.\n\t\t\tif (param == 'goo' && model.attributes && model.gooAttrs) {\n\t\t\t\treturn JSON.stringify(_.pick(model.attributes, model.gooAttrs));\n\t\t\t}\n\n\t\t\t// If this parameter was returned by a function, we're done with it.\n\t\t\tif (wasFunction) {\n\t\t\t\treturn param;\n\t\t\t}\n\n\t\t\t// If the parameter was defined in an array,\n\t\t\t// try to use it as a reference on the model/collection,\n\t\t\t// ala vanilla Backbone.RPC :\n\t\t\tif (param.indexOf('.') < 0) {\n\t\t\t\t// nothing special here.\n\t\t\t\tif (model.isModel) {\n\t\t\t\t\t//if (model.has(param))\n\t\t\t\t\t// HACK: Backbone (darn it!) returns false if a property exists but is null ....\n\t\t\t\t\tif (typeof model.attributes[param] !== 'undefined') {\n\t\t\t\t\t\t// String refers to a model attribute. Return the attribute.\n\t\t\t\t\t\treturn model.get(param);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if the key can't be found in the attributes, it may just be a JS object property\n\t\t\t\tif (!_.isUndefined(model[param])) {\n\t\t\t\t\t// String refers to a model property. Return the property.\n\t\t\t\t\t// TODO: now that we have method arguments, maybe deprecate this feature?\n\t\t\t\t\treturn model[param];\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Rpc.DefinitionError(\n\t\t\t\t\t\t'rpc method parameter \"' + param + '\" is undefined',\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Parameters containing dots: recurse into objects.\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'dot-notation in method arguments deprecated, gone in 8.13',\n\t\t\t\t);\n\n\t\t\t\tvar parts = param.split('.');\n\t\t\t\t//console.debug(\"split \", param, ' into ', parts.join(','));\n\t\t\t\tif (typeof model[parts[0]] !== 'undefined') {\n\t\t\t\t\t// extract the child property from the parent property\n\t\t\t\t\treturn model[parts[0]][parts[1]];\n\t\t\t\t} else if (model.isModel && model.has(parts[0])) {\n\t\t\t\t\t// extract the child property from the attribute\n\t\t\t\t\treturn model.get(parts[0])[parts[1]];\n\t\t\t\t} else {\n\t\t\t\t\t// parent property doesn't exist\n\t\t\t\t\t//console.debug('bonk');\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}, // checkParameter\n\n\t\t/**\n\t\t * When method definitions, method parameter definitions or method parsers are functions,\n\t\t * they are invoked with the original arguments + an enhanced options object. (DAM-8469/DAM-8468)\n\t\t * We encode the original arguments in the options object, and decode them here:\n\t\t * @param {object} options - Sync options\n\t\t * @returns {array} Arguments array. Last argument *must* be an options object.\n\t\t */\n\t\tdecodeArguments: function(options) {\n\t\t\tif (options.invokedArguments) {\n\t\t\t\t// arguments were encoded. Use them.\n\t\t\t\treturn options.invokedArguments.concat(\n\t\t\t\t\t_.omit(options, 'invokedArguments'),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t// The default case with no arguments:\n\t\t\t\treturn [options];\n\t\t\t}\n\t\t},\n\n\t\t// checkMethods() parses the model.methods array to create the RPC signature, then calls _query().\n\t\tcheckMethods: function(model, method, options) {\n\t\t\t//if (this === window) debugger; // DEBUG\n\n\t\t\tvar definition = null,\n\t\t\t\tdeeperNested = false,\n\t\t\t\texec = null,\n\t\t\t\tparsedParameters = [],\n\t\t\t\twasFunction = false,\n\t\t\t\thadArguments = false,\n\t\t\t\tfunctionArgs = 0;\n\n\t\t\toptions = options || {};\n\n\t\t\t// Rewrite method if name is delete\n\t\t\t// NOTE: this is pretty screwy: you must name your delete method \"remove\" in your model.\n\t\t\t// but you must call the model's \"delete\" method to execute it.\n\t\t\tmethod = method === 'delete' ? 'remove' : method;\n\n\t\t\t// This can only be an array or a function:\n\t\t\tdefinition = model.methods[method];\n\t\t\t// If function, replace with return value (which must be an array)\n\t\t\tif (_.isFunction(definition)) {\n\t\t\t\twasFunction = true;\n\t\t\t\thadArguments = definition.length > 0;\n\n\t\t\t\t// Decode any encoded arguments into an array:\n\t\t\t\t//\n\t\t\t\tvar decodedArguments = this.decodeArguments(options);\n\n\t\t\t\t// DAM-9216: (bug with multi-call methods and success/error)\n\t\t\t\t//\n\t\t\t\t// If this method function wraps any other inner RPC methods, then it should,\n\t\t\t\t// and probably does, pass along its options argument when calling those inner methods.\n\t\t\t\t// However, if options.success or options.error are defined, they're intended\n\t\t\t\t// to reflect the status of this outer method, not of any inner ones.\n\t\t\t\t// Therefore, we must omit those two options when calling this method function,\n\t\t\t\t// so they don't get passed to other RPC functions & cause backbone.sync\n\t\t\t\t// (or whatever) to finish prematurely.\n\t\t\t\t//\n\t\t\t\t// Assertion:\n\t\t\t\t// For the next bit, we depend on decodedArguments() always returning an array,\n\t\t\t\t// always having at least one element in the array,\n\t\t\t\t// and the last element always being an options argument.\n\t\t\t\tif (\n\t\t\t\t\tdecodedArguments.length == 0 ||\n\t\t\t\t\t_.isString(_.last(decodedArguments)) ||\n\t\t\t\t\t_.isNumber(_.last(decodedArguments)) ||\n\t\t\t\t\t_.isArray(_.last(decodedArguments))\n\t\t\t\t) {\n\t\t\t\t\tthrow 'Assertion error in decoded arguments!'; // should never happen.\n\t\t\t\t}\n\t\t\t\t// Omit those two:\n\t\t\t\tdecodedArguments[decodedArguments.length - 1] = _.omit(\n\t\t\t\t\tdecodedArguments[decodedArguments.length - 1],\n\t\t\t\t\t'success',\n\t\t\t\t\t'error',\n\t\t\t\t);\n\n\t\t\t\t// Execute method function with arguments:\n\t\t\t\tdefinition = definition.apply(model, decodedArguments);\n\n\t\t\t\t// SPECIAL CASE #1:\n\t\t\t\t// (DAM-8470: let method functions chain multiple RPC calls)\n\t\t\t\t//\n\t\t\t\t// If an RPC method definition function returns a promise,\n\t\t\t\t// short-circuit everything else and hand that promise to triggerQuery:\n\t\t\t\tif (_.isPromise(definition)) {\n\t\t\t\t\treturn this.triggerQuery(method, definition, [], options, model);\n\t\t\t\t}\n\n\t\t\t\t// SPECIAL CASE #2:\n\t\t\t\t// (DAM-8220: let method functions supress RPC calls entirely)\n\t\t\t\t//\n\t\t\t\t// If an RPC methods definition function returns false,\n\t\t\t\t// it has decided that no actual RPC call should be made.\n\t\t\t\t// In that case, hand a pre-resolved promise to _query,\n\t\t\t\t// and it will get handled the same way as in special case #1.\n\t\t\t\t//\n\t\t\t\t// (Of course a method function could do this internally,\n\t\t\t\t// and return a resolved promise -- same effect.)\n\t\t\t\tif (definition === false) {\n\t\t\t\t\tconsole.warn('RPC call suppressed by method function.'); //DEBUG -- remove before shipping ... just want to watch for a while & notice if anything's already doing this.\n\t\t\t\t\t// DEVNOTE:\n\t\t\t\t\t// I don't *think* we want to trigger the request: and complete: events here,\n\t\t\t\t\t// since no actual request went out. Fake events ... just say no!\n\t\t\t\t\t// (But if we change our mind for some reason, replace _query with triggerQuery .)\n\t\t\t\t\treturn this._query(\n\t\t\t\t\t\tmethod,\n\t\t\t\t\t\tnew $.Deferred().resolve(),\n\t\t\t\t\t\t[],\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!_.isArray(definition)) {\n\t\t\t\t// Not even giving you the option to override this one, since it\n\t\t\t\t// can only be a bug in an object definition & can't be fixed\n\t\t\t\t// except by writing code correctly!\n\t\t\t\tthrow new Rpc.DefinitionError(\n\t\t\t\t\t'Bad rpc method \"' + method + \"'\",\n\t\t\t\t\tdefinition,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// check if array is deeper nested\n\t\t\tif (_.isArray(definition[0])) {\n\t\t\t\tdeeperNested = true;\n\t\t\t}\n\n\t\t\t// execute a single call\n\t\t\tif (deeperNested !== true && _.isArray(definition)) {\n\t\t\t\tparsedParameters = _.clone(definition);\n\t\t\t\texec = parsedParameters.shift();\n\n\t\t\t\t// TODO: deprecate this after 8.12. Method functions should stop needing/expecting any further parsing of the method array they return.\n\t\t\t\tif (!hadArguments) {\n\t\t\t\t\tparsedParameters = this.checkParameters(\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t\tparsedParameters,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\twasFunction,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t// DAM-5552: as of 8.10, do no further parsing of parameters returned from method signature functions that take arguments\n\t\t\t\t\t// console.debug('not parsing ...');//DEBUG\n\t\t\t\t}\n\n\t\t\t\treturn this.triggerQuery(\n\t\t\t\t\tmethod,\n\t\t\t\t\texec,\n\t\t\t\t\tparsedParameters,\n\t\t\t\t\toptions,\n\t\t\t\t\tmodel,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Execute nested calls in parallel:\n\t\t\t_.each(\n\t\t\t\tdefinition,\n\t\t\t\tfunction(localdef) {\n\t\t\t\t\tparsedParameters = _.clone(localdef);\n\t\t\t\t\texec = parsedParameters.shift();\n\n\t\t\t\t\tif (!hadArguments) {\n\t\t\t\t\t\tparsedParameters = this.checkParameters(\n\t\t\t\t\t\t\tmodel,\n\t\t\t\t\t\t\tparsedParameters,\n\t\t\t\t\t\t\toptions,\n\t\t\t\t\t\t\twasFunction,\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// DAM-5552: during deprecation, do no further parsing of parameters returned from method signature functions that take arguments\n\t\t\t\t\t\t// console.debug('not parsing ...');//DEBUG\n\t\t\t\t\t}\n\n\t\t\t\t\t// TODO: (MAYBE) In the case of these nested calls, we're not returning a promise because\n\t\t\t\t\t// this 'return this._query(...)' only exits the _.each loop ... so we fall through to the \"return null;\" below the loop.\n\t\t\t\t\t// Instead, we should amalgamate these promises into a super-promise using $.when().\n\t\t\t\t\t// (However, we're not currently using the \"nested calls\" feature of BRPC at all, except by accident...)\n\t\t\t\t\treturn this.triggerQuery(\n\t\t\t\t\t\tmethod,\n\t\t\t\t\t\texec,\n\t\t\t\t\t\tparsedParameters,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\tmodel,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tthis,\n\t\t\t);\n\n\t\t\treturn null;\n\t\t},\n\n\t\t// Netx default exception handler\n\t\tdefaultExceptionHandler: function(exception) {\n\t\t\t// NOTE: Backbone.RPC is sending custom Error subclasses here, which we could test for using instanceof.\n\t\t\tvar sessionErrors = [6, 3001, 3002, 3003];\n\t\t\tif (sessionErrors.includes(exception.code)) {\n\t\t\t\t// If we have a token, some calls with give sessionErrors while others will pass.\n\t\t\t\tif (!Netx.session.getToken()) {\n\t\t\t\t\t// If not, a session error means our key is invalid.\n\t\t\t\t\tdispatcher.trigger('session:expire');\n\t\t\t\t}\n\t\t\t\tconsole.error(\n\t\t\t\t\texception.data.call.method +\n\t\t\t\t\t\t'() API exception ' +\n\t\t\t\t\t\texception.code +\n\t\t\t\t\t\t': ' +\n\t\t\t\t\t\texception.message,\n\t\t\t\t);\n\t\t\t\tconsole.error(exception.stack); // return stack\n\t\t\t\tconsole.error(exception.data.call.stack); // entry stack\n\t\t\t} else if (exception.code === -1) {\n\t\t\t\t// TODO: https://jira.netx.net/browse/DAM-10129\n\t\t\t\t// 400 error -- URL not found\n\t\t\t\tvar details = i18n.t('i18n.error400');\n\t\t\t\tif (exception.data.call.method) {\n\t\t\t\t\tdetails += '<br />' + exception.data.call.method;\n\t\t\t\t}\n\t\t\t\tdispatcher.trigger('app:alert', details);\n\n\t\t\t\tconsole.error('exception:');\n\t\t\t\tconsole.error(exception.stack);\n\t\t\t} else if (exception.code === -2) {\n\t\t\t\t// TODO: https://jira.netx.net/browse/DAM-10129\n\t\t\t\t// 500 error -- server not available\n\t\t\t\tvar details = i18n.t('i18n.error500');\n\t\t\t\tif (exception.data.call.method) {\n\t\t\t\t\tdetails +=\n\t\t\t\t\t\t'<br />' +\n\t\t\t\t\t\texception.data.call.method +\n\t\t\t\t\t\t'(): Server Not Available (Error 500)';\n\t\t\t\t}\n\t\t\t\tdispatcher.trigger('app:alert', details);\n\n\t\t\t\tconsole.error('exception:');\n\t\t\t\tconsole.error(exception.stack);\n\t\t\t} else if (exception.code === -32602) {\n\t\t\t\t// RPC Invalid Params\n\t\t\t\t// HACK, HACK, HACK, ACK, ACK, CK, K\n\t\t\t\t// https://jira.netx.net/browse/DAM-5803\n\t\t\t\t// TODO: Remove in 8.12? Shouldn't be necessary any more ....\n\t\t\t\tconsole.warn('server claims no API key ... '); // We should never see this ...\n\t\t\t\tif (!Netx.session.getKey()) {\n\t\t\t\t\tdispatcher.trigger('session:expire');\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Do not spit out an error for downloads needing justification or approval\n\t\t\t// 4003 is for an asset bean not existing - let the controllers handle this - the asset wont exist on an upload request form!\n\t\t\telse if (\n\t\t\t\texception.code !== 221 &&\n\t\t\t\texception.code !== 220 &&\n\t\t\t\texception.code !== 4003\n\t\t\t) {\n\t\t\t\t// Some other problem:\n\t\t\t\t//\n\t\t\t\t// DAM-5802: don't ever show this fairly useless error alert window.\n\t\t\t\t// if (! _.isUndefined(Netx.custom.SHOW_RPC_ALERT) && Netx.custom.SHOW_RPC_ALERT == true) {\n\t\t\t\t// \tdispatcher.trigger('app:alert', \"RPC Error: \" + exception.message,'Danger');\n\t\t\t\t// }\n\n\t\t\t\t// ... but always log to the console.\n\t\t\t\tconsole.error(\n\t\t\t\t\texception.data.call.method +\n\t\t\t\t\t\t'() API exception ' +\n\t\t\t\t\t\texception.code +\n\t\t\t\t\t\t': ' +\n\t\t\t\t\t\texception.message,\n\t\t\t\t);\n\t\t\t\tconsole.error(exception.stack); // return stack\n\t\t\t\tconsole.error(exception.data.call.stack); // entry stack\n\t\t\t}\n\n\t\t\t//throw exception;\n\t\t},\n\n\t\t// Exception handler\n\t\thandleExceptions: function(error) {\n\t\t\tvar exceptionHandler;\n\t\t\tif (\n\t\t\t\terror &&\n\t\t\t\terror.data &&\n\t\t\t\terror.data.call &&\n\t\t\t\terror.data.call.options &&\n\t\t\t\terror.data.call.options.exceptionHandler\n\t\t\t) {\n\t\t\t\texceptionHandler = error.data.call.options.exceptionHandler; // as overridden in sync options\n\t\t\t} else {\n\t\t\t\texceptionHandler = _.isFunction(this.options.exceptionHandler)\n\t\t\t\t\t? this.options.exceptionHandler\n\t\t\t\t\t: this.defaultExceptionHandler; // as specified when Rpc was instantiated\n\t\t\t}\n\n\t\t\texceptionHandler.call(this, error);\n\t\t\treturn this;\n\t\t},\n\t}; // Rpc.prototype\n\n\tObject.defineProperty(Rpc, 'url', {\n\t\tget function() {\n\t\t\treturn Netx.URL.api;\n\t\t},\n\t});\n\n\t///////////////\n\t//\n\t// Extend RPC onto Backbone:\n\t//\n\t//\n\t// assign rpc to backbone itself\n\tBackbone.Rpc = Rpc;\n\n\t// overwrite backbones model constructor\n\tBackbone.Model = Backbone.Model.extend({\n\t\tconstructor: function(model) {\n\t\t\tnewConst(model, this);\n\t\t\t// call the original constructor\n\t\t\toldModelConst.apply(this, arguments);\n\t\t},\n\t});\n\n\t// overwrite backbones collection constructor\n\tBackbone.Collection = Backbone.Collection.extend({\n\t\t// Should this take the model or the collection?\n\t\tconstructor: function(model) {\n\t\t\tnewConst(model, this);\n\t\t\t// call the original constructor\n\t\t\toldCollectionConst.apply(this, arguments);\n\t\t},\n\t});\n\n\t// overwrite Backbone.sync\n\t// (using the anonymous function pattern to keep the internal variables private.)\n\tBackbone.sync = (function(Rpc) {\n\t\t// Generate a new Sync Method for JSON RPC Queuing\n\t\tvar rpc = null,\n\t\t\tsync = function(method, model, options) {\n\t\t\t\t// skip all this RPC stuff if this model doesn't use RPC:\n\t\t\t\tif (!(model._rpc instanceof Rpc)) {\n\t\t\t\t\treturn sync.previous.apply(model, arguments);\n\t\t\t\t}\n\n\t\t\t\t// define a local error callback that will hand over the data to the backbone error handler\n\t\t\t\tvar errorCb = function(data) {\n\t\t\t\t\toptions.error(model, data);\n\t\t\t\t};\n\n\t\t\t\t// assign the models JsonRpc instance locally\n\t\t\t\t// (closure from enclosing method)\n\t\t\t\trpc = model._rpc;\n\n\t\t\t\t// First, set the api url\n\t\t\t\trpc.url = _.isFunction(model.url) ? model.url() : model.url;\n\n\t\t\t\t// Second, set the namespace\n\t\t\t\tif (_.isString(model.namespace) === true) {\n\t\t\t\t\trpc.namespace = model.namespace;\n\t\t\t\t}\n\n\t\t\t\t// go on and check the rpc methods\n\t\t\t\t// TODO: not totally sure why this 'apply' is necessary ....\n\t\t\t\treturn rpc.checkMethods.apply(rpc, [model, method, options]);\n\t\t\t};\n\n\t\t// Expose the previous Backbone.sync as Backbone.sync.previous in case\n\t\t// the caller wishes to switch provider\n\t\tsync.previous = oldSync;\n\t\treturn sync;\n\t})(Rpc);\n\n\tmodule.exports = Rpc;\n\n\treturn Backbone;\n});\n\n/////////////////////////////////////////\n// Close the module inclusion pattern: //\n/////////////////////////////////////////\n","/**\n*\n* Base64 encode / decode\n* http://www.webtoolkit.info\n*\n**/\nvar Base64 = {\n\n // private property\n _keyStr: \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\"\n\n // public method for encoding\n , encode: function (input)\n {\n var output = \"\";\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n\n input = Base64._utf8_encode(input);\n\n while (i < input.length)\n {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n\n if (isNaN(chr2))\n {\n enc3 = enc4 = 64;\n }\n else if (isNaN(chr3))\n {\n enc4 = 64;\n }\n\n output = output +\n this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +\n this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);\n } // Whend \n\n return output;\n } // End Function encode \n\n\n // public method for decoding\n ,decode: function (input)\n {\n var output = \"\";\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0;\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n while (i < input.length)\n {\n enc1 = this._keyStr.indexOf(input.charAt(i++));\n enc2 = this._keyStr.indexOf(input.charAt(i++));\n enc3 = this._keyStr.indexOf(input.charAt(i++));\n enc4 = this._keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output = output + String.fromCharCode(chr1);\n\n if (enc3 != 64)\n {\n output = output + String.fromCharCode(chr2);\n }\n\n if (enc4 != 64)\n {\n output = output + String.fromCharCode(chr3);\n }\n\n } // Whend \n\n output = Base64._utf8_decode(output);\n\n return output;\n } // End Function decode \n\n\n // private method for UTF-8 encoding\n ,_utf8_encode: function (string)\n {\n var utftext = \"\";\n string = string.replace(/\\r\\n/g, \"\\n\");\n\n for (var n = 0; n < string.length; n++)\n {\n var c = string.charCodeAt(n);\n\n if (c < 128)\n {\n utftext += String.fromCharCode(c);\n }\n else if ((c > 127) && (c < 2048))\n {\n utftext += String.fromCharCode((c >> 6) | 192);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n else\n {\n utftext += String.fromCharCode((c >> 12) | 224);\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n\n } // Next n \n\n return utftext;\n } // End Function _utf8_encode \n\n // private method for UTF-8 decoding\n ,_utf8_decode: function (utftext)\n {\n var string = \"\";\n var i = 0;\n var c, c1, c2, c3;\n c = c1 = c2 = 0;\n\n while (i < utftext.length)\n {\n c = utftext.charCodeAt(i);\n\n if (c < 128)\n {\n string += String.fromCharCode(c);\n i++;\n }\n else if ((c > 191) && (c < 224))\n {\n c2 = utftext.charCodeAt(i + 1);\n string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n i += 2;\n }\n else\n {\n c2 = utftext.charCodeAt(i + 1);\n c3 = utftext.charCodeAt(i + 2);\n string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n i += 3;\n }\n\n } // Whend \n\n return string;\n } // End Function _utf8_decode \n\n};\n\nmodule.exports = Base64;\n","/*!\n * Modernizr v2.7.2\n * www.modernizr.com\n *\n * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton\n * Available under the BSD and MIT licenses: www.modernizr.com/license/\n */\n\n/*\n * Modernizr tests which native CSS3 and HTML5 features are available in\n * the current UA and makes the results available to you in two ways:\n * as properties on a global Modernizr object, and as classes on the\n * <html> element. This information allows you to progressively enhance\n * your pages with a granular level of control over the experience.\n *\n * Modernizr has an optional (not included) conditional resource loader\n * called Modernizr.load(), based on Yepnope.js (yepnopejs.com).\n * To get a build that includes Modernizr.load(), as well as choosing\n * which tests to include, go to www.modernizr.com/download/\n *\n * Authors Faruk Ates, Paul Irish, Alex Sexton\n * Contributors Ryan Seddon, Ben Alman\n */\n\n+function( root, factory ) {\n\t// CommonJS\n\tif (typeof exports == \"object\") {\n\t\tmodule.exports = factory( require('global/window'), require('global/document') );\n\t}\n\t// Browser\n\telse {\n\t\tfactory( this, this.document );\n\t}\n}( this, function ( window, document ) {\n\n var version = '2.7.2',\n\n Modernizr = {},\n\n /*>>cssclasses*/\n // option for enabling the HTML classes to be added\n enableClasses = true,\n /*>>cssclasses*/\n\n docElement = document.documentElement,\n\n /**\n * Create our \"modernizr\" element that we do most feature tests on.\n */\n mod = 'modernizr',\n modElem = document.createElement(mod),\n mStyle = modElem.style,\n\n /**\n * Create the input element for various Web Forms feature tests.\n */\n inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,\n\n /*>>smile*/\n smile = ':)',\n /*>>smile*/\n\n toString = {}.toString,\n\n // TODO :: make the prefixes more granular\n /*>>prefixes*/\n // List of property values to set for css tests. See ticket #21\n prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),\n /*>>prefixes*/\n\n /*>>domprefixes*/\n // Following spec is to expose vendor-specific style properties as:\n // elem.style.WebkitBorderRadius\n // and the following would be incorrect:\n // elem.style.webkitBorderRadius\n\n // Webkit ghosts their properties in lowercase but Opera & Moz do not.\n // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+\n // erik.eae.net/archives/2008/03/10/21.48.10/\n\n // More here: github.com/Modernizr/Modernizr/issues/issue/21\n omPrefixes = 'Webkit Moz O ms',\n\n cssomPrefixes = omPrefixes.split(' '),\n\n domPrefixes = omPrefixes.toLowerCase().split(' '),\n /*>>domprefixes*/\n\n /*>>ns*/\n ns = {'svg': 'http://www.w3.org/2000/svg'},\n /*>>ns*/\n\n tests = {},\n inputs = {},\n attrs = {},\n\n classes = [],\n\n slice = classes.slice,\n\n featureName, // used in testing loop\n\n\n /*>>teststyles*/\n // Inject element with style element and some CSS rules\n injectElementWithStyles = function( rule, callback, nodes, testnames ) {\n\n var style, ret, node, docOverflow,\n div = document.createElement('div'),\n // After page load injecting a fake body doesn't work so check if body exists\n body = document.body,\n // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.\n fakeBody = body || document.createElement('body');\n\n if ( parseInt(nodes, 10) ) {\n // In order not to give false positives we create a node for each test\n // This also allows the method to scale for unspecified uses\n while ( nodes-- ) {\n node = document.createElement('div');\n node.id = testnames ? testnames[nodes] : mod + (nodes + 1);\n div.appendChild(node);\n }\n }\n\n // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed\n // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element\n // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.\n // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx\n // Documents served as xml will throw if using ­ so use xml friendly encoded version. See issue #277\n style = ['­','<style id=\"s', mod, '\">', rule, '</style>'].join('');\n div.id = mod;\n // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.\n // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270\n (body ? div : fakeBody).innerHTML += style;\n fakeBody.appendChild(div);\n if ( !body ) {\n //avoid crashing IE8, if background image is used\n fakeBody.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n fakeBody.style.overflow = 'hidden';\n docOverflow = docElement.style.overflow;\n docElement.style.overflow = 'hidden';\n docElement.appendChild(fakeBody);\n }\n\n ret = callback(div, rule);\n // If this is done after page load we don't want to remove the body so check if body exists\n if ( !body ) {\n fakeBody.parentNode.removeChild(fakeBody);\n docElement.style.overflow = docOverflow;\n } else {\n div.parentNode.removeChild(div);\n }\n\n return !!ret;\n\n },\n /*>>teststyles*/\n\n /*>>mq*/\n // adapted from matchMedia polyfill\n // by Scott Jehl and Paul Irish\n // gist.github.com/786768\n testMediaQuery = function( mq ) {\n\n var matchMedia = window.matchMedia || window.msMatchMedia;\n if ( matchMedia ) {\n return matchMedia(mq).matches;\n }\n\n var bool;\n\n injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {\n bool = (window.getComputedStyle ?\n getComputedStyle(node, null) :\n node.currentStyle)['position'] == 'absolute';\n });\n\n return bool;\n\n },\n /*>>mq*/\n\n\n /*>>hasevent*/\n //\n // isEventSupported determines if a given element supports the given event\n // kangax.github.com/iseventsupported/\n //\n // The following results are known incorrects:\n // Modernizr.hasEvent(\"webkitTransitionEnd\", elem) // false negative\n // Modernizr.hasEvent(\"textInput\") // in Webkit. github.com/Modernizr/Modernizr/issues/333\n // ...\n isEventSupported = (function() {\n\n var TAGNAMES = {\n 'select': 'input', 'change': 'input',\n 'submit': 'form', 'reset': 'form',\n 'error': 'img', 'load': 'img', 'abort': 'img'\n };\n\n function isEventSupported( eventName, element ) {\n\n element = element || document.createElement(TAGNAMES[eventName] || 'div');\n eventName = 'on' + eventName;\n\n // When using `setAttribute`, IE skips \"unload\", WebKit skips \"unload\" and \"resize\", whereas `in` \"catches\" those\n var isSupported = eventName in element;\n\n if ( !isSupported ) {\n // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element\n if ( !element.setAttribute ) {\n element = document.createElement('div');\n }\n if ( element.setAttribute && element.removeAttribute ) {\n element.setAttribute(eventName, '');\n isSupported = is(element[eventName], 'function');\n\n // If property was created, \"remove it\" (by setting value to `undefined`)\n if ( !is(element[eventName], 'undefined') ) {\n element[eventName] = undefined;\n }\n element.removeAttribute(eventName);\n }\n }\n\n element = null;\n return isSupported;\n }\n return isEventSupported;\n })(),\n /*>>hasevent*/\n\n // TODO :: Add flag for hasownprop ? didn't last time\n\n // hasOwnProperty shim by kangax needed for Safari 2.0 support\n _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;\n\n if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {\n hasOwnProp = function (object, property) {\n return _hasOwnProperty.call(object, property);\n };\n }\n else {\n hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */\n return ((property in object) && is(object.constructor.prototype[property], 'undefined'));\n };\n }\n\n // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js\n // es5.github.com/#x15.3.4.5\n\n if (!Function.prototype.bind) {\n Function.prototype.bind = function bind(that) {\n\n var target = this;\n\n if (typeof target != \"function\") {\n throw new TypeError();\n }\n\n var args = slice.call(arguments, 1),\n bound = function () {\n\n if (this instanceof bound) {\n\n var F = function(){};\n F.prototype = target.prototype;\n var self = new F();\n\n var result = target.apply(\n self,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return self;\n\n } else {\n\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n\n }\n\n };\n\n return bound;\n };\n }\n\n /**\n * setCss applies given styles to the Modernizr DOM node.\n */\n function setCss( str ) {\n mStyle.cssText = str;\n }\n\n /**\n * setCssAll extrapolates all vendor-specific css strings.\n */\n function setCssAll( str1, str2 ) {\n return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));\n }\n\n /**\n * is returns a boolean for if typeof obj is exactly type.\n */\n function is( obj, type ) {\n return typeof obj === type;\n }\n\n /**\n * contains returns a boolean for if substr is found within str.\n */\n function contains( str, substr ) {\n return !!~('' + str).indexOf(substr);\n }\n\n /*>>testprop*/\n\n // testProps is a generic CSS / DOM property test.\n\n // In testing support for a given CSS property, it's legit to test:\n // `elem.style[styleName] !== undefined`\n // If the property is supported it will return an empty string,\n // if unsupported it will return undefined.\n\n // We'll take advantage of this quick test and skip setting a style\n // on our modernizr element, but instead just testing undefined vs\n // empty string.\n\n // Because the testing of the CSS property names (with \"-\", as\n // opposed to the camelCase DOM properties) is non-portable and\n // non-standard but works in WebKit and IE (but not Gecko or Opera),\n // we explicitly reject properties with dashes so that authors\n // developing in WebKit or IE first don't end up with\n // browser-specific content by accident.\n\n function testProps( props, prefixed ) {\n for ( var i in props ) {\n var prop = props[i];\n if ( !contains(prop, \"-\") && mStyle[prop] !== undefined ) {\n return prefixed == 'pfx' ? prop : true;\n }\n }\n return false;\n }\n /*>>testprop*/\n\n // TODO :: add testDOMProps\n /**\n * testDOMProps is a generic DOM property test; if a browser supports\n * a certain property, it won't return undefined for it.\n */\n function testDOMProps( props, obj, elem ) {\n for ( var i in props ) {\n var item = obj[props[i]];\n if ( item !== undefined) {\n\n // return the property name as a string\n if (elem === false) return props[i];\n\n // let's bind a function\n if (is(item, 'function')){\n // default to autobind unless override\n return item.bind(elem || obj);\n }\n\n // return the unbound function or obj or value\n return item;\n }\n }\n return false;\n }\n\n /*>>testallprops*/\n /**\n * testPropsAll tests a list of DOM properties we want to check against.\n * We specify literally ALL possible (known and/or likely) properties on\n * the element including the non-vendor prefixed one, for forward-\n * compatibility.\n */\n function testPropsAll( prop, prefixed, elem ) {\n\n var ucProp = prop.charAt(0).toUpperCase() + prop.slice(1),\n props = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');\n\n // did they call .prefixed('boxSizing') or are we just testing a prop?\n if(is(prefixed, \"string\") || is(prefixed, \"undefined\")) {\n return testProps(props, prefixed);\n\n // otherwise, they called .prefixed('requestAnimationFrame', window[, elem])\n } else {\n props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');\n return testDOMProps(props, prefixed, elem);\n }\n }\n /*>>testallprops*/\n\n\n /**\n * Tests\n * -----\n */\n\n // The *new* flexbox\n // dev.w3.org/csswg/css3-flexbox\n\n tests['flexbox'] = function() {\n return testPropsAll('flexWrap');\n };\n\n // The *old* flexbox\n // www.w3.org/TR/2009/WD-css3-flexbox-20090723/\n\n tests['flexboxlegacy'] = function() {\n return testPropsAll('boxDirection');\n };\n\n // On the S60 and BB Storm, getContext exists, but always returns undefined\n // so we actually have to call getContext() to verify\n // github.com/Modernizr/Modernizr/issues/issue/97/\n\n // tests['canvas'] = function() {\n // var elem = document.createElement('canvas');\n // return !!(elem.getContext && elem.getContext('2d'));\n // };\n\n // tests['canvastext'] = function() {\n // return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));\n // };\n\n // webk.it/70117 is tracking a legit WebGL feature detect proposal\n\n // We do a soft detect which may false positive in order to avoid\n // an expensive context creation: bugzil.la/732441\n\n tests['webgl'] = function() {\n return !!window.WebGLRenderingContext;\n };\n\n /*\n * The Modernizr.touch test only indicates if the browser supports\n * touch events, which does not necessarily reflect a touchscreen\n * device, as evidenced by tablets running Windows 7 or, alas,\n * the Palm Pre / WebOS (touch) phones.\n *\n * Additionally, Chrome (desktop) used to lie about its support on this,\n * but that has since been rectified: crbug.com/36415\n *\n * We also test for Firefox 4 Multitouch Support.\n *\n * For more info, see: modernizr.github.com/Modernizr/touch.html\n */\n\n tests['touch'] = function() {\n var bool;\n\n if(('ontouchstart' in window) || (window.DocumentTouch && document instanceof DocumentTouch)) {\n bool = true;\n } else {\n injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {\n bool = node.offsetTop === 9;\n });\n }\n\n return bool;\n };\n\n\n // geolocation is often considered a trivial feature detect...\n // Turns out, it's quite tricky to get right:\n //\n // Using !!navigator.geolocation does two things we don't want. It:\n // 1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513\n // 2. Disables page caching in WebKit: webk.it/43956\n //\n // Meanwhile, in Firefox < 8, an about:config setting could expose\n // a false positive that would throw an exception: bugzil.la/688158\n\n tests['geolocation'] = function() {\n return 'geolocation' in navigator;\n };\n\n\n tests['postmessage'] = function() {\n return !!window.postMessage;\n };\n\n\n // Chrome incognito mode used to throw an exception when using openDatabase\n // It doesn't anymore.\n tests['websqldatabase'] = function() {\n return !!window.openDatabase;\n };\n\n // Vendors had inconsistent prefixing with the experimental Indexed DB:\n // - Webkit's implementation is accessible through webkitIndexedDB\n // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB\n // For speed, we don't test the legacy (and beta-only) indexedDB\n tests['indexedDB'] = function() {\n return !!testPropsAll(\"indexedDB\", window);\n };\n\n // documentMode logic from YUI to filter out IE8 Compat Mode\n // which false positives.\n tests['hashchange'] = function() {\n return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);\n };\n\n // Per 1.6:\n // This used to be Modernizr.historymanagement but the longer\n // name has been deprecated in favor of a shorter and property-matching one.\n // The old API is still available in 1.6, but as of 2.0 will throw a warning,\n // and in the first release thereafter disappear entirely.\n tests['history'] = function() {\n return !!(window.history && history.pushState);\n };\n\n tests['draganddrop'] = function() {\n var div = document.createElement('div');\n return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);\n };\n\n // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10\n // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.\n // FF10 still uses prefixes, so check for it until then.\n // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/\n tests['websockets'] = function() {\n return 'WebSocket' in window || 'MozWebSocket' in window;\n };\n\n\n // css-tricks.com/rgba-browser-support/\n tests['rgba'] = function() {\n // Set an rgba() color and check the returned value\n\n setCss('background-color:rgba(150,255,150,.5)');\n\n return contains(mStyle.backgroundColor, 'rgba');\n };\n\n tests['hsla'] = function() {\n // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,\n // except IE9 who retains it as hsla\n\n setCss('background-color:hsla(120,40%,100%,.5)');\n\n return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');\n };\n\n tests['multiplebgs'] = function() {\n // Setting multiple images AND a color on the background shorthand property\n // and then querying the style.background property value for the number of\n // occurrences of \"url(\" is a reliable method for detecting ACTUAL support for this!\n\n setCss('background:url(https://),url(https://),red url(https://)');\n\n // If the UA supports multiple backgrounds, there should be three occurrences\n // of the string \"url(\" in the return value for elemStyle.background\n\n return (/(url\\s*\\(.*?){3}/).test(mStyle.background);\n };\n\n\n\n // this will false positive in Opera Mini\n // github.com/Modernizr/Modernizr/issues/396\n\n tests['backgroundsize'] = function() {\n return testPropsAll('backgroundSize');\n };\n\n tests['borderimage'] = function() {\n return testPropsAll('borderImage');\n };\n\n\n // Super comprehensive table about all the unique implementations of\n // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance\n\n tests['borderradius'] = function() {\n return testPropsAll('borderRadius');\n };\n\n // WebOS unfortunately false positives on this test.\n tests['boxshadow'] = function() {\n return testPropsAll('boxShadow');\n };\n\n // FF3.0 will false positive on this test\n tests['textshadow'] = function() {\n return document.createElement('div').style.textShadow === '';\n };\n\n\n tests['opacity'] = function() {\n // Browsers that actually have CSS Opacity implemented have done so\n // according to spec, which means their return values are within the\n // range of [0.0,1.0] - including the leading zero.\n\n setCssAll('opacity:.55');\n\n // The non-literal . in this regex is intentional:\n // German Chrome returns this value as 0,55\n // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632\n return (/^0.55$/).test(mStyle.opacity);\n };\n\n\n // Note, Android < 4 will pass this test, but can only animate\n // a single property at a time\n // goo.gl/v3V4Gp\n tests['cssanimations'] = function() {\n return testPropsAll('animationName');\n };\n\n\n tests['csscolumns'] = function() {\n return testPropsAll('columnCount');\n };\n\n\n tests['cssgradients'] = function() {\n /**\n * For CSS Gradients syntax, please see:\n * webkit.org/blog/175/introducing-css-gradients/\n * developer.mozilla.org/en/CSS/-moz-linear-gradient\n * developer.mozilla.org/en/CSS/-moz-radial-gradient\n * dev.w3.org/csswg/css3-images/#gradients-\n */\n\n var str1 = 'background-image:',\n str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',\n str3 = 'linear-gradient(left top,#9f9, white);';\n\n setCss(\n // legacy webkit syntax (FIXME: remove when syntax not in use anymore)\n (str1 + '-webkit- '.split(' ').join(str2 + str1) +\n // standard syntax // trailing 'background-image:'\n prefixes.join(str3 + str1)).slice(0, -str1.length)\n );\n\n return contains(mStyle.backgroundImage, 'gradient');\n };\n\n\n tests['cssreflections'] = function() {\n return testPropsAll('boxReflect');\n };\n\n\n tests['csstransforms'] = function() {\n return !!testPropsAll('transform');\n };\n\n\n tests['csstransforms3d'] = function() {\n\n var ret = !!testPropsAll('perspective');\n\n // Webkit's 3D transforms are passed off to the browser's own graphics renderer.\n // It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in\n // some conditions. As a result, Webkit typically recognizes the syntax but\n // will sometimes throw a false positive, thus we must do a more thorough check:\n if ( ret && 'webkitPerspective' in docElement.style ) {\n\n // Webkit allows this media query to succeed only if the feature is enabled.\n // `@media (transform-3d),(-webkit-transform-3d){ ... }`\n injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {\n ret = node.offsetLeft === 9 && node.offsetHeight === 3;\n });\n }\n return ret;\n };\n\n\n tests['csstransitions'] = function() {\n return testPropsAll('transition');\n };\n\n\n /*>>fontface*/\n // @font-face detection routine by Diego Perini\n // javascript.nwbox.com/CSSSupport/\n\n // false positives:\n // WebOS github.com/Modernizr/Modernizr/issues/342\n // WP7 github.com/Modernizr/Modernizr/issues/538\n tests['fontface'] = function() {\n var bool;\n\n injectElementWithStyles('@font-face {font-family:\"font\";src:url(\"https://\")}', function( node, rule ) {\n var style = document.getElementById('smodernizr'),\n sheet = style.sheet || style.styleSheet,\n cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';\n\n bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;\n });\n\n return bool;\n };\n /*>>fontface*/\n\n // CSS generated content detection\n tests['generatedcontent'] = function() {\n var bool;\n\n injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:\"',smile,'\";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {\n bool = node.offsetHeight >= 3;\n });\n\n return bool;\n };\n\n\n\n // These tests evaluate support of the video/audio elements, as well as\n // testing what types of content they support.\n //\n // We're using the Boolean constructor here, so that we can extend the value\n // e.g. Modernizr.video // true\n // Modernizr.video.ogg // 'probably'\n //\n // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845\n // thx to NielsLeenheer and zcorpan\n\n // Note: in some older browsers, \"no\" was a return value instead of empty string.\n // It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2\n // It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5\n\n tests['video'] = function() {\n var elem = document.createElement('video'),\n bool = false;\n\n // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224\n try {\n if ( bool = !!elem.canPlayType ) {\n bool = new Boolean(bool);\n bool.ogg = elem.canPlayType('video/ogg; codecs=\"theora\"') .replace(/^no$/,'');\n\n // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546\n bool.h264 = elem.canPlayType('video/mp4; codecs=\"avc1.42E01E\"') .replace(/^no$/,'');\n\n bool.webm = elem.canPlayType('video/webm; codecs=\"vp8, vorbis\"').replace(/^no$/,'');\n }\n\n } catch(e) { }\n\n return bool;\n };\n\n tests['audio'] = function() {\n var elem = document.createElement('audio'),\n bool = false;\n\n try {\n if ( bool = !!elem.canPlayType ) {\n bool = new Boolean(bool);\n bool.ogg = elem.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/^no$/,'');\n bool.mp3 = elem.canPlayType('audio/mpeg;') .replace(/^no$/,'');\n\n // Mimetypes accepted:\n // developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements\n // bit.ly/iphoneoscodecs\n bool.wav = elem.canPlayType('audio/wav; codecs=\"1\"') .replace(/^no$/,'');\n bool.m4a = ( elem.canPlayType('audio/x-m4a;') ||\n elem.canPlayType('audio/aac;')) .replace(/^no$/,'');\n }\n } catch(e) { }\n\n return bool;\n };\n\n\n // In FF4, if disabled, window.localStorage should === null.\n\n // Normally, we could not test that directly and need to do a\n // `('localStorage' in window) && ` test first because otherwise Firefox will\n // throw bugzil.la/365772 if cookies are disabled\n\n // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem\n // will throw the exception:\n // QUOTA_EXCEEDED_ERRROR DOM Exception 22.\n // Peculiarly, getItem and removeItem calls do not throw.\n\n // Because we are forced to try/catch this, we'll go aggressive.\n\n // Just FWIW: IE8 Compat mode supports these features completely:\n // www.quirksmode.org/dom/html5.html\n // But IE8 doesn't support either with local files\n\n tests['localstorage'] = function() {\n try {\n localStorage.setItem(mod, mod);\n localStorage.removeItem(mod);\n return true;\n } catch(e) {\n return false;\n }\n };\n\n tests['sessionstorage'] = function() {\n try {\n sessionStorage.setItem(mod, mod);\n sessionStorage.removeItem(mod);\n return true;\n } catch(e) {\n return false;\n }\n };\n\n\n tests['webworkers'] = function() {\n return !!window.Worker;\n };\n\n\n tests['applicationcache'] = function() {\n return !!window.applicationCache;\n };\n\n\n // Thanks to Erik Dahlstrom\n tests['svg'] = function() {\n return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;\n };\n\n // specifically for SVG inline in HTML, not within XHTML\n // test page: paulirish.com/demo/inline-svg\n tests['inlinesvg'] = function() {\n var div = document.createElement('div');\n div.innerHTML = '<svg/>';\n return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;\n };\n\n // SVG SMIL animation\n tests['smil'] = function() {\n return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));\n };\n\n // This test is only for clip paths in SVG proper, not clip paths on HTML content\n // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg\n\n // However read the comments to dig into applying SVG clippaths to HTML content here:\n // github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491\n tests['svgclippaths'] = function() {\n return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));\n };\n\n /*>>webforms*/\n // input features and input types go directly onto the ret object, bypassing the tests loop.\n // Hold this guy to execute in a moment.\n function webforms() {\n /*>>input*/\n // Run through HTML5's new input attributes to see if the UA understands any.\n // We're using f which is the <input> element created early on\n // Mike Taylr has created a comprehensive resource for testing these attributes\n // when applied to all input types:\n // miketaylr.com/code/input-type-attr.html\n // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n\n // Only input placeholder is tested while textarea's placeholder is not.\n // Currently Safari 4 and Opera 11 have support only for the input placeholder\n // Both tests are available in feature-detects/forms-placeholder.js\n Modernizr['input'] = (function( props ) {\n for ( var i = 0, len = props.length; i < len; i++ ) {\n attrs[ props[i] ] = !!(props[i] in inputElem);\n }\n if (attrs.list){\n // safari false positive's on datalist: webk.it/74252\n // see also github.com/Modernizr/Modernizr/issues/146\n attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);\n }\n return attrs;\n })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));\n /*>>input*/\n\n /*>>inputtypes*/\n // Run through HTML5's new input types to see if the UA understands any.\n // This is put behind the tests runloop because it doesn't return a\n // true/false like all the other tests; instead, it returns an object\n // containing each input type with its corresponding true/false value\n\n // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/\n Modernizr['inputtypes'] = (function(props) {\n\n for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {\n\n inputElem.setAttribute('type', inputElemType = props[i]);\n bool = inputElem.type !== 'text';\n\n // We first check to see if the type we give it sticks..\n // If the type does, we feed it a textual value, which shouldn't be valid.\n // If the value doesn't stick, we know there's input sanitization which infers a custom UI\n if ( bool ) {\n\n inputElem.value = smile;\n inputElem.style.cssText = 'position:absolute;visibility:hidden;';\n\n if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {\n\n docElement.appendChild(inputElem);\n defaultView = document.defaultView;\n\n // Safari 2-4 allows the smiley as a value, despite making a slider\n bool = defaultView.getComputedStyle &&\n defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&\n // Mobile android web browser has false positive, so must\n // check the height to see if the widget is actually there.\n (inputElem.offsetHeight !== 0);\n\n docElement.removeChild(inputElem);\n\n } else if ( /^(search|tel)$/.test(inputElemType) ){\n // Spec doesn't define any special parsing or detectable UI\n // behaviors so we pass these through as true\n\n // Interestingly, opera fails the earlier test, so it doesn't\n // even make it here.\n\n } else if ( /^(url|email)$/.test(inputElemType) ) {\n // Real url and email support comes with prebaked validation.\n bool = inputElem.checkValidity && inputElem.checkValidity() === false;\n\n } else {\n // If the upgraded input compontent rejects the :) text, we got a winner\n bool = inputElem.value != smile;\n }\n }\n\n inputs[ props[i] ] = !!bool;\n }\n return inputs;\n })('search tel url email datetime date month week time datetime-local number range color'.split(' '));\n /*>>inputtypes*/\n }\n /*>>webforms*/\n\n\n // End of test definitions\n // -----------------------\n\n\n\n // Run through all tests and detect their support in the current UA.\n // todo: hypothetically we could be doing an array of tests and use a basic loop here.\n for ( var feature in tests ) {\n if ( hasOwnProp(tests, feature) ) {\n // run the test, throw the return value into the Modernizr,\n // then based on that boolean, define an appropriate className\n // and push it into an array of classes we'll join later.\n featureName = feature.toLowerCase();\n Modernizr[featureName] = tests[feature]();\n\n classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);\n }\n }\n\n /*>>webforms*/\n // input tests need to run.\n Modernizr.input || webforms();\n /*>>webforms*/\n\n\n /**\n * addTest allows the user to define their own feature tests\n * the result will be added onto the Modernizr object,\n * as well as an appropriate className set on the html element\n *\n * @param feature - String naming the feature\n * @param test - Function returning true if feature is supported, false if not\n */\n Modernizr.addTest = function ( feature, test ) {\n if ( typeof feature == 'object' ) {\n for ( var key in feature ) {\n if ( hasOwnProp( feature, key ) ) {\n Modernizr.addTest( key, feature[ key ] );\n }\n }\n } else {\n\n feature = feature.toLowerCase();\n\n if ( Modernizr[feature] !== undefined ) {\n // we're going to quit if you're trying to overwrite an existing test\n // if we were to allow it, we'd do this:\n // var re = new RegExp(\"\\\\b(no-)?\" + feature + \"\\\\b\");\n // docElement.className = docElement.className.replace( re, '' );\n // but, no rly, stuff 'em.\n return Modernizr;\n }\n\n test = typeof test == 'function' ? test() : test;\n\n if (typeof enableClasses !== \"undefined\" && enableClasses) {\n docElement.className += ' ' + (test ? '' : 'no-') + feature;\n }\n Modernizr[feature] = test;\n\n }\n\n return Modernizr; // allow chaining.\n };\n\n\n // Reset modElem.cssText to nothing to reduce memory footprint.\n setCss('');\n modElem = inputElem = null;\n\n /*>>shiv*/\n /**\n * @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed\n */\n ;(function(window, document) {\n /*jshint evil:true */\n /** version */\n var version = '3.7.0';\n\n /** Preset options */\n var options = window.html5 || {};\n\n /** Used to skip problem elements */\n var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;\n\n /** Not all elements can be cloned in IE **/\n var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;\n\n /** Detect whether the browser supports default html5 styles */\n var supportsHtml5Styles;\n\n /** Name of the expando, to work with multiple documents or to re-shiv one document */\n var expando = '_html5shiv';\n\n /** The id for the the documents expando */\n var expanID = 0;\n\n /** Cached data for each document */\n var expandoData = {};\n\n /** Detect whether the browser supports unknown elements */\n var supportsUnknownElements;\n\n (function() {\n try {\n var a = document.createElement('a');\n a.innerHTML = '<xyz></xyz>';\n //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles\n supportsHtml5Styles = ('hidden' in a);\n\n supportsUnknownElements = a.childNodes.length == 1 || (function() {\n // assign a false positive if unable to shiv\n (document.createElement)('a');\n var frag = document.createDocumentFragment();\n return (\n typeof frag.cloneNode == 'undefined' ||\n typeof frag.createDocumentFragment == 'undefined' ||\n typeof frag.createElement == 'undefined'\n );\n }());\n } catch(e) {\n // assign a false positive if detection fails => unable to shiv\n supportsHtml5Styles = true;\n supportsUnknownElements = true;\n }\n\n }());\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Creates a style sheet with the given CSS text and adds it to the document.\n * @private\n * @param {Document} ownerDocument The document.\n * @param {String} cssText The CSS text.\n * @returns {StyleSheet} The style element.\n */\n function addStyleSheet(ownerDocument, cssText) {\n var p = ownerDocument.createElement('p'),\n parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;\n\n p.innerHTML = 'x<style>' + cssText + '</style>';\n return parent.insertBefore(p.lastChild, parent.firstChild);\n }\n\n /**\n * Returns the value of `html5.elements` as an array.\n * @private\n * @returns {Array} An array of shived element node names.\n */\n function getElements() {\n var elements = html5.elements;\n return typeof elements == 'string' ? elements.split(' ') : elements;\n }\n\n /**\n * Returns the data associated to the given document\n * @private\n * @param {Document} ownerDocument The document.\n * @returns {Object} An object of data.\n */\n function getExpandoData(ownerDocument) {\n var data = expandoData[ownerDocument[expando]];\n if (!data) {\n data = {};\n expanID++;\n ownerDocument[expando] = expanID;\n expandoData[expanID] = data;\n }\n return data;\n }\n\n /**\n * returns a shived element for the given nodeName and document\n * @memberOf html5\n * @param {String} nodeName name of the element\n * @param {Document} ownerDocument The context document.\n * @returns {Object} The shived element.\n */\n function createElement(nodeName, ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createElement(nodeName);\n }\n if (!data) {\n data = getExpandoData(ownerDocument);\n }\n var node;\n\n if (data.cache[nodeName]) {\n node = data.cache[nodeName].cloneNode();\n } else if (saveClones.test(nodeName)) {\n node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();\n } else {\n node = data.createElem(nodeName);\n }\n\n // Avoid adding some elements to fragments in IE < 9 because\n // * Attributes like `name` or `type` cannot be set/changed once an element\n // is inserted into a document/fragment\n // * Link elements with `src` attributes that are inaccessible, as with\n // a 403 response, will cause the tab/window to crash\n // * Script elements appended to fragments will execute when their `src`\n // or `text` property is set\n return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;\n }\n\n /**\n * returns a shived DocumentFragment for the given document\n * @memberOf html5\n * @param {Document} ownerDocument The context document.\n * @returns {Object} The shived DocumentFragment.\n */\n function createDocumentFragment(ownerDocument, data){\n if (!ownerDocument) {\n ownerDocument = document;\n }\n if(supportsUnknownElements){\n return ownerDocument.createDocumentFragment();\n }\n data = data || getExpandoData(ownerDocument);\n var clone = data.frag.cloneNode(),\n i = 0,\n elems = getElements(),\n l = elems.length;\n for(;i<l;i++){\n clone.createElement(elems[i]);\n }\n return clone;\n }\n\n /**\n * Shivs the `createElement` and `createDocumentFragment` methods of the document.\n * @private\n * @param {Document|DocumentFragment} ownerDocument The document.\n * @param {Object} data of the document.\n */\n function shivMethods(ownerDocument, data) {\n if (!data.cache) {\n data.cache = {};\n data.createElem = ownerDocument.createElement;\n data.createFrag = ownerDocument.createDocumentFragment;\n data.frag = data.createFrag();\n }\n\n\n ownerDocument.createElement = function(nodeName) {\n //abort shiv\n if (!html5.shivMethods) {\n return data.createElem(nodeName);\n }\n return createElement(nodeName, ownerDocument, data);\n };\n\n ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +\n 'var n=f.cloneNode(),c=n.createElement;' +\n 'h.shivMethods&&(' +\n // unroll the `createElement` calls\n getElements().join().replace(/[\\w\\-]+/g, function(nodeName) {\n data.createElem(nodeName);\n data.frag.createElement(nodeName);\n return 'c(\"' + nodeName + '\")';\n }) +\n ');return n}'\n )(html5, data.frag);\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Shivs the given document.\n * @memberOf html5\n * @param {Document} ownerDocument The document to shiv.\n * @returns {Document} The shived document.\n */\n function shivDocument(ownerDocument) {\n if (!ownerDocument) {\n ownerDocument = document;\n }\n var data = getExpandoData(ownerDocument);\n\n if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {\n data.hasCSS = !!addStyleSheet(ownerDocument,\n // corrects block display not defined in IE6/7/8/9\n 'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +\n // adds styling not present in IE6/7/8/9\n 'mark{background:#FF0;color:#000}' +\n // hides non-rendered elements\n 'template{display:none}'\n );\n }\n if (!supportsUnknownElements) {\n shivMethods(ownerDocument, data);\n }\n return ownerDocument;\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * The `html5` object is exposed so that more elements can be shived and\n * existing shiving can be detected on iframes.\n * @type Object\n * @example\n *\n * // options can be changed before the script is included\n * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };\n */\n var html5 = {\n\n /**\n * An array or space separated string of node names of the elements to shiv.\n * @memberOf html5\n * @type Array|String\n */\n 'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',\n\n /**\n * current version of html5shiv\n */\n 'version': version,\n\n /**\n * A flag to indicate that the HTML5 style sheet should be inserted.\n * @memberOf html5\n * @type Boolean\n */\n 'shivCSS': (options.shivCSS !== false),\n\n /**\n * Is equal to true if a browser supports creating unknown/HTML5 elements\n * @memberOf html5\n * @type boolean\n */\n 'supportsUnknownElements': supportsUnknownElements,\n\n /**\n * A flag to indicate that the document's `createElement` and `createDocumentFragment`\n * methods should be overwritten.\n * @memberOf html5\n * @type Boolean\n */\n 'shivMethods': (options.shivMethods !== false),\n\n /**\n * A string to describe the type of `html5` object (\"default\" or \"default print\").\n * @memberOf html5\n * @type String\n */\n 'type': 'default',\n\n // shivs the document according to the specified `html5` object options\n 'shivDocument': shivDocument,\n\n //creates a shived element\n createElement: createElement,\n\n //creates a shived documentFragment\n createDocumentFragment: createDocumentFragment\n };\n\n /*--------------------------------------------------------------------------*/\n\n // expose html5\n window.html5 = html5;\n\n // shiv the document\n shivDocument(document);\n\n }(window, document));\n /*>>shiv*/\n\n // Assign private properties to the return object with prefix\n Modernizr._version = version;\n\n // expose these for the plugin API. Look in the source for how to join() them against your input\n /*>>prefixes*/\n Modernizr._prefixes = prefixes;\n /*>>prefixes*/\n /*>>domprefixes*/\n Modernizr._domPrefixes = domPrefixes;\n Modernizr._cssomPrefixes = cssomPrefixes;\n /*>>domprefixes*/\n\n /*>>mq*/\n // Modernizr.mq tests a given media query, live against the current state of the window\n // A few important notes:\n // * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false\n // * A max-width or orientation query will be evaluated against the current state, which may change later.\n // * You must specify values. Eg. If you are testing support for the min-width media query use:\n // Modernizr.mq('(min-width:0)')\n // usage:\n // Modernizr.mq('only screen and (max-width:768)')\n Modernizr.mq = testMediaQuery;\n /*>>mq*/\n\n /*>>hasevent*/\n // Modernizr.hasEvent() detects support for a given event, with an optional element to test on\n // Modernizr.hasEvent('gesturestart', elem)\n Modernizr.hasEvent = isEventSupported;\n /*>>hasevent*/\n\n /*>>testprop*/\n // Modernizr.testProp() investigates whether a given style property is recognized\n // Note that the property names must be provided in the camelCase variant.\n // Modernizr.testProp('pointerEvents')\n Modernizr.testProp = function(prop){\n return testProps([prop]);\n };\n /*>>testprop*/\n\n /*>>testallprops*/\n // Modernizr.testAllProps() investigates whether a given style property,\n // or any of its vendor-prefixed variants, is recognized\n // Note that the property names must be provided in the camelCase variant.\n // Modernizr.testAllProps('boxSizing')\n Modernizr.testAllProps = testPropsAll;\n /*>>testallprops*/\n\n\n /*>>teststyles*/\n // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards\n // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })\n Modernizr.testStyles = injectElementWithStyles;\n /*>>teststyles*/\n\n\n /*>>prefixed*/\n // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input\n // Modernizr.prefixed('boxSizing') // 'MozBoxSizing'\n\n // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.\n // Return values will also be the camelCase variant, if you need to translate that to hypenated style use:\n //\n // str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');\n\n // If you're trying to ascertain which transition end event to bind to, you might do something like...\n //\n // var transEndEventNames = {\n // 'WebkitTransition' : 'webkitTransitionEnd',\n // 'MozTransition' : 'transitionend',\n // 'OTransition' : 'oTransitionEnd',\n // 'msTransition' : 'MSTransitionEnd',\n // 'transition' : 'transitionend'\n // },\n // transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];\n\n Modernizr.prefixed = function(prop, obj, elem){\n if(!obj) {\n return testPropsAll(prop, 'pfx');\n } else {\n // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'\n return testPropsAll(prop, obj, elem);\n }\n };\n /*>>prefixed*/\n\n Modernizr.addTest('ipad', function () {\n return !!navigator.userAgent.match(/iPad/i);\n });\n \n Modernizr.addTest('iphone', function () {\n return !!navigator.userAgent.match(/iPhone/i);\n });\n \n Modernizr.addTest('ipod', function () {\n return !!navigator.userAgent.match(/iPod/i);\n });\n \n Modernizr.addTest('appleios', function () {\n return (Modernizr.ipad || Modernizr.ipod || Modernizr.iphone);\n });\n\n Modernizr.addTest('chrome', function () {\n return !!navigator.userAgent.match(/chrome/i);\n });\n // Add test for firefox\n Modernizr.addTest('firefox', function () {\n return !!navigator.userAgent.match(/firefox/i);\n });\n Modernizr.addTest('webaudioapi', function () {\n return !!(\n window.webkitAudioContext ||\n window.mozAudioContext ||\n window.oAudioContext ||\n window.msAudioContext ||\n window.AudioContext\n );\n });\n\n\n /*>>cssclasses*/\n // Remove \"no-js\" class from <html> element, if it exists:\n docElement.className = docElement.className.replace(/(^|\\s)no-js(\\s|$)/, '$1$2') +\n\n // Add the new classes to the <html> element.\n (enableClasses ? ' js ' + classes.join(' ') : '');\n /*>>cssclasses*/\n\n //window.Modernizr = Modernizr;\n\n return Modernizr;\n\n});\n","/***************************\n\tPOLYFILLS\n***************************/\n// TODO: this is non standard and needs to be abandoned\nif (!('format' in String.prototype)) {\n\tString.prototype.format = function() {\n\t\tvar formatted = this;\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar regexp = new RegExp('\\\\{' + i + '\\\\}', 'gi');\n\t\t\tformatted = formatted.replace(regexp, arguments[i]);\n\t\t}\n\t\treturn formatted;\n\t};\n}\n\n/**\n * Prototype extendion for Element and NodeList\n * http://stackoverflow.com/questions/3387427/remove-element-by-id/18120786#18120786\n */\nif (!('remove' in Element.prototype)) {\n\tElement.prototype.remove = function() {\n\t\tthis.parentElement.removeChild(this);\n\t};\n}\nif (!('remove' in NodeList.prototype)) {\n\tNodeList.prototype.remove = HTMLCollection.prototype.remove = function() {\n\t\tfor (var i = this.length - 1; i >= 0; i--) {\n\t\t\tif (this[i] && this[i].parentElement) {\n\t\t\t\tthis[i].parentElement.removeChild(this[i]);\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Edge does not support this yet\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat\nif (!Array.prototype.flat) {\n\tArray.prototype.flat = function() {\n\t\tvar depth = arguments[0];\n\t\tdepth = depth === undefined ? 1 : Math.floor(depth);\n\t\tif (depth < 1) return Array.prototype.slice.call(this);\n\t\treturn (function flat(arr, depth) {\n\t\t\tvar len = arr.length >>> 0;\n\t\t\tvar flattened = [];\n\t\t\tvar i = 0;\n\t\t\twhile (i < len) {\n\t\t\t\tif (i in arr) {\n\t\t\t\t\tvar el = arr[i];\n\t\t\t\t\tif (Array.isArray(el) && depth > 0)\n\t\t\t\t\t\tflattened = flattened.concat(flat(el, depth - 1));\n\t\t\t\t\telse flattened.push(el);\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\t\t\treturn flattened;\n\t\t})(this, depth);\n\t};\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('underscore', factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (function () {\n var current = global._;\n var exports = global._ = factory();\n exports.noConflict = function () { global._ = current; return exports; };\n }()));\n}(this, (function () {\n // Underscore.js 1.13.0-2\n // https://underscorejs.org\n // (c) 2009-2020 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n // Underscore may be freely distributed under the MIT license.\n\n // Current version.\n var VERSION = '1.13.0-2';\n\n // Establish the root object, `window` (`self`) in the browser, `global`\n // on the server, or `this` in some virtual machines. We use `self`\n // instead of `window` for `WebWorker` support.\n var root = typeof self == 'object' && self.self === self && self ||\n typeof global == 'object' && global.global === global && global ||\n Function('return this')() ||\n {};\n\n // Save bytes in the minified (but not gzipped) version:\n var ArrayProto = Array.prototype, ObjProto = Object.prototype;\n var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n // Create quick reference variables for speed access to core prototypes.\n var push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n // Modern feature detection.\n var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n // All **ECMAScript 5+** native function implementations that we hope to use\n // are declared here.\n var nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n // Create references to these builtin functions because we override them.\n var _isNaN = isNaN,\n _isFinite = isFinite;\n\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n // The largest integer that can be represented exactly.\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n // Some functions take a variable number of arguments, or a few expected\n // arguments at the beginning and then a variable number of values to operate\n // on. This helper accumulates all remaining arguments past the function’s\n // argument length (or an explicit `startIndex`), into an array that becomes\n // the last argument. Similar to ES6’s \"rest parameter\".\n function restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n }\n\n // Is a given variable an object?\n function isObject(obj) {\n var type = typeof obj;\n return type === 'function' || type === 'object' && !!obj;\n }\n\n // Is a given value equal to null?\n function isNull(obj) {\n return obj === null;\n }\n\n // Is a given variable undefined?\n function isUndefined(obj) {\n return obj === void 0;\n }\n\n // Is a given value a boolean?\n function isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n }\n\n // Is a given value a DOM element?\n function isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n }\n\n // Internal function for creating a `toString`-based type tester.\n function tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n }\n\n var isString = tagTester('String');\n\n var isNumber = tagTester('Number');\n\n var isDate = tagTester('Date');\n\n var isRegExp = tagTester('RegExp');\n\n var isError = tagTester('Error');\n\n var isSymbol = tagTester('Symbol');\n\n var isArrayBuffer = tagTester('ArrayBuffer');\n\n var isFunction = tagTester('Function');\n\n // Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n // v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\n var nodelist = root.document && root.document.childNodes;\n if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n }\n\n var isFunction$1 = isFunction;\n\n var hasObjectTag = tagTester('Object');\n\n // In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n // In IE 11, the most common among them, this problem also applies to\n // `Map`, `WeakMap` and `Set`.\n var hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\n var isDataView = tagTester('DataView');\n\n // In IE 10 - Edge 13, we need a different heuristic\n // to determine whether an object is a `DataView`.\n function ie10IsDataView(obj) {\n return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);\n }\n\n var isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);\n\n // Is a given value an array?\n // Delegates to ECMA5's native `Array.isArray`.\n var isArray = nativeIsArray || tagTester('Array');\n\n // Internal function to check whether `key` is an own property name of `obj`.\n function has$1(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n }\n\n var isArguments = tagTester('Arguments');\n\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\n // there isn't any inspectable \"Arguments\" type.\n (function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has$1(obj, 'callee');\n };\n }\n }());\n\n var isArguments$1 = isArguments;\n\n // Is a given object a finite number?\n function isFinite$1(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n }\n\n // Is the given value `NaN`?\n function isNaN$1(obj) {\n return isNumber(obj) && _isNaN(obj);\n }\n\n // Predicate-generating function. Often useful outside of Underscore.\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n // Common internal logic for `isArrayLike` and `isBufferLike`.\n function createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n }\n\n // Internal helper to generate a function to obtain property `key` from `obj`.\n function shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n }\n\n // Internal helper to obtain the `byteLength` property of an object.\n var getByteLength = shallowProperty('byteLength');\n\n // Internal helper to determine whether we should spend extensive checks against\n // `ArrayBuffer` et al.\n var isBufferLike = createSizePropertyCheck(getByteLength);\n\n // Is a given value a typed array?\n var typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\n function isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n }\n\n var isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);\n\n // Internal helper to obtain the `length` property of an object.\n var getLength = shallowProperty('length');\n\n // Internal helper to create a simple lookup structure.\n // `collectNonEnumProps` used to depend on `_.contains`, but this led to\n // circular imports. `emulatedSet` is a one-off solution that only works for\n // arrays of strings.\n function emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key]; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n }\n\n // Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n // be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n // needed.\n function collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = isFunction$1(constructor) && constructor.prototype || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n }\n\n // Retrieve the names of an object's own properties.\n // Delegates to **ECMAScript 5**'s native `Object.keys`.\n function keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has$1(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n }\n\n // Is a given array, string, or object empty?\n // An \"empty\" object has no enumerable own-properties.\n function isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments$1(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n }\n\n // Returns whether an object has a given set of `key:value` pairs.\n function isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n }\n\n // If Underscore is called as a function, it returns a wrapped object that can\n // be used OO-style. This wrapper holds altered versions of all functions added\n // through `_.mixin`. Wrapped objects may be chained.\n function _$1(obj) {\n if (obj instanceof _$1) return obj;\n if (!(this instanceof _$1)) return new _$1(obj);\n this._wrapped = obj;\n }\n\n _$1.VERSION = VERSION;\n\n // Extracts the result from a wrapped and chained object.\n _$1.prototype.value = function() {\n return this._wrapped;\n };\n\n // Provide unwrapping proxies for some methods used in engine operations\n // such as arithmetic and JSON stringification.\n _$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;\n\n _$1.prototype.toString = function() {\n return String(this._wrapped);\n };\n\n // Internal function to wrap or shallow-copy an ArrayBuffer,\n // typed array or DataView to a new view, reusing the buffer.\n function toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n }\n\n // We use this string twice, so give it a name for minification.\n var tagDataView = '[object DataView]';\n\n // Internal recursive comparison function for `_.isEqual`.\n function eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n }\n\n // Internal recursive comparison function for `_.isEqual`.\n function deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _$1) a = a._wrapped;\n if (b instanceof _$1) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {\n if (!isDataView$1(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray$1(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&\n isFunction$1(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n }\n\n // Perform a deep comparison to check if two objects are equal.\n function isEqual(a, b) {\n return eq(a, b);\n }\n\n // Retrieve all the enumerable property names of an object.\n function allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n }\n\n // Since the regular `Object.prototype.toString` type tests don't work for\n // some types in IE 11, we use a fingerprinting heuristic instead, based\n // on the methods. It's not great, but it's the best we got.\n // The fingerprint method lists are defined below.\n function ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction$1(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);\n };\n }\n\n // In the interest of compact minification, we write\n // each string in the fingerprints only once.\n var forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n // `Map`, `WeakMap` and `Set` each have slightly different\n // combinations of the above sublists.\n var mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\n var isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\n var isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\n var isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\n var isWeakSet = tagTester('WeakSet');\n\n // Retrieve the values of an object's properties.\n function values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n }\n\n // Convert an object into a list of `[key, value]` pairs.\n // The opposite of `_.object` with one argument.\n function pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n }\n\n // Invert the keys and values of an object. The values must be serializable.\n function invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n }\n\n // Return a sorted list of the function names available on the object.\n function functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction$1(obj[key])) names.push(key);\n }\n return names.sort();\n }\n\n // An internal function for creating assigner functions.\n function createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n }\n\n // Extend a given object with all the properties in passed-in object(s).\n var extend = createAssigner(allKeys);\n\n // Assigns a given object with all the own properties in the passed-in\n // object(s).\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\n var extendOwn = createAssigner(keys);\n\n // Fill in a given object with default properties.\n var defaults = createAssigner(allKeys, true);\n\n // Create a naked function reference for surrogate-prototype-swapping.\n function ctor() {\n return function(){};\n }\n\n // An internal function for creating a new object that inherits from another.\n function baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n }\n\n // Creates an object that inherits from the given prototype object.\n // If additional properties are provided then they will be added to the\n // created object.\n function create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n }\n\n // Create a (shallow-cloned) duplicate of an object.\n function clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n }\n\n // Invokes `interceptor` with the `obj` and then returns `obj`.\n // The primary purpose of this method is to \"tap into\" a method chain, in\n // order to perform operations on intermediate results within the chain.\n function tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n }\n\n // Normalize a (deep) property `path` to array.\n // Like `_.iteratee`, this function can be customized.\n function toPath$1(path) {\n return isArray(path) ? path : [path];\n }\n _$1.toPath = toPath$1;\n\n // Internal wrapper for `_.toPath` to enable minification.\n // Similar to `cb` for `_.iteratee`.\n function toPath(path) {\n return _$1.toPath(path);\n }\n\n // Internal function to obtain a nested property in `obj` along `path`.\n function deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n }\n\n // Get the value of the (deep) property on `path` from `object`.\n // If any property in `path` does not exist or if the value is\n // `undefined`, return `defaultValue` instead.\n // The `path` is normalized through `_.toPath`.\n function get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n }\n\n // Shortcut function for checking if an object has a given property directly on\n // itself (in other words, not on a prototype). Unlike the internal `has`\n // function, this public version can also traverse nested properties.\n function has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!has$1(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n }\n\n // Keep the identity function around for default iteratees.\n function identity(value) {\n return value;\n }\n\n // Returns a predicate for checking whether an object has a given set of\n // `key:value` pairs.\n function matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n }\n\n // Creates a function that, when passed an object, will traverse that object’s\n // properties down the given `path`, specified as an array of keys or indices.\n function property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n }\n\n // Internal function that returns an efficient (for current engines) version\n // of the passed-in callback, to be repeatedly applied in other Underscore\n // functions.\n function optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n }\n\n // An internal function to generate callbacks that can be applied to each\n // element in a collection, returning the desired result — either `_.identity`,\n // an arbitrary callback, a property matcher, or a property accessor.\n function baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction$1(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n }\n\n // External wrapper for our callback generator. Users may customize\n // `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n // This abstraction hides the internal-only `argCount` argument.\n function iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n }\n _$1.iteratee = iteratee;\n\n // The function we call internally to generate a callback. It invokes\n // `_.iteratee` if overridden, otherwise `baseIteratee`.\n function cb(value, context, argCount) {\n if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n }\n\n // Returns the results of applying the `iteratee` to each element of `obj`.\n // In contrast to `_.map` it returns an object.\n function mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n }\n\n // Predicate-generating function. Often useful outside of Underscore.\n function noop(){}\n\n // Generates a function for a given object that returns a given property.\n function propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n }\n\n // Run a function **n** times.\n function times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n }\n\n // Return a random integer between `min` and `max` (inclusive).\n function random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n }\n\n // A (possibly faster) way to get the current timestamp as an integer.\n var now = Date.now || function() {\n return new Date().getTime();\n };\n\n // Internal helper to generate functions for escaping and unescaping strings\n // to/from HTML interpolation.\n function createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n }\n\n // Internal list of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n\n // Function for escaping strings to HTML interpolation.\n var _escape = createEscaper(escapeMap);\n\n // Internal list of HTML entities for unescaping.\n var unescapeMap = invert(escapeMap);\n\n // Function for unescaping strings from HTML interpolation.\n var _unescape = createEscaper(unescapeMap);\n\n // By default, Underscore uses ERB-style template delimiters. Change the\n // following template settings to use alternative delimiters.\n var templateSettings = _$1.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n };\n\n // When customizing `_.templateSettings`, if you don't want to define an\n // interpolation, evaluation or escaping regex, we need one that is\n // guaranteed not to match.\n var noMatch = /(.)^/;\n\n // Certain characters need to be escaped so that they can be put into a\n // string literal.\n var escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n var escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\n function escapeChar(match) {\n return '\\\\' + escapes[match];\n }\n\n var bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n // JavaScript micro-templating, similar to John Resig's implementation.\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\n // and correctly escapes quotes within interpolated code.\n // NB: `oldSettings` only exists for backwards compatibility.\n function template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _$1.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n if (!bareIdentifier.test(argument)) throw new Error(argument);\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _$1);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n }\n\n // Traverses the children of `obj` along `path`. If a child is a function, it\n // is invoked with its parent as context. Returns the value of the final\n // child, or `fallback` if any child is undefined.\n function result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction$1(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction$1(prop) ? prop.call(obj) : prop;\n }\n return obj;\n }\n\n // Generate a unique integer id (unique within the entire client session).\n // Useful for temporary DOM ids.\n var idCounter = 0;\n function uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n }\n\n // Start chaining a wrapped Underscore object.\n function chain(obj) {\n var instance = _$1(obj);\n instance._chain = true;\n return instance;\n }\n\n // Internal function to execute `sourceFunc` bound to `context` with optional\n // `args`. Determines whether to execute a function as a constructor or as a\n // normal function.\n function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n }\n\n // Partially apply a function by creating a version that has had some of its\n // arguments pre-filled, without changing its dynamic `this` context. `_` acts\n // as a placeholder by default, allowing any combination of arguments to be\n // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\n var partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n });\n\n partial.placeholder = _$1;\n\n // Create a function bound to a given object (assigning `this`, and arguments,\n // optionally).\n var bind = restArguments(function(func, context, args) {\n if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n });\n\n // Internal helper for collection methods to determine whether a collection\n // should be iterated as an array or as an object.\n // Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\n var isArrayLike = createSizePropertyCheck(getLength);\n\n // Internal implementation of a recursive `flatten` function.\n function flatten$1(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten$1(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n }\n\n // Bind a number of an object's methods to that object. Remaining arguments\n // are the method names to be bound. Useful for ensuring that all callbacks\n // defined on an object belong to it.\n var bindAll = restArguments(function(obj, keys) {\n keys = flatten$1(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n });\n\n // Memoize an expensive function by storing its results.\n function memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n }\n\n // Delays a function for the given number of milliseconds, and then calls\n // it with the arguments supplied.\n var delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n });\n\n // Defers a function, scheduling it to run after the current call stack has\n // cleared.\n var defer = partial(delay, _$1, 1);\n\n // Returns a function, that, when invoked, will only be triggered at most once\n // during a given window of time. Normally, the throttled function will run\n // as much as it can, without ever going more than once per `wait` duration;\n // but if you'd like to disable the execution on the leading edge, pass\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\n function throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n }\n\n // When a sequence of calls of the returned function ends, the argument\n // function is triggered. The end of a sequence is defined by the `wait`\n // parameter. If `immediate` is passed, the argument function will be\n // triggered at the beginning of the sequence instead of at the end.\n function debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n }\n\n // Returns the first function passed as an argument to the second,\n // allowing you to adjust arguments, run code before and after, and\n // conditionally execute the original function.\n function wrap(func, wrapper) {\n return partial(wrapper, func);\n }\n\n // Returns a negated version of the passed-in predicate.\n function negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n }\n\n // Returns a function that is the composition of a list of functions, each\n // consuming the return value of the function that follows.\n function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n }\n\n // Returns a function that will only be executed on and after the Nth call.\n function after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n // Returns a function that will only be executed up to (but not including) the\n // Nth call.\n function before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n }\n\n // Returns a function that will be executed at most one time, no matter how\n // often you call it. Useful for lazy initialization.\n var once = partial(before, 2);\n\n // Returns the first key on an object that passes a truth test.\n function findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n }\n\n // Internal function to generate `_.findIndex` and `_.findLastIndex`.\n function createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n }\n\n // Returns the first index on an array-like that passes a truth test.\n var findIndex = createPredicateIndexFinder(1);\n\n // Returns the last index on an array-like that passes a truth test.\n var findLastIndex = createPredicateIndexFinder(-1);\n\n // Use a comparator function to figure out the smallest index at which\n // an object should be inserted so as to maintain order. Uses binary search.\n function sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n }\n\n // Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\n function createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN$1);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n }\n\n // Return the position of the first occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n // If the array is large and already in sort order, pass `true`\n // for **isSorted** to use binary search.\n var indexOf = createIndexFinder(1, findIndex, sortedIndex);\n\n // Return the position of the last occurrence of an item in an array,\n // or -1 if the item is not included in the array.\n var lastIndexOf = createIndexFinder(-1, findLastIndex);\n\n // Return the first value which passes a truth test.\n function find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n }\n\n // Convenience version of a common use case of `_.find`: getting the first\n // object containing specific `key:value` pairs.\n function findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n }\n\n // The cornerstone for collection functions, an `each`\n // implementation, aka `forEach`.\n // Handles raw objects in addition to array-likes. Treats all\n // sparse array-likes as if they were dense.\n function each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n }\n\n // Return the results of applying the iteratee to each element.\n function map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n }\n\n // Internal helper to create a reducing function, iterating left or right.\n function createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n }\n\n // **Reduce** builds up a single result from a list of values, aka `inject`,\n // or `foldl`.\n var reduce = createReduce(1);\n\n // The right-associative version of reduce, also known as `foldr`.\n var reduceRight = createReduce(-1);\n\n // Return all the elements that pass a truth test.\n function filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n }\n\n // Return all the elements for which a truth test fails.\n function reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n }\n\n // Determine whether all of the elements pass a truth test.\n function every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n }\n\n // Determine if at least one element in the object passes a truth test.\n function some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n }\n\n // Determine if the array or object contains a given item (using `===`).\n function contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n }\n\n // Invoke a method (with arguments) on every item in a collection.\n var invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction$1(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n });\n\n // Convenience version of a common use case of `_.map`: fetching a property.\n function pluck(obj, key) {\n return map(obj, property(key));\n }\n\n // Convenience version of a common use case of `_.filter`: selecting only\n // objects containing specific `key:value` pairs.\n function where(obj, attrs) {\n return filter(obj, matcher(attrs));\n }\n\n // Return the maximum element (or element-based computation).\n function max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n }\n\n // Return the minimum element (or element-based computation).\n function min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n }\n\n // Sample **n** random values from a collection using the modern version of the\n // [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n // If **n** is not specified, returns a single random element.\n // The internal `guard` argument allows it to work with `_.map`.\n function sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n }\n\n // Shuffle a collection.\n function shuffle(obj) {\n return sample(obj, Infinity);\n }\n\n // Sort the object's values by a criterion produced by an iteratee.\n function sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n }\n\n // An internal function used for aggregate \"group by\" operations.\n function group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n }\n\n // Groups the object's values by a criterion. Pass either a string attribute\n // to group by, or a function that returns the criterion.\n var groupBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key].push(value); else result[key] = [value];\n });\n\n // Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n // when you know that your index values will be unique.\n var indexBy = group(function(result, value, key) {\n result[key] = value;\n });\n\n // Counts instances of an object that group by a certain criterion. Pass\n // either a string attribute to count by, or a function that returns the\n // criterion.\n var countBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key]++; else result[key] = 1;\n });\n\n // Split a collection into two arrays: one whose elements all pass the given\n // truth test, and one whose elements all do not pass the truth test.\n var partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n }, true);\n\n // Safely create a real, live array from anything iterable.\n var reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\n function toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n }\n\n // Return the number of elements in a collection.\n function size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n }\n\n // Internal `_.pick` helper function to determine whether `key` is an enumerable\n // property name of `obj`.\n function keyInObj(value, key, obj) {\n return key in obj;\n }\n\n // Return a copy of the object only containing the allowed properties.\n var pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction$1(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten$1(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n });\n\n // Return a copy of the object without the disallowed properties.\n var omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction$1(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten$1(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n });\n\n // Returns everything but the last entry of the array. Especially useful on\n // the arguments object. Passing **n** will return all the values in\n // the array, excluding the last N.\n function initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n }\n\n // Get the first element of an array. Passing **n** will return the first N\n // values in the array. The **guard** check allows it to work with `_.map`.\n function first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n }\n\n // Returns everything but the first entry of the `array`. Especially useful on\n // the `arguments` object. Passing an **n** will return the rest N values in the\n // `array`.\n function rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n }\n\n // Get the last element of an array. Passing **n** will return the last N\n // values in the array.\n function last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n }\n\n // Trim out all falsy values from an array.\n function compact(array) {\n return filter(array, Boolean);\n }\n\n // Flatten out an array, either recursively (by default), or up to `depth`.\n // Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\n function flatten(array, depth) {\n return flatten$1(array, depth, false);\n }\n\n // Take the difference between one array and a number of other arrays.\n // Only the elements present in just the first array will remain.\n var difference = restArguments(function(array, rest) {\n rest = flatten$1(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n });\n\n // Return a version of the array that does not contain the specified value(s).\n var without = restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n });\n\n // Produce a duplicate-free version of the array. If the array has already\n // been sorted, you have the option of using a faster algorithm.\n // The faster algorithm will not work with an iteratee if the iteratee\n // is not a one-to-one function, so providing an iteratee will disable\n // the faster algorithm.\n function uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n }\n\n // Produce an array that contains the union: each distinct element from all of\n // the passed-in arrays.\n var union = restArguments(function(arrays) {\n return uniq(flatten$1(arrays, true, true));\n });\n\n // Produce an array that contains every item shared between all the\n // passed-in arrays.\n function intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n }\n\n // Complement of zip. Unzip accepts an array of arrays and groups\n // each array's elements on shared indices.\n function unzip(array) {\n var length = array && max(array, getLength).length || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n }\n\n // Zip together multiple lists into a single array -- elements that share\n // an index go together.\n var zip = restArguments(unzip);\n\n // Converts lists into objects. Pass either a single array of `[key, value]`\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\n // the corresponding values. Passing by pairs is the reverse of `_.pairs`.\n function object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n }\n\n // Generate an integer Array containing an arithmetic progression. A port of\n // the native Python `range()` function. See\n // [the Python documentation](https://docs.python.org/library/functions.html#range).\n function range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n }\n\n // Chunk a single array into multiple arrays, each containing `count` or fewer\n // items.\n function chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n }\n\n // Helper function to continue chaining intermediate results.\n function chainResult(instance, obj) {\n return instance._chain ? _$1(obj).chain() : obj;\n }\n\n // Add your own custom functions to the Underscore object.\n function mixin(obj) {\n each(functions(obj), function(name) {\n var func = _$1[name] = obj[name];\n _$1.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_$1, args));\n };\n });\n return _$1;\n }\n\n // Add all mutator `Array` functions to the wrapper.\n each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n });\n\n // Add all accessor `Array` functions to the wrapper.\n each(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n });\n\n // Named Exports\n\n var allExports = {\n __proto__: null,\n VERSION: VERSION,\n restArguments: restArguments,\n isObject: isObject,\n isNull: isNull,\n isUndefined: isUndefined,\n isBoolean: isBoolean,\n isElement: isElement,\n isString: isString,\n isNumber: isNumber,\n isDate: isDate,\n isRegExp: isRegExp,\n isError: isError,\n isSymbol: isSymbol,\n isArrayBuffer: isArrayBuffer,\n isDataView: isDataView$1,\n isArray: isArray,\n isFunction: isFunction$1,\n isArguments: isArguments$1,\n isFinite: isFinite$1,\n isNaN: isNaN$1,\n isTypedArray: isTypedArray$1,\n isEmpty: isEmpty,\n isMatch: isMatch,\n isEqual: isEqual,\n isMap: isMap,\n isWeakMap: isWeakMap,\n isSet: isSet,\n isWeakSet: isWeakSet,\n keys: keys,\n allKeys: allKeys,\n values: values,\n pairs: pairs,\n invert: invert,\n functions: functions,\n methods: functions,\n extend: extend,\n extendOwn: extendOwn,\n assign: extendOwn,\n defaults: defaults,\n create: create,\n clone: clone,\n tap: tap,\n get: get,\n has: has,\n mapObject: mapObject,\n identity: identity,\n constant: constant,\n noop: noop,\n toPath: toPath$1,\n property: property,\n propertyOf: propertyOf,\n matcher: matcher,\n matches: matcher,\n times: times,\n random: random,\n now: now,\n escape: _escape,\n unescape: _unescape,\n templateSettings: templateSettings,\n template: template,\n result: result,\n uniqueId: uniqueId,\n chain: chain,\n iteratee: iteratee,\n partial: partial,\n bind: bind,\n bindAll: bindAll,\n memoize: memoize,\n delay: delay,\n defer: defer,\n throttle: throttle,\n debounce: debounce,\n wrap: wrap,\n negate: negate,\n compose: compose,\n after: after,\n before: before,\n once: once,\n findKey: findKey,\n findIndex: findIndex,\n findLastIndex: findLastIndex,\n sortedIndex: sortedIndex,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf,\n find: find,\n detect: find,\n findWhere: findWhere,\n each: each,\n forEach: each,\n map: map,\n collect: map,\n reduce: reduce,\n foldl: reduce,\n inject: reduce,\n reduceRight: reduceRight,\n foldr: reduceRight,\n filter: filter,\n select: filter,\n reject: reject,\n every: every,\n all: every,\n some: some,\n any: some,\n contains: contains,\n includes: contains,\n include: contains,\n invoke: invoke,\n pluck: pluck,\n where: where,\n max: max,\n min: min,\n shuffle: shuffle,\n sample: sample,\n sortBy: sortBy,\n groupBy: groupBy,\n indexBy: indexBy,\n countBy: countBy,\n partition: partition,\n toArray: toArray,\n size: size,\n pick: pick,\n omit: omit,\n first: first,\n head: first,\n take: first,\n initial: initial,\n last: last,\n rest: rest,\n tail: rest,\n drop: rest,\n compact: compact,\n flatten: flatten,\n without: without,\n uniq: uniq,\n unique: uniq,\n union: union,\n intersection: intersection,\n difference: difference,\n unzip: unzip,\n transpose: unzip,\n zip: zip,\n object: object,\n range: range,\n chunk: chunk,\n mixin: mixin,\n 'default': _$1\n };\n\n // Default Export\n\n // Add all of the Underscore functions to the wrapper object.\n var _ = mixin(allExports);\n // Legacy Node.js API.\n _._ = _;\n\n return _;\n\n})));\n\n","function _classCallCheck(a, n) {\n if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n}\nexport { _classCallCheck as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(e, r) {\n for (var t = 0; t < r.length; t++) {\n var o = r[t];\n o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, toPropertyKey(o.key), o);\n }\n}\nfunction _createClass(e, r, t) {\n return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", {\n writable: !1\n }), e;\n}\nexport { _createClass as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import { Subscribable } from './subscribable.mjs';\nimport { isServer } from './utils.mjs';\n\nclass FocusManager extends Subscribable {\n constructor() {\n super();\n\n this.setup = onFocus => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onFocus(); // Listen to visibillitychange and focus\n\n\n window.addEventListener('visibilitychange', listener, false);\n window.addEventListener('focus', listener, false);\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener);\n window.removeEventListener('focus', listener);\n };\n }\n\n return;\n };\n }\n\n onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n }\n\n onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n }\n\n setEventListener(setup) {\n var _this$cleanup2;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(focused => {\n if (typeof focused === 'boolean') {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n\n setFocused(focused) {\n const changed = this.focused !== focused;\n\n if (changed) {\n this.focused = focused;\n this.onFocus();\n }\n }\n\n onFocus() {\n this.listeners.forEach(({\n listener\n }) => {\n listener();\n });\n }\n\n isFocused() {\n if (typeof this.focused === 'boolean') {\n return this.focused;\n } // document global can be unavailable in react native\n\n\n if (typeof document === 'undefined') {\n return true;\n }\n\n return [undefined, 'visible', 'prerender'].includes(document.visibilityState);\n }\n\n}\nconst focusManager = new FocusManager();\n\nexport { FocusManager, focusManager };\n//# sourceMappingURL=focusManager.mjs.map\n","function infiniteQueryBehavior() {\n return {\n onFetch: context => {\n context.fetchFn = () => {\n var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2;\n\n const refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage;\n const fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore;\n const pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;\n const isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward';\n const isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward';\n const oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];\n const oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];\n let newPageParams = oldPageParams;\n let cancelled = false;\n\n const addSignalProperty = object => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n var _context$signal;\n\n if ((_context$signal = context.signal) != null && _context$signal.aborted) {\n cancelled = true;\n } else {\n var _context$signal2;\n\n (_context$signal2 = context.signal) == null ? void 0 : _context$signal2.addEventListener('abort', () => {\n cancelled = true;\n });\n }\n\n return context.signal;\n }\n });\n }; // Get query function\n\n\n const queryFn = context.options.queryFn || (() => Promise.reject(\"Missing queryFn for queryKey '\" + context.options.queryHash + \"'\"));\n\n const buildNewPages = (pages, param, page, previous) => {\n newPageParams = previous ? [param, ...newPageParams] : [...newPageParams, param];\n return previous ? [page, ...pages] : [...pages, page];\n }; // Create function to fetch a page\n\n\n const fetchPage = (pages, manual, param, previous) => {\n if (cancelled) {\n return Promise.reject('Cancelled');\n }\n\n if (typeof param === 'undefined' && !manual && pages.length) {\n return Promise.resolve(pages);\n }\n\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const queryFnResult = queryFn(queryFnContext);\n const promise = Promise.resolve(queryFnResult).then(page => buildNewPages(pages, param, page, previous));\n return promise;\n };\n\n let promise; // Fetch first page?\n\n if (!oldPages.length) {\n promise = fetchPage([]);\n } // Fetch next page?\n else if (isFetchingNextPage) {\n const manual = typeof pageParam !== 'undefined';\n const param = manual ? pageParam : getNextPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param);\n } // Fetch previous page?\n else if (isFetchingPreviousPage) {\n const manual = typeof pageParam !== 'undefined';\n const param = manual ? pageParam : getPreviousPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param, true);\n } // Refetch pages\n else {\n newPageParams = [];\n const manual = typeof context.options.getNextPageParam === 'undefined';\n const shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page\n\n promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); // Fetch remaining pages\n\n for (let i = 1; i < oldPages.length; i++) {\n promise = promise.then(pages => {\n const shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true;\n\n if (shouldFetchNextPage) {\n const param = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);\n return fetchPage(pages, manual, param);\n }\n\n return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));\n });\n }\n }\n\n const finalPromise = promise.then(pages => ({\n pages,\n pageParams: newPageParams\n }));\n return finalPromise;\n };\n }\n };\n}\nfunction getNextPageParam(options, pages) {\n return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages);\n}\nfunction getPreviousPageParam(options, pages) {\n return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages);\n}\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\n\nfunction hasNextPage(options, pages) {\n if (options.getNextPageParam && Array.isArray(pages)) {\n const nextPageParam = getNextPageParam(options, pages);\n return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false;\n }\n\n return;\n}\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\n\nfunction hasPreviousPage(options, pages) {\n if (options.getPreviousPageParam && Array.isArray(pages)) {\n const previousPageParam = getPreviousPageParam(options, pages);\n return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false;\n }\n\n return;\n}\n\nexport { getNextPageParam, getPreviousPageParam, hasNextPage, hasPreviousPage, infiniteQueryBehavior };\n//# sourceMappingURL=infiniteQueryBehavior.mjs.map\n","const defaultLogger = console;\n\nexport { defaultLogger };\n//# sourceMappingURL=logger.mjs.map\n","import { defaultLogger } from './logger.mjs';\nimport { notifyManager } from './notifyManager.mjs';\nimport { Removable } from './removable.mjs';\nimport { createRetryer, canFetch } from './retryer.mjs';\n\n// CLASS\nclass Mutation extends Removable {\n constructor(config) {\n super();\n this.defaultOptions = config.defaultOptions;\n this.mutationId = config.mutationId;\n this.mutationCache = config.mutationCache;\n this.logger = config.logger || defaultLogger;\n this.observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n\n setOptions(options) {\n this.options = { ...this.defaultOptions,\n ...options\n };\n this.updateCacheTime(this.options.cacheTime);\n }\n\n get meta() {\n return this.options.meta;\n }\n\n setState(state) {\n this.dispatch({\n type: 'setState',\n state\n });\n }\n\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer); // Stop the mutation from being garbage collected\n\n this.clearGcTimeout();\n this.mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer\n });\n }\n }\n\n removeObserver(observer) {\n this.observers = this.observers.filter(x => x !== observer);\n this.scheduleGc();\n this.mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer\n });\n }\n\n optionalRemove() {\n if (!this.observers.length) {\n if (this.state.status === 'loading') {\n this.scheduleGc();\n } else {\n this.mutationCache.remove(this);\n }\n }\n }\n\n continue() {\n var _this$retryer$continu, _this$retryer;\n\n return (_this$retryer$continu = (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.continue()) != null ? _this$retryer$continu : this.execute();\n }\n\n async execute() {\n const executeMutation = () => {\n var _this$options$retry;\n\n this.retryer = createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject('No mutationFn found');\n }\n\n return this.options.mutationFn(this.state.variables);\n },\n onFail: (failureCount, error) => {\n this.dispatch({\n type: 'failed',\n failureCount,\n error\n });\n },\n onPause: () => {\n this.dispatch({\n type: 'pause'\n });\n },\n onContinue: () => {\n this.dispatch({\n type: 'continue'\n });\n },\n retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode\n });\n return this.retryer.promise;\n };\n\n const restored = this.state.status === 'loading';\n\n try {\n var _this$mutationCache$c3, _this$mutationCache$c4, _this$options$onSucce, _this$options2, _this$mutationCache$c5, _this$mutationCache$c6, _this$options$onSettl, _this$options3;\n\n if (!restored) {\n var _this$mutationCache$c, _this$mutationCache$c2, _this$options$onMutat, _this$options;\n\n this.dispatch({\n type: 'loading',\n variables: this.options.variables\n }); // Notify cache callback\n\n await ((_this$mutationCache$c = (_this$mutationCache$c2 = this.mutationCache.config).onMutate) == null ? void 0 : _this$mutationCache$c.call(_this$mutationCache$c2, this.state.variables, this));\n const context = await ((_this$options$onMutat = (_this$options = this.options).onMutate) == null ? void 0 : _this$options$onMutat.call(_this$options, this.state.variables));\n\n if (context !== this.state.context) {\n this.dispatch({\n type: 'loading',\n context,\n variables: this.state.variables\n });\n }\n }\n\n const data = await executeMutation(); // Notify cache callback\n\n await ((_this$mutationCache$c3 = (_this$mutationCache$c4 = this.mutationCache.config).onSuccess) == null ? void 0 : _this$mutationCache$c3.call(_this$mutationCache$c4, data, this.state.variables, this.state.context, this));\n await ((_this$options$onSucce = (_this$options2 = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options2, data, this.state.variables, this.state.context)); // Notify cache callback\n\n await ((_this$mutationCache$c5 = (_this$mutationCache$c6 = this.mutationCache.config).onSettled) == null ? void 0 : _this$mutationCache$c5.call(_this$mutationCache$c6, data, null, this.state.variables, this.state.context, this));\n await ((_this$options$onSettl = (_this$options3 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options3, data, null, this.state.variables, this.state.context));\n this.dispatch({\n type: 'success',\n data\n });\n return data;\n } catch (error) {\n try {\n var _this$mutationCache$c7, _this$mutationCache$c8, _this$options$onError, _this$options4, _this$mutationCache$c9, _this$mutationCache$c10, _this$options$onSettl2, _this$options5;\n\n // Notify cache callback\n await ((_this$mutationCache$c7 = (_this$mutationCache$c8 = this.mutationCache.config).onError) == null ? void 0 : _this$mutationCache$c7.call(_this$mutationCache$c8, error, this.state.variables, this.state.context, this));\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error);\n }\n\n await ((_this$options$onError = (_this$options4 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options4, error, this.state.variables, this.state.context)); // Notify cache callback\n\n await ((_this$mutationCache$c9 = (_this$mutationCache$c10 = this.mutationCache.config).onSettled) == null ? void 0 : _this$mutationCache$c9.call(_this$mutationCache$c10, undefined, error, this.state.variables, this.state.context, this));\n await ((_this$options$onSettl2 = (_this$options5 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options5, undefined, error, this.state.variables, this.state.context));\n throw error;\n } finally {\n this.dispatch({\n type: 'error',\n error: error\n });\n }\n }\n }\n\n dispatch(action) {\n const reducer = state => {\n switch (action.type) {\n case 'failed':\n return { ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n\n case 'pause':\n return { ...state,\n isPaused: true\n };\n\n case 'continue':\n return { ...state,\n isPaused: false\n };\n\n case 'loading':\n return { ...state,\n context: action.context,\n data: undefined,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: !canFetch(this.options.networkMode),\n status: 'loading',\n variables: action.variables\n };\n\n case 'success':\n return { ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: 'success',\n isPaused: false\n };\n\n case 'error':\n return { ...state,\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: 'error'\n };\n\n case 'setState':\n return { ...state,\n ...action.state\n };\n }\n };\n\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.observers.forEach(observer => {\n observer.onMutationUpdate(action);\n });\n this.mutationCache.notify({\n mutation: this,\n type: 'updated',\n action\n });\n });\n }\n\n}\nfunction getDefaultState() {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: 'idle',\n variables: undefined\n };\n}\n\nexport { Mutation, getDefaultState };\n//# sourceMappingURL=mutation.mjs.map\n","import { scheduleMicrotask } from './utils.mjs';\n\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n\n let notifyFn = callback => {\n callback();\n };\n\n let batchNotifyFn = callback => {\n callback();\n };\n\n const batch = callback => {\n let result;\n transactions++;\n\n try {\n result = callback();\n } finally {\n transactions--;\n\n if (!transactions) {\n flush();\n }\n }\n\n return result;\n };\n\n const schedule = callback => {\n if (transactions) {\n queue.push(callback);\n } else {\n scheduleMicrotask(() => {\n notifyFn(callback);\n });\n }\n };\n /**\n * All calls to the wrapped function will be batched.\n */\n\n\n const batchCalls = callback => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n };\n\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n\n if (originalQueue.length) {\n scheduleMicrotask(() => {\n batchNotifyFn(() => {\n originalQueue.forEach(callback => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n\n\n const setNotifyFunction = fn => {\n notifyFn = fn;\n };\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n\n\n const setBatchNotifyFunction = fn => {\n batchNotifyFn = fn;\n };\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction\n };\n} // SINGLETON\n\nconst notifyManager = createNotifyManager();\n\nexport { createNotifyManager, notifyManager };\n//# sourceMappingURL=notifyManager.mjs.map\n","import { Subscribable } from './subscribable.mjs';\nimport { isServer } from './utils.mjs';\n\nconst onlineEvents = ['online', 'offline'];\nclass OnlineManager extends Subscribable {\n constructor() {\n super();\n\n this.setup = onOnline => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!isServer && window.addEventListener) {\n const listener = () => onOnline(); // Listen to online\n\n\n onlineEvents.forEach(event => {\n window.addEventListener(event, listener, false);\n });\n return () => {\n // Be sure to unsubscribe if a new handler is set\n onlineEvents.forEach(event => {\n window.removeEventListener(event, listener);\n });\n };\n }\n\n return;\n };\n }\n\n onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n }\n\n onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n }\n\n setEventListener(setup) {\n var _this$cleanup2;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(online => {\n if (typeof online === 'boolean') {\n this.setOnline(online);\n } else {\n this.onOnline();\n }\n });\n }\n\n setOnline(online) {\n const changed = this.online !== online;\n\n if (changed) {\n this.online = online;\n this.onOnline();\n }\n }\n\n onOnline() {\n this.listeners.forEach(({\n listener\n }) => {\n listener();\n });\n }\n\n isOnline() {\n if (typeof this.online === 'boolean') {\n return this.online;\n }\n\n if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {\n return true;\n }\n\n return navigator.onLine;\n }\n\n}\nconst onlineManager = new OnlineManager();\n\nexport { OnlineManager, onlineManager };\n//# sourceMappingURL=onlineManager.mjs.map\n","import { replaceData, noop, timeUntilStale, getAbortController } from './utils.mjs';\nimport { defaultLogger } from './logger.mjs';\nimport { notifyManager } from './notifyManager.mjs';\nimport { createRetryer, isCancelledError, canFetch } from './retryer.mjs';\nimport { Removable } from './removable.mjs';\n\n// CLASS\nclass Query extends Removable {\n constructor(config) {\n super();\n this.abortSignalConsumed = false;\n this.defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.cache = config.cache;\n this.logger = config.logger || defaultLogger;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.initialState = config.state || getDefaultState(this.options);\n this.state = this.initialState;\n this.scheduleGc();\n }\n\n get meta() {\n return this.options.meta;\n }\n\n setOptions(options) {\n this.options = { ...this.defaultOptions,\n ...options\n };\n this.updateCacheTime(this.options.cacheTime);\n }\n\n optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.cache.remove(this);\n }\n }\n\n setData(newData, options) {\n const data = replaceData(this.state.data, newData, this.options); // Set data and mark it as cached\n\n this.dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options == null ? void 0 : options.updatedAt,\n manual: options == null ? void 0 : options.manual\n });\n return data;\n }\n\n setState(state, setStateOptions) {\n this.dispatch({\n type: 'setState',\n state,\n setStateOptions\n });\n }\n\n cancel(options) {\n var _this$retryer;\n\n const promise = this.promise;\n (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n }\n\n destroy() {\n super.destroy();\n this.cancel({\n silent: true\n });\n }\n\n reset() {\n this.destroy();\n this.setState(this.initialState);\n }\n\n isActive() {\n return this.observers.some(observer => observer.options.enabled !== false);\n }\n\n isDisabled() {\n return this.getObserversCount() > 0 && !this.isActive();\n }\n\n isStale() {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some(observer => observer.getCurrentResult().isStale);\n }\n\n isStaleByTime(staleTime = 0) {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n\n onFocus() {\n var _this$retryer2;\n\n const observer = this.observers.find(x => x.shouldFetchOnWindowFocus());\n\n if (observer) {\n observer.refetch({\n cancelRefetch: false\n });\n } // Continue fetch if currently paused\n\n\n (_this$retryer2 = this.retryer) == null ? void 0 : _this$retryer2.continue();\n }\n\n onOnline() {\n var _this$retryer3;\n\n const observer = this.observers.find(x => x.shouldFetchOnReconnect());\n\n if (observer) {\n observer.refetch({\n cancelRefetch: false\n });\n } // Continue fetch if currently paused\n\n\n (_this$retryer3 = this.retryer) == null ? void 0 : _this$retryer3.continue();\n }\n\n addObserver(observer) {\n if (!this.observers.includes(observer)) {\n this.observers.push(observer); // Stop the query from being garbage collected\n\n this.clearGcTimeout();\n this.cache.notify({\n type: 'observerAdded',\n query: this,\n observer\n });\n }\n }\n\n removeObserver(observer) {\n if (this.observers.includes(observer)) {\n this.observers = this.observers.filter(x => x !== observer);\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.abortSignalConsumed) {\n this.retryer.cancel({\n revert: true\n });\n } else {\n this.retryer.cancelRetry();\n }\n }\n\n this.scheduleGc();\n }\n\n this.cache.notify({\n type: 'observerRemoved',\n query: this,\n observer\n });\n }\n }\n\n getObserversCount() {\n return this.observers.length;\n }\n\n invalidate() {\n if (!this.state.isInvalidated) {\n this.dispatch({\n type: 'invalidate'\n });\n }\n }\n\n fetch(options, fetchOptions) {\n var _this$options$behavio, _context$fetchOptions;\n\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.dataUpdatedAt && fetchOptions != null && fetchOptions.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({\n silent: true\n });\n } else if (this.promise) {\n var _this$retryer4;\n\n // make sure that retries that were potentially cancelled due to unmounts can continue\n (_this$retryer4 = this.retryer) == null ? void 0 : _this$retryer4.continueRetry(); // Return current promise if we are already fetching\n\n return this.promise;\n }\n } // Update config if passed, otherwise the config from the last execution is used\n\n\n if (options) {\n this.setOptions(options);\n } // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n\n\n if (!this.options.queryFn) {\n const observer = this.observers.find(x => x.options.queryFn);\n\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!Array.isArray(this.options.queryKey)) {\n this.logger.error(\"As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']\");\n }\n }\n\n const abortController = getAbortController(); // Create query function context\n\n const queryFnContext = {\n queryKey: this.queryKey,\n pageParam: undefined,\n meta: this.meta\n }; // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n\n const addSignalProperty = object => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (abortController) {\n this.abortSignalConsumed = true;\n return abortController.signal;\n }\n\n return undefined;\n }\n });\n };\n\n addSignalProperty(queryFnContext); // Create fetch function\n\n const fetchFn = () => {\n if (!this.options.queryFn) {\n return Promise.reject(\"Missing queryFn for queryKey '\" + this.options.queryHash + \"'\");\n }\n\n this.abortSignalConsumed = false;\n return this.options.queryFn(queryFnContext);\n }; // Trigger behavior hook\n\n\n const context = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context);\n (_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch(context); // Store state in case the current fetch needs to be reverted\n\n this.revertState = this.state; // Set to fetching state if not already in it\n\n if (this.state.fetchStatus === 'idle' || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) {\n var _context$fetchOptions2;\n\n this.dispatch({\n type: 'fetch',\n meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta\n });\n }\n\n const onError = error => {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n this.dispatch({\n type: 'error',\n error: error\n });\n }\n\n if (!isCancelledError(error)) {\n var _this$cache$config$on, _this$cache$config, _this$cache$config$on2, _this$cache$config2;\n\n // Notify cache callback\n (_this$cache$config$on = (_this$cache$config = this.cache.config).onError) == null ? void 0 : _this$cache$config$on.call(_this$cache$config, error, this);\n (_this$cache$config$on2 = (_this$cache$config2 = this.cache.config).onSettled) == null ? void 0 : _this$cache$config$on2.call(_this$cache$config2, this.state.data, error, this);\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error);\n }\n }\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc();\n }\n\n this.isFetchingOptimistic = false;\n }; // Try to fetch the data\n\n\n this.retryer = createRetryer({\n fn: context.fetchFn,\n abort: abortController == null ? void 0 : abortController.abort.bind(abortController),\n onSuccess: data => {\n var _this$cache$config$on3, _this$cache$config3, _this$cache$config$on4, _this$cache$config4;\n\n if (typeof data === 'undefined') {\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(\"Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: \" + this.queryHash);\n }\n\n onError(new Error(this.queryHash + \" data is undefined\"));\n return;\n }\n\n this.setData(data); // Notify cache callback\n\n (_this$cache$config$on3 = (_this$cache$config3 = this.cache.config).onSuccess) == null ? void 0 : _this$cache$config$on3.call(_this$cache$config3, data, this);\n (_this$cache$config$on4 = (_this$cache$config4 = this.cache.config).onSettled) == null ? void 0 : _this$cache$config$on4.call(_this$cache$config4, data, this.state.error, this);\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc();\n }\n\n this.isFetchingOptimistic = false;\n },\n onError,\n onFail: (failureCount, error) => {\n this.dispatch({\n type: 'failed',\n failureCount,\n error\n });\n },\n onPause: () => {\n this.dispatch({\n type: 'pause'\n });\n },\n onContinue: () => {\n this.dispatch({\n type: 'continue'\n });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode\n });\n this.promise = this.retryer.promise;\n return this.promise;\n }\n\n dispatch(action) {\n const reducer = state => {\n var _action$meta, _action$dataUpdatedAt;\n\n switch (action.type) {\n case 'failed':\n return { ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n\n case 'pause':\n return { ...state,\n fetchStatus: 'paused'\n };\n\n case 'continue':\n return { ...state,\n fetchStatus: 'fetching'\n };\n\n case 'fetch':\n return { ...state,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null,\n fetchStatus: canFetch(this.options.networkMode) ? 'fetching' : 'paused',\n ...(!state.dataUpdatedAt && {\n error: null,\n status: 'loading'\n })\n };\n\n case 'success':\n return { ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n fetchFailureReason: null\n })\n };\n\n case 'error':\n const error = action.error;\n\n if (isCancelledError(error) && error.revert && this.revertState) {\n return { ...this.revertState,\n fetchStatus: 'idle'\n };\n }\n\n return { ...state,\n error: error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: 'idle',\n status: 'error'\n };\n\n case 'invalidate':\n return { ...state,\n isInvalidated: true\n };\n\n case 'setState':\n return { ...state,\n ...action.state\n };\n }\n };\n\n this.state = reducer(this.state);\n notifyManager.batch(() => {\n this.observers.forEach(observer => {\n observer.onQueryUpdate(action);\n });\n this.cache.notify({\n query: this,\n type: 'updated',\n action\n });\n });\n }\n\n}\n\nfunction getDefaultState(options) {\n const data = typeof options.initialData === 'function' ? options.initialData() : options.initialData;\n const hasData = typeof data !== 'undefined';\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === 'function' ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'loading',\n fetchStatus: 'idle'\n };\n}\n\nexport { Query };\n//# sourceMappingURL=query.mjs.map\n","import { hashQueryKeyByOptions, parseFilterArgs, matchQuery } from './utils.mjs';\nimport { Query } from './query.mjs';\nimport { notifyManager } from './notifyManager.mjs';\nimport { Subscribable } from './subscribable.mjs';\n\n// CLASS\nclass QueryCache extends Subscribable {\n constructor(config) {\n super();\n this.config = config || {};\n this.queries = [];\n this.queriesMap = {};\n }\n\n build(client, options, state) {\n var _options$queryHash;\n\n const queryKey = options.queryKey;\n const queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options);\n let query = this.get(queryHash);\n\n if (!query) {\n query = new Query({\n cache: this,\n logger: client.getLogger(),\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query);\n }\n\n return query;\n }\n\n add(query) {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query;\n this.queries.push(query);\n this.notify({\n type: 'added',\n query\n });\n }\n }\n\n remove(query) {\n const queryInMap = this.queriesMap[query.queryHash];\n\n if (queryInMap) {\n query.destroy();\n this.queries = this.queries.filter(x => x !== query);\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash];\n }\n\n this.notify({\n type: 'removed',\n query\n });\n }\n }\n\n clear() {\n notifyManager.batch(() => {\n this.queries.forEach(query => {\n this.remove(query);\n });\n });\n }\n\n get(queryHash) {\n return this.queriesMap[queryHash];\n }\n\n getAll() {\n return this.queries;\n }\n\n find(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.queries.find(query => matchQuery(filters, query));\n }\n\n findAll(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n return Object.keys(filters).length > 0 ? this.queries.filter(query => matchQuery(filters, query)) : this.queries;\n }\n\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach(({\n listener\n }) => {\n listener(event);\n });\n });\n }\n\n onFocus() {\n notifyManager.batch(() => {\n this.queries.forEach(query => {\n query.onFocus();\n });\n });\n }\n\n onOnline() {\n notifyManager.batch(() => {\n this.queries.forEach(query => {\n query.onOnline();\n });\n });\n }\n\n}\n\nexport { QueryCache };\n//# sourceMappingURL=queryCache.mjs.map\n","import { notifyManager } from './notifyManager.mjs';\nimport { Mutation } from './mutation.mjs';\nimport { matchMutation, noop } from './utils.mjs';\nimport { Subscribable } from './subscribable.mjs';\n\n// CLASS\nclass MutationCache extends Subscribable {\n constructor(config) {\n super();\n this.config = config || {};\n this.mutations = [];\n this.mutationId = 0;\n }\n\n build(client, options, state) {\n const mutation = new Mutation({\n mutationCache: this,\n logger: client.getLogger(),\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state,\n defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined\n });\n this.add(mutation);\n return mutation;\n }\n\n add(mutation) {\n this.mutations.push(mutation);\n this.notify({\n type: 'added',\n mutation\n });\n }\n\n remove(mutation) {\n this.mutations = this.mutations.filter(x => x !== mutation);\n this.notify({\n type: 'removed',\n mutation\n });\n }\n\n clear() {\n notifyManager.batch(() => {\n this.mutations.forEach(mutation => {\n this.remove(mutation);\n });\n });\n }\n\n getAll() {\n return this.mutations;\n }\n\n find(filters) {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.mutations.find(mutation => matchMutation(filters, mutation));\n }\n\n findAll(filters) {\n return this.mutations.filter(mutation => matchMutation(filters, mutation));\n }\n\n notify(event) {\n notifyManager.batch(() => {\n this.listeners.forEach(({\n listener\n }) => {\n listener(event);\n });\n });\n }\n\n resumePausedMutations() {\n var _this$resuming;\n\n this.resuming = ((_this$resuming = this.resuming) != null ? _this$resuming : Promise.resolve()).then(() => {\n const pausedMutations = this.mutations.filter(x => x.state.isPaused);\n return notifyManager.batch(() => pausedMutations.reduce((promise, mutation) => promise.then(() => mutation.continue().catch(noop)), Promise.resolve()));\n }).then(() => {\n this.resuming = undefined;\n });\n return this.resuming;\n }\n\n}\n\nexport { MutationCache };\n//# sourceMappingURL=mutationCache.mjs.map\n","import { parseFilterArgs, parseQueryArgs, functionalUpdate, noop, hashQueryKey, partialMatchKey, hashQueryKeyByOptions } from './utils.mjs';\nimport { QueryCache } from './queryCache.mjs';\nimport { MutationCache } from './mutationCache.mjs';\nimport { focusManager } from './focusManager.mjs';\nimport { onlineManager } from './onlineManager.mjs';\nimport { notifyManager } from './notifyManager.mjs';\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior.mjs';\nimport { defaultLogger } from './logger.mjs';\n\n// CLASS\nclass QueryClient {\n constructor(config = {}) {\n this.queryCache = config.queryCache || new QueryCache();\n this.mutationCache = config.mutationCache || new MutationCache();\n this.logger = config.logger || defaultLogger;\n this.defaultOptions = config.defaultOptions || {};\n this.queryDefaults = [];\n this.mutationDefaults = [];\n this.mountCount = 0;\n\n if (process.env.NODE_ENV !== 'production' && config.logger) {\n this.logger.error(\"Passing a custom logger has been deprecated and will be removed in the next major version.\");\n }\n }\n\n mount() {\n this.mountCount++;\n if (this.mountCount !== 1) return;\n this.unsubscribeFocus = focusManager.subscribe(() => {\n if (focusManager.isFocused()) {\n this.resumePausedMutations();\n this.queryCache.onFocus();\n }\n });\n this.unsubscribeOnline = onlineManager.subscribe(() => {\n if (onlineManager.isOnline()) {\n this.resumePausedMutations();\n this.queryCache.onOnline();\n }\n });\n }\n\n unmount() {\n var _this$unsubscribeFocu, _this$unsubscribeOnli;\n\n this.mountCount--;\n if (this.mountCount !== 0) return;\n (_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this);\n this.unsubscribeFocus = undefined;\n (_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this);\n this.unsubscribeOnline = undefined;\n }\n\n isFetching(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n filters.fetchStatus = 'fetching';\n return this.queryCache.findAll(filters).length;\n }\n\n isMutating(filters) {\n return this.mutationCache.findAll({ ...filters,\n fetching: true\n }).length;\n }\n\n getQueryData(queryKey, filters) {\n var _this$queryCache$find;\n\n return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data;\n }\n\n ensureQueryData(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n const cachedData = this.getQueryData(parsedOptions.queryKey);\n return cachedData ? Promise.resolve(cachedData) : this.fetchQuery(parsedOptions);\n }\n\n getQueriesData(queryKeyOrFilters) {\n return this.getQueryCache().findAll(queryKeyOrFilters).map(({\n queryKey,\n state\n }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n\n setQueryData(queryKey, updater, options) {\n const query = this.queryCache.find(queryKey);\n const prevData = query == null ? void 0 : query.state.data;\n const data = functionalUpdate(updater, prevData);\n\n if (typeof data === 'undefined') {\n return undefined;\n }\n\n const parsedOptions = parseQueryArgs(queryKey);\n const defaultedOptions = this.defaultQueryOptions(parsedOptions);\n return this.queryCache.build(this, defaultedOptions).setData(data, { ...options,\n manual: true\n });\n }\n\n setQueriesData(queryKeyOrFilters, updater, options) {\n return notifyManager.batch(() => this.getQueryCache().findAll(queryKeyOrFilters).map(({\n queryKey\n }) => [queryKey, this.setQueryData(queryKey, updater, options)]));\n }\n\n getQueryState(queryKey, filters) {\n var _this$queryCache$find2;\n\n return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state;\n }\n\n removeQueries(arg1, arg2) {\n const [filters] = parseFilterArgs(arg1, arg2);\n const queryCache = this.queryCache;\n notifyManager.batch(() => {\n queryCache.findAll(filters).forEach(query => {\n queryCache.remove(query);\n });\n });\n }\n\n resetQueries(arg1, arg2, arg3) {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3);\n const queryCache = this.queryCache;\n const refetchFilters = {\n type: 'active',\n ...filters\n };\n return notifyManager.batch(() => {\n queryCache.findAll(filters).forEach(query => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n\n cancelQueries(arg1, arg2, arg3) {\n const [filters, cancelOptions = {}] = parseFilterArgs(arg1, arg2, arg3);\n\n if (typeof cancelOptions.revert === 'undefined') {\n cancelOptions.revert = true;\n }\n\n const promises = notifyManager.batch(() => this.queryCache.findAll(filters).map(query => query.cancel(cancelOptions)));\n return Promise.all(promises).then(noop).catch(noop);\n }\n\n invalidateQueries(arg1, arg2, arg3) {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3);\n return notifyManager.batch(() => {\n var _ref, _filters$refetchType;\n\n this.queryCache.findAll(filters).forEach(query => {\n query.invalidate();\n });\n\n if (filters.refetchType === 'none') {\n return Promise.resolve();\n }\n\n const refetchFilters = { ...filters,\n type: (_ref = (_filters$refetchType = filters.refetchType) != null ? _filters$refetchType : filters.type) != null ? _ref : 'active'\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n\n refetchQueries(arg1, arg2, arg3) {\n const [filters, options] = parseFilterArgs(arg1, arg2, arg3);\n const promises = notifyManager.batch(() => this.queryCache.findAll(filters).filter(query => !query.isDisabled()).map(query => {\n var _options$cancelRefetc;\n\n return query.fetch(undefined, { ...options,\n cancelRefetch: (_options$cancelRefetc = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc : true,\n meta: {\n refetchPage: filters.refetchPage\n }\n });\n }));\n let promise = Promise.all(promises).then(noop);\n\n if (!(options != null && options.throwOnError)) {\n promise = promise.catch(noop);\n }\n\n return promise;\n }\n\n fetchQuery(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n const defaultedOptions = this.defaultQueryOptions(parsedOptions); // https://github.com/tannerlinsley/react-query/issues/652\n\n if (typeof defaultedOptions.retry === 'undefined') {\n defaultedOptions.retry = false;\n }\n\n const query = this.queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n\n prefetchQuery(arg1, arg2, arg3) {\n return this.fetchQuery(arg1, arg2, arg3).then(noop).catch(noop);\n }\n\n fetchInfiniteQuery(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n parsedOptions.behavior = infiniteQueryBehavior();\n return this.fetchQuery(parsedOptions);\n }\n\n prefetchInfiniteQuery(arg1, arg2, arg3) {\n return this.fetchInfiniteQuery(arg1, arg2, arg3).then(noop).catch(noop);\n }\n\n resumePausedMutations() {\n return this.mutationCache.resumePausedMutations();\n }\n\n getQueryCache() {\n return this.queryCache;\n }\n\n getMutationCache() {\n return this.mutationCache;\n }\n\n getLogger() {\n return this.logger;\n }\n\n getDefaultOptions() {\n return this.defaultOptions;\n }\n\n setDefaultOptions(options) {\n this.defaultOptions = options;\n }\n\n setQueryDefaults(queryKey, options) {\n const result = this.queryDefaults.find(x => hashQueryKey(queryKey) === hashQueryKey(x.queryKey));\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.queryDefaults.push({\n queryKey,\n defaultOptions: options\n });\n }\n }\n\n getQueryDefaults(queryKey) {\n if (!queryKey) {\n return undefined;\n } // Get the first matching defaults\n\n\n const firstMatchingDefaults = this.queryDefaults.find(x => partialMatchKey(queryKey, x.queryKey)); // Additional checks and error in dev mode\n\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.queryDefaults.filter(x => partialMatchKey(queryKey, x.queryKey)); // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n\n if (matchingDefaults.length > 1) {\n this.logger.error(\"[QueryClient] Several query defaults match with key '\" + JSON.stringify(queryKey) + \"'. The first matching query defaults are used. Please check how query defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetquerydefaults.\");\n }\n }\n\n return firstMatchingDefaults == null ? void 0 : firstMatchingDefaults.defaultOptions;\n }\n\n setMutationDefaults(mutationKey, options) {\n const result = this.mutationDefaults.find(x => hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey));\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.mutationDefaults.push({\n mutationKey,\n defaultOptions: options\n });\n }\n }\n\n getMutationDefaults(mutationKey) {\n if (!mutationKey) {\n return undefined;\n } // Get the first matching defaults\n\n\n const firstMatchingDefaults = this.mutationDefaults.find(x => partialMatchKey(mutationKey, x.mutationKey)); // Additional checks and error in dev mode\n\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.mutationDefaults.filter(x => partialMatchKey(mutationKey, x.mutationKey)); // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n\n if (matchingDefaults.length > 1) {\n this.logger.error(\"[QueryClient] Several mutation defaults match with key '\" + JSON.stringify(mutationKey) + \"'. The first matching mutation defaults are used. Please check how mutation defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetmutationdefaults.\");\n }\n }\n\n return firstMatchingDefaults == null ? void 0 : firstMatchingDefaults.defaultOptions;\n }\n\n defaultQueryOptions(options) {\n if (options != null && options._defaulted) {\n return options;\n }\n\n const defaultedOptions = { ...this.defaultOptions.queries,\n ...this.getQueryDefaults(options == null ? void 0 : options.queryKey),\n ...options,\n _defaulted: true\n };\n\n if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n } // dependent default values\n\n\n if (typeof defaultedOptions.refetchOnReconnect === 'undefined') {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== 'always';\n }\n\n if (typeof defaultedOptions.useErrorBoundary === 'undefined') {\n defaultedOptions.useErrorBoundary = !!defaultedOptions.suspense;\n }\n\n return defaultedOptions;\n }\n\n defaultMutationOptions(options) {\n if (options != null && options._defaulted) {\n return options;\n }\n\n return { ...this.defaultOptions.mutations,\n ...this.getMutationDefaults(options == null ? void 0 : options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n\n clear() {\n this.queryCache.clear();\n this.mutationCache.clear();\n }\n\n}\n\nexport { QueryClient };\n//# sourceMappingURL=queryClient.mjs.map\n","import { shallowEqualObjects, noop, isServer, isValidTimeout, timeUntilStale, replaceData } from './utils.mjs';\nimport { notifyManager } from './notifyManager.mjs';\nimport { focusManager } from './focusManager.mjs';\nimport { Subscribable } from './subscribable.mjs';\nimport { canFetch, isCancelledError } from './retryer.mjs';\n\nclass QueryObserver extends Subscribable {\n constructor(client, options) {\n super();\n this.client = client;\n this.options = options;\n this.trackedProps = new Set();\n this.selectError = null;\n this.bindMethods();\n this.setOptions(options);\n }\n\n bindMethods() {\n this.remove = this.remove.bind(this);\n this.refetch = this.refetch.bind(this);\n }\n\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.currentQuery.addObserver(this);\n\n if (shouldFetchOnMount(this.currentQuery, this.options)) {\n this.executeFetch();\n }\n\n this.updateTimers();\n }\n }\n\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n\n shouldFetchOnReconnect() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect);\n }\n\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus);\n }\n\n destroy() {\n this.listeners = new Set();\n this.clearStaleTimeout();\n this.clearRefetchInterval();\n this.currentQuery.removeObserver(this);\n }\n\n setOptions(options, notifyOptions) {\n const prevOptions = this.options;\n const prevQuery = this.currentQuery;\n this.options = this.client.defaultQueryOptions(options);\n\n if (process.env.NODE_ENV !== 'production' && typeof (options == null ? void 0 : options.isDataEqual) !== 'undefined') {\n this.client.getLogger().error(\"The isDataEqual option has been deprecated and will be removed in the next major version. You can achieve the same functionality by passing a function as the structuralSharing option\");\n }\n\n if (!shallowEqualObjects(prevOptions, this.options)) {\n this.client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.currentQuery,\n observer: this\n });\n }\n\n if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') {\n throw new Error('Expected enabled to be a boolean');\n } // Keep previous query key if the user does not supply one\n\n\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey;\n }\n\n this.updateQuery();\n const mounted = this.hasListeners(); // Fetch if there are subscribers\n\n if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) {\n this.executeFetch();\n } // Update result\n\n\n this.updateResult(notifyOptions); // Update stale interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {\n this.updateStaleTimeout();\n }\n\n const nextRefetchInterval = this.computeRefetchInterval(); // Update refetch interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) {\n this.updateRefetchInterval(nextRefetchInterval);\n }\n }\n\n getOptimisticResult(options) {\n const query = this.client.getQueryCache().build(this.client, options);\n const result = this.createResult(query, options);\n\n if (shouldAssignObserverCurrentProperties(this, result, options)) {\n // this assigns the optimistic result to the current Observer\n // because if the query function changes, useQuery will be performing\n // an effect where it would fetch again.\n // When the fetch finishes, we perform a deep data cloning in order\n // to reuse objects references. This deep data clone is performed against\n // the `observer.currentResult.data` property\n // When QueryKey changes, we refresh the query and get new `optimistic`\n // result, while we leave the `observer.currentResult`, so when new data\n // arrives, it finds the old `observer.currentResult` which is related\n // to the old QueryKey. Which means that currentResult and selectData are\n // out of sync already.\n // To solve this, we move the cursor of the currentResult everytime\n // an observer reads an optimistic value.\n // When keeping the previous data, the result doesn't change until new\n // data arrives.\n this.currentResult = result;\n this.currentResultOptions = this.options;\n this.currentResultState = this.currentQuery.state;\n }\n\n return result;\n }\n\n getCurrentResult() {\n return this.currentResult;\n }\n\n trackResult(result) {\n const trackedResult = {};\n Object.keys(result).forEach(key => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackedProps.add(key);\n return result[key];\n }\n });\n });\n return trackedResult;\n }\n\n getCurrentQuery() {\n return this.currentQuery;\n }\n\n remove() {\n this.client.getQueryCache().remove(this.currentQuery);\n }\n\n refetch({\n refetchPage,\n ...options\n } = {}) {\n return this.fetch({ ...options,\n meta: {\n refetchPage\n }\n });\n }\n\n fetchOptimistic(options) {\n const defaultedOptions = this.client.defaultQueryOptions(options);\n const query = this.client.getQueryCache().build(this.client, defaultedOptions);\n query.isFetchingOptimistic = true;\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n\n fetch(fetchOptions) {\n var _fetchOptions$cancelR;\n\n return this.executeFetch({ ...fetchOptions,\n cancelRefetch: (_fetchOptions$cancelR = fetchOptions.cancelRefetch) != null ? _fetchOptions$cancelR : true\n }).then(() => {\n this.updateResult();\n return this.currentResult;\n });\n }\n\n executeFetch(fetchOptions) {\n // Make sure we reference the latest query as the current one might have been removed\n this.updateQuery(); // Fetch\n\n let promise = this.currentQuery.fetch(this.options, fetchOptions);\n\n if (!(fetchOptions != null && fetchOptions.throwOnError)) {\n promise = promise.catch(noop);\n }\n\n return promise;\n }\n\n updateStaleTimeout() {\n this.clearStaleTimeout();\n\n if (isServer || this.currentResult.isStale || !isValidTimeout(this.options.staleTime)) {\n return;\n }\n\n const time = timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime); // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n\n const timeout = time + 1;\n this.staleTimeoutId = setTimeout(() => {\n if (!this.currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n\n computeRefetchInterval() {\n var _this$options$refetch;\n\n return typeof this.options.refetchInterval === 'function' ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false;\n }\n\n updateRefetchInterval(nextInterval) {\n this.clearRefetchInterval();\n this.currentRefetchInterval = nextInterval;\n\n if (isServer || this.options.enabled === false || !isValidTimeout(this.currentRefetchInterval) || this.currentRefetchInterval === 0) {\n return;\n }\n\n this.refetchIntervalId = setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.executeFetch();\n }\n }, this.currentRefetchInterval);\n }\n\n updateTimers() {\n this.updateStaleTimeout();\n this.updateRefetchInterval(this.computeRefetchInterval());\n }\n\n clearStaleTimeout() {\n if (this.staleTimeoutId) {\n clearTimeout(this.staleTimeoutId);\n this.staleTimeoutId = undefined;\n }\n }\n\n clearRefetchInterval() {\n if (this.refetchIntervalId) {\n clearInterval(this.refetchIntervalId);\n this.refetchIntervalId = undefined;\n }\n }\n\n createResult(query, options) {\n const prevQuery = this.currentQuery;\n const prevOptions = this.options;\n const prevResult = this.currentResult;\n const prevResultState = this.currentResultState;\n const prevResultOptions = this.currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.currentQueryInitialState;\n const prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult;\n const {\n state\n } = query;\n let {\n dataUpdatedAt,\n error,\n errorUpdatedAt,\n fetchStatus,\n status\n } = state;\n let isPreviousData = false;\n let isPlaceholderData = false;\n let data; // Optimistically set result in fetching state if needed\n\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n\n if (fetchOnMount || fetchOptionally) {\n fetchStatus = canFetch(query.options.networkMode) ? 'fetching' : 'paused';\n\n if (!dataUpdatedAt) {\n status = 'loading';\n }\n }\n\n if (options._optimisticResults === 'isRestoring') {\n fetchStatus = 'idle';\n }\n } // Keep previous data if needed\n\n\n if (options.keepPreviousData && !state.dataUpdatedAt && prevQueryResult != null && prevQueryResult.isSuccess && status !== 'error') {\n data = prevQueryResult.data;\n dataUpdatedAt = prevQueryResult.dataUpdatedAt;\n status = prevQueryResult.status;\n isPreviousData = true;\n } // Select data if needed\n else if (options.select && typeof state.data !== 'undefined') {\n // Memoize select result\n if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) {\n data = this.selectResult;\n } else {\n try {\n this.selectFn = options.select;\n data = options.select(state.data);\n data = replaceData(prevResult == null ? void 0 : prevResult.data, data, options);\n this.selectResult = data;\n this.selectError = null;\n } catch (selectError) {\n if (process.env.NODE_ENV !== 'production') {\n this.client.getLogger().error(selectError);\n }\n\n this.selectError = selectError;\n }\n }\n } // Use query data\n else {\n data = state.data;\n } // Show placeholder data if needed\n\n\n if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && status === 'loading') {\n let placeholderData; // Memoize placeholder data\n\n if (prevResult != null && prevResult.isPlaceholderData && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {\n placeholderData = prevResult.data;\n } else {\n placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData() : options.placeholderData;\n\n if (options.select && typeof placeholderData !== 'undefined') {\n try {\n placeholderData = options.select(placeholderData);\n this.selectError = null;\n } catch (selectError) {\n if (process.env.NODE_ENV !== 'production') {\n this.client.getLogger().error(selectError);\n }\n\n this.selectError = selectError;\n }\n }\n }\n\n if (typeof placeholderData !== 'undefined') {\n status = 'success';\n data = replaceData(prevResult == null ? void 0 : prevResult.data, placeholderData, options);\n isPlaceholderData = true;\n }\n }\n\n if (this.selectError) {\n error = this.selectError;\n data = this.selectResult;\n errorUpdatedAt = Date.now();\n status = 'error';\n }\n\n const isFetching = fetchStatus === 'fetching';\n const isLoading = status === 'loading';\n const isError = status === 'error';\n const result = {\n status,\n fetchStatus,\n isLoading,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading && isFetching,\n data,\n dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n failureReason: state.fetchFailureReason,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isLoading,\n isLoadingError: isError && state.dataUpdatedAt === 0,\n isPaused: fetchStatus === 'paused',\n isPlaceholderData,\n isPreviousData,\n isRefetchError: isError && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n remove: this.remove\n };\n return result;\n }\n\n updateResult(notifyOptions) {\n const prevResult = this.currentResult;\n const nextResult = this.createResult(this.currentQuery, this.options);\n this.currentResultState = this.currentQuery.state;\n this.currentResultOptions = this.options; // Only notify and update result if something has changed\n\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n\n this.currentResult = nextResult; // Determine which callbacks to trigger\n\n const defaultNotifyOptions = {\n cache: true\n };\n\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n\n const {\n notifyOnChangeProps\n } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === 'function' ? notifyOnChangeProps() : notifyOnChangeProps;\n\n if (notifyOnChangePropsValue === 'all' || !notifyOnChangePropsValue && !this.trackedProps.size) {\n return true;\n }\n\n const includedProps = new Set(notifyOnChangePropsValue != null ? notifyOnChangePropsValue : this.trackedProps);\n\n if (this.options.useErrorBoundary) {\n includedProps.add('error');\n }\n\n return Object.keys(this.currentResult).some(key => {\n const typedKey = key;\n const changed = this.currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n\n if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true;\n }\n\n this.notify({ ...defaultNotifyOptions,\n ...notifyOptions\n });\n }\n\n updateQuery() {\n const query = this.client.getQueryCache().build(this.client, this.options);\n\n if (query === this.currentQuery) {\n return;\n }\n\n const prevQuery = this.currentQuery;\n this.currentQuery = query;\n this.currentQueryInitialState = query.state;\n this.previousQueryResult = this.currentResult;\n\n if (this.hasListeners()) {\n prevQuery == null ? void 0 : prevQuery.removeObserver(this);\n query.addObserver(this);\n }\n }\n\n onQueryUpdate(action) {\n const notifyOptions = {};\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = !action.manual;\n } else if (action.type === 'error' && !isCancelledError(action.error)) {\n notifyOptions.onError = true;\n }\n\n this.updateResult(notifyOptions);\n\n if (this.hasListeners()) {\n this.updateTimers();\n }\n }\n\n notify(notifyOptions) {\n notifyManager.batch(() => {\n // First trigger the configuration callbacks\n if (notifyOptions.onSuccess) {\n var _this$options$onSucce, _this$options, _this$options$onSettl, _this$options2;\n\n (_this$options$onSucce = (_this$options = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options, this.currentResult.data);\n (_this$options$onSettl = (_this$options2 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options2, this.currentResult.data, null);\n } else if (notifyOptions.onError) {\n var _this$options$onError, _this$options3, _this$options$onSettl2, _this$options4;\n\n (_this$options$onError = (_this$options3 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options3, this.currentResult.error);\n (_this$options$onSettl2 = (_this$options4 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options4, undefined, this.currentResult.error);\n } // Then trigger the listeners\n\n\n if (notifyOptions.listeners) {\n this.listeners.forEach(({\n listener\n }) => {\n listener(this.currentResult);\n });\n } // Then the cache listeners\n\n\n if (notifyOptions.cache) {\n this.client.getQueryCache().notify({\n query: this.currentQuery,\n type: 'observerResultsUpdated'\n });\n }\n });\n }\n\n}\n\nfunction shouldLoadOnMount(query, options) {\n return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false);\n}\n\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\n\nfunction shouldFetchOn(query, options, field) {\n if (options.enabled !== false) {\n const value = typeof field === 'function' ? field(query) : field;\n return value === 'always' || value !== false && isStale(query, options);\n }\n\n return false;\n}\n\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options);\n}\n\nfunction isStale(query, options) {\n return query.isStaleByTime(options.staleTime);\n} // this function would decide if we will update the observer's 'current'\n// properties after an optimistic reading via getOptimisticResult\n\n\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult, options) {\n // it is important to keep this condition like this for three reasons:\n // 1. It will get removed in the v5\n // 2. it reads: don't update the properties if we want to keep the previous\n // data.\n // 3. The opposite condition (!options.keepPreviousData) would fallthrough\n // and will result in a bad decision\n if (options.keepPreviousData) {\n return false;\n } // this means we want to put some placeholder data when pending and queryKey\n // changed.\n\n\n if (options.placeholderData !== undefined) {\n // re-assign properties only if current data is placeholder data\n // which means that data did not arrive yet, so, if there is some cached data\n // we need to \"prepare\" to receive it\n return optimisticResult.isPlaceholderData;\n } // if the newly created result isn't what the observer is holding as current,\n // then we'll need to update the properties as well\n\n\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n } // basically, just keep previous properties if nothing changed\n\n\n return false;\n}\n\nexport { QueryObserver };\n//# sourceMappingURL=queryObserver.mjs.map\n","import { isValidTimeout, isServer } from './utils.mjs';\n\nclass Removable {\n destroy() {\n this.clearGcTimeout();\n }\n\n scheduleGc() {\n this.clearGcTimeout();\n\n if (isValidTimeout(this.cacheTime)) {\n this.gcTimeout = setTimeout(() => {\n this.optionalRemove();\n }, this.cacheTime);\n }\n }\n\n updateCacheTime(newCacheTime) {\n // Default to 5 minutes (Infinity for server-side) if no cache time is set\n this.cacheTime = Math.max(this.cacheTime || 0, newCacheTime != null ? newCacheTime : isServer ? Infinity : 5 * 60 * 1000);\n }\n\n clearGcTimeout() {\n if (this.gcTimeout) {\n clearTimeout(this.gcTimeout);\n this.gcTimeout = undefined;\n }\n }\n\n}\n\nexport { Removable };\n//# sourceMappingURL=removable.mjs.map\n","import { focusManager } from './focusManager.mjs';\nimport { onlineManager } from './onlineManager.mjs';\nimport { sleep } from './utils.mjs';\n\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1000 * 2 ** failureCount, 30000);\n}\n\nfunction canFetch(networkMode) {\n return (networkMode != null ? networkMode : 'online') === 'online' ? onlineManager.isOnline() : true;\n}\nclass CancelledError {\n constructor(options) {\n this.revert = options == null ? void 0 : options.revert;\n this.silent = options == null ? void 0 : options.silent;\n }\n\n}\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let isResolved = false;\n let continueFn;\n let promiseResolve;\n let promiseReject;\n const promise = new Promise((outerResolve, outerReject) => {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n\n const cancel = cancelOptions => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions));\n config.abort == null ? void 0 : config.abort();\n }\n };\n\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n\n const shouldPause = () => !focusManager.isFocused() || config.networkMode !== 'always' && !onlineManager.isOnline();\n\n const resolve = value => {\n if (!isResolved) {\n isResolved = true;\n config.onSuccess == null ? void 0 : config.onSuccess(value);\n continueFn == null ? void 0 : continueFn();\n promiseResolve(value);\n }\n };\n\n const reject = value => {\n if (!isResolved) {\n isResolved = true;\n config.onError == null ? void 0 : config.onError(value);\n continueFn == null ? void 0 : continueFn();\n promiseReject(value);\n }\n };\n\n const pause = () => {\n return new Promise(continueResolve => {\n continueFn = value => {\n const canContinue = isResolved || !shouldPause();\n\n if (canContinue) {\n continueResolve(value);\n }\n\n return canContinue;\n };\n\n config.onPause == null ? void 0 : config.onPause();\n }).then(() => {\n continueFn = undefined;\n\n if (!isResolved) {\n config.onContinue == null ? void 0 : config.onContinue();\n }\n });\n }; // Create loop function\n\n\n const run = () => {\n // Do nothing if already resolved\n if (isResolved) {\n return;\n }\n\n let promiseOrValue; // Execute query\n\n try {\n promiseOrValue = config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n }\n\n Promise.resolve(promiseOrValue).then(resolve).catch(error => {\n var _config$retry, _config$retryDelay;\n\n // Stop if the fetch is already resolved\n if (isResolved) {\n return;\n } // Do we need to retry the request?\n\n\n const retry = (_config$retry = config.retry) != null ? _config$retry : 3;\n const retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay;\n const delay = typeof retryDelay === 'function' ? retryDelay(failureCount, error) : retryDelay;\n const shouldRetry = retry === true || typeof retry === 'number' && failureCount < retry || typeof retry === 'function' && retry(failureCount, error);\n\n if (isRetryCancelled || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error);\n return;\n }\n\n failureCount++; // Notify on fail\n\n config.onFail == null ? void 0 : config.onFail(failureCount, error); // Delay\n\n sleep(delay) // Pause if the document is not visible or when the device is offline\n .then(() => {\n if (shouldPause()) {\n return pause();\n }\n\n return;\n }).then(() => {\n if (isRetryCancelled) {\n reject(error);\n } else {\n run();\n }\n });\n });\n }; // Start loop\n\n\n if (canFetch(config.networkMode)) {\n run();\n } else {\n pause().then(run);\n }\n\n return {\n promise,\n cancel,\n continue: () => {\n const didContinue = continueFn == null ? void 0 : continueFn();\n return didContinue ? promise : Promise.resolve();\n },\n cancelRetry,\n continueRetry\n };\n}\n\nexport { CancelledError, canFetch, createRetryer, isCancelledError };\n//# sourceMappingURL=retryer.mjs.map\n","class Subscribable {\n constructor() {\n this.listeners = new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n\n subscribe(listener) {\n const identity = {\n listener\n };\n this.listeners.add(identity);\n this.onSubscribe();\n return () => {\n this.listeners.delete(identity);\n this.onUnsubscribe();\n };\n }\n\n hasListeners() {\n return this.listeners.size > 0;\n }\n\n onSubscribe() {// Do nothing\n }\n\n onUnsubscribe() {// Do nothing\n }\n\n}\n\nexport { Subscribable };\n//# sourceMappingURL=subscribable.mjs.map\n","// TYPES\n// UTILS\nconst isServer = typeof window === 'undefined' || 'Deno' in window;\nfunction noop() {\n return undefined;\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === 'number' && value >= 0 && value !== Infinity;\n}\nfunction difference(array1, array2) {\n return array1.filter(x => !array2.includes(x));\n}\nfunction replaceAt(array, index, value) {\n const copy = array.slice(0);\n copy[index] = value;\n return copy;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction parseQueryArgs(arg1, arg2, arg3) {\n if (!isQueryKey(arg1)) {\n return arg1;\n }\n\n if (typeof arg2 === 'function') {\n return { ...arg3,\n queryKey: arg1,\n queryFn: arg2\n };\n }\n\n return { ...arg2,\n queryKey: arg1\n };\n}\nfunction parseMutationArgs(arg1, arg2, arg3) {\n if (isQueryKey(arg1)) {\n if (typeof arg2 === 'function') {\n return { ...arg3,\n mutationKey: arg1,\n mutationFn: arg2\n };\n }\n\n return { ...arg2,\n mutationKey: arg1\n };\n }\n\n if (typeof arg1 === 'function') {\n return { ...arg2,\n mutationFn: arg1\n };\n }\n\n return { ...arg1\n };\n}\nfunction parseFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [{ ...arg2,\n queryKey: arg1\n }, arg3] : [arg1 || {}, arg2];\n}\nfunction parseMutationFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [{ ...arg2,\n mutationKey: arg1\n }, arg3] : [arg1 || {}, arg2];\n}\nfunction matchQuery(filters, query) {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n\n if (isQueryKey(queryKey)) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive();\n\n if (type === 'active' && !isActive) {\n return false;\n }\n\n if (type === 'inactive' && isActive) {\n return false;\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false;\n }\n\n if (typeof fetchStatus !== 'undefined' && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n\n if (predicate && !predicate(query)) {\n return false;\n }\n\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const {\n exact,\n fetching,\n predicate,\n mutationKey\n } = filters;\n\n if (isQueryKey(mutationKey)) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n\n if (exact) {\n if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n\n if (typeof fetching === 'boolean' && mutation.state.status === 'loading' !== fetching) {\n return false;\n }\n\n if (predicate && !predicate(mutation)) {\n return false;\n }\n\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey;\n return hashFn(queryKey);\n}\n/**\n * Default query keys hash function.\n * Hashes the value into a stable hash.\n */\n\nfunction hashQueryKey(queryKey) {\n return JSON.stringify(queryKey, (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val);\n}\n/**\n * Checks if key `b` partially matches with key `a`.\n */\n\nfunction partialMatchKey(a, b) {\n return partialDeepEqual(a, b);\n}\n/**\n * Checks if `b` partially matches with `a`.\n */\n\nfunction partialDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (typeof a !== typeof b) {\n return false;\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some(key => !partialDeepEqual(a[key], b[key]));\n }\n\n return false;\n}\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\n\nfunction replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n\n const array = isPlainArray(a) && isPlainArray(b);\n\n if (array || isPlainObject(a) && isPlainObject(b)) {\n const aSize = array ? a.length : Object.keys(a).length;\n const bItems = array ? b : Object.keys(b);\n const bSize = bItems.length;\n const copy = array ? [] : {};\n let equalItems = 0;\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n copy[key] = replaceEqualDeep(a[key], b[key]);\n\n if (copy[key] === a[key]) {\n equalItems++;\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n\n return b;\n}\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\n\nfunction shallowEqualObjects(a, b) {\n if (a && !b || b && !a) {\n return false;\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n} // Copied from: https://github.com/jonschlinkert/is-plain-object\n\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n } // If has modified constructor\n\n\n const ctor = o.constructor;\n\n if (typeof ctor === 'undefined') {\n return true;\n } // If has modified prototype\n\n\n const prot = ctor.prototype;\n\n if (!hasObjectPrototype(prot)) {\n return false;\n } // If constructor does not have an Object-specific method\n\n\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false;\n } // Most likely a plain Object\n\n\n return true;\n}\n\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isQueryKey(value) {\n return Array.isArray(value);\n}\nfunction isError(value) {\n return value instanceof Error;\n}\nfunction sleep(timeout) {\n return new Promise(resolve => {\n setTimeout(resolve, timeout);\n });\n}\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\n\nfunction scheduleMicrotask(callback) {\n sleep(0).then(callback);\n}\nfunction getAbortController() {\n if (typeof AbortController === 'function') {\n return new AbortController();\n }\n\n return;\n}\nfunction replaceData(prevData, data, options) {\n // Use prev data if an isDataEqual function is defined and returns `true`\n if (options.isDataEqual != null && options.isDataEqual(prevData, data)) {\n return prevData;\n } else if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data);\n }\n\n return data;\n}\n\nexport { difference, functionalUpdate, getAbortController, hashQueryKey, hashQueryKeyByOptions, isError, isPlainArray, isPlainObject, isQueryKey, isServer, isValidTimeout, matchMutation, matchQuery, noop, parseFilterArgs, parseMutationArgs, parseMutationFilterArgs, parseQueryArgs, partialDeepEqual, partialMatchKey, replaceAt, replaceData, replaceEqualDeep, scheduleMicrotask, shallowEqualObjects, sleep, timeUntilStale };\n//# sourceMappingURL=utils.mjs.map\n","'use client';\nimport * as React from 'react';\n\nconst defaultContext = /*#__PURE__*/React.createContext(undefined);\nconst QueryClientSharingContext = /*#__PURE__*/React.createContext(false); // If we are given a context, we will use it.\n// Otherwise, if contextSharing is on, we share the first and at least one\n// instance of the context across the window\n// to ensure that if React Query is used across\n// different bundles or microfrontends they will\n// all use the same **instance** of context, regardless\n// of module scoping.\n\nfunction getQueryClientContext(context, contextSharing) {\n if (context) {\n return context;\n }\n\n if (contextSharing && typeof window !== 'undefined') {\n if (!window.ReactQueryClientContext) {\n window.ReactQueryClientContext = defaultContext;\n }\n\n return window.ReactQueryClientContext;\n }\n\n return defaultContext;\n}\n\nconst useQueryClient = ({\n context\n} = {}) => {\n const queryClient = React.useContext(getQueryClientContext(context, React.useContext(QueryClientSharingContext)));\n\n if (!queryClient) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one');\n }\n\n return queryClient;\n};\nconst QueryClientProvider = ({\n client,\n children,\n context,\n contextSharing = false\n}) => {\n React.useEffect(() => {\n client.mount();\n return () => {\n client.unmount();\n };\n }, [client]);\n\n if (process.env.NODE_ENV !== 'production' && contextSharing) {\n client.getLogger().error(\"The contextSharing option has been deprecated and will be removed in the next major version\");\n }\n\n const Context = getQueryClientContext(context, contextSharing);\n return /*#__PURE__*/React.createElement(QueryClientSharingContext.Provider, {\n value: !context && contextSharing\n }, /*#__PURE__*/React.createElement(Context.Provider, {\n value: client\n }, children));\n};\n\nexport { QueryClientProvider, defaultContext, useQueryClient };\n//# sourceMappingURL=QueryClientProvider.mjs.map\n","'use client';\nimport * as React from 'react';\n\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\n\nconst QueryErrorResetBoundaryContext = /*#__PURE__*/React.createContext(createValue()); // HOOK\n\nconst useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext); // COMPONENT\n\nconst QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /*#__PURE__*/React.createElement(QueryErrorResetBoundaryContext.Provider, {\n value: value\n }, typeof children === 'function' ? children(value) : children);\n};\n\nexport { QueryErrorResetBoundary, useQueryErrorResetBoundary };\n//# sourceMappingURL=QueryErrorResetBoundary.mjs.map\n","'use client';\nimport * as React from 'react';\n\nconst IsRestoringContext = /*#__PURE__*/React.createContext(false);\nconst useIsRestoring = () => React.useContext(IsRestoringContext);\nconst IsRestoringProvider = IsRestoringContext.Provider;\n\nexport { IsRestoringProvider, useIsRestoring };\n//# sourceMappingURL=isRestoring.mjs.map\n","'use client';\nimport * as React from 'react';\nimport { shouldThrowError } from './utils.mjs';\n\nconst ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {\n if (options.suspense || options.useErrorBoundary) {\n // Prevent retrying failed query if the error boundary has not been reset yet\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nconst useClearResetErrorBoundary = errorResetBoundary => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nconst getHasError = ({\n result,\n errorResetBoundary,\n useErrorBoundary,\n query\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && shouldThrowError(useErrorBoundary, [result.error, query]);\n};\n\nexport { ensurePreventErrorBoundaryRetry, getHasError, useClearResetErrorBoundary };\n//# sourceMappingURL=errorBoundaryUtils.mjs.map\n","const ensureStaleTime = defaultedOptions => {\n if (defaultedOptions.suspense) {\n // Always set stale time when using suspense to prevent\n // fetching again when directly mounting after suspending\n if (typeof defaultedOptions.staleTime !== 'number') {\n defaultedOptions.staleTime = 1000;\n }\n }\n};\nconst willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nconst shouldSuspend = (defaultedOptions, result, isRestoring) => (defaultedOptions == null ? void 0 : defaultedOptions.suspense) && willFetch(result, isRestoring);\nconst fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).then(({\n data\n}) => {\n defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null);\n}).catch(error => {\n errorResetBoundary.clearReset();\n defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(undefined, error);\n});\n\nexport { ensureStaleTime, fetchOptimistic, shouldSuspend, willFetch };\n//# sourceMappingURL=suspense.mjs.map\n","'use client';\nimport * as React from 'react';\nimport { notifyManager } from '@tanstack/query-core';\nimport { useSyncExternalStore } from './useSyncExternalStore.mjs';\nimport { useQueryErrorResetBoundary } from './QueryErrorResetBoundary.mjs';\nimport { useQueryClient } from './QueryClientProvider.mjs';\nimport { useIsRestoring } from './isRestoring.mjs';\nimport { ensurePreventErrorBoundaryRetry, useClearResetErrorBoundary, getHasError } from './errorBoundaryUtils.mjs';\nimport { ensureStaleTime, shouldSuspend, fetchOptimistic } from './suspense.mjs';\n\nfunction useBaseQuery(options, Observer) {\n const queryClient = useQueryClient({\n context: options.context\n });\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const defaultedOptions = queryClient.defaultQueryOptions(options); // Make sure results are optimistically set in fetching state before subscribing or updating options\n\n defaultedOptions._optimisticResults = isRestoring ? 'isRestoring' : 'optimistic'; // Include callbacks in batch renders\n\n if (defaultedOptions.onError) {\n defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);\n }\n\n if (defaultedOptions.onSuccess) {\n defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);\n }\n\n if (defaultedOptions.onSettled) {\n defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);\n }\n\n ensureStaleTime(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);\n useClearResetErrorBoundary(errorResetBoundary);\n const [observer] = React.useState(() => new Observer(queryClient, defaultedOptions));\n const result = observer.getOptimisticResult(defaultedOptions);\n useSyncExternalStore(React.useCallback(onStoreChange => {\n const unsubscribe = isRestoring ? () => undefined : observer.subscribe(notifyManager.batchCalls(onStoreChange)); // Update result to make sure we did not miss any query updates\n // between creating the observer and subscribing to it.\n\n observer.updateResult();\n return unsubscribe;\n }, [observer, isRestoring]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n React.useEffect(() => {\n // Do not notify on updates because of changes in the options because\n // these changes should already be reflected in the optimistic result.\n observer.setOptions(defaultedOptions, {\n listeners: false\n });\n }, [defaultedOptions, observer]); // Handle suspense\n\n if (shouldSuspend(defaultedOptions, result, isRestoring)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n } // Handle error boundary\n\n\n if (getHasError({\n result,\n errorResetBoundary,\n useErrorBoundary: defaultedOptions.useErrorBoundary,\n query: observer.getCurrentQuery()\n })) {\n throw result.error;\n } // Handle result property usage tracking\n\n\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\n\nexport { useBaseQuery };\n//# sourceMappingURL=useBaseQuery.mjs.map\n","'use client';\nimport { parseQueryArgs, QueryObserver } from '@tanstack/query-core';\nimport { useBaseQuery } from './useBaseQuery.mjs';\n\nfunction useQuery(arg1, arg2, arg3) {\n const parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n return useBaseQuery(parsedOptions, QueryObserver);\n}\n\nexport { useQuery };\n//# sourceMappingURL=useQuery.mjs.map\n","'use client';\nimport { useSyncExternalStore as useSyncExternalStore$1 } from 'use-sync-external-store/shim/index.js';\n\nconst useSyncExternalStore = useSyncExternalStore$1;\n\nexport { useSyncExternalStore };\n//# sourceMappingURL=useSyncExternalStore.mjs.map\n","function shouldThrowError(_useErrorBoundary, params) {\n // Allow useErrorBoundary function to override throwing behavior on a per-error basis\n if (typeof _useErrorBoundary === 'function') {\n return _useErrorBoundary(...params);\n }\n\n return !!_useErrorBoundary;\n}\n\nexport { shouldThrowError };\n//# sourceMappingURL=utils.mjs.map\n","var util;\n(function (util) {\n util.assertEqual = (val) => val;\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array\n .map((val) => (typeof val === \"string\" ? `'${val}'` : val))\n .join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nvar objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nconst ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nconst getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then &&\n typeof data.then === \"function\" &&\n data.catch &&\n typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n\nconst ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nconst quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nclass ZodError extends Error {\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n get errors() {\n return this.issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n fieldErrors[sub.path[0]].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly equal to `\n : issue.inclusive\n ? `greater than or equal to `\n : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `less than or equal to`\n : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact\n ? `exactly`\n : issue.inclusive\n ? `smaller than or equal to`\n : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\n\nlet overrideErrorMap = errorMap;\nfunction setErrorMap(map) {\n overrideErrorMap = map;\n}\nfunction getErrorMap() {\n return overrideErrorMap;\n}\n\nconst makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message || errorMessage,\n };\n};\nconst EMPTY_PATH = [];\nfunction addIssueToContext(ctx, issueData) {\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nclass ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n syncPairs.push({\n key: await pair.key,\n value: await pair.value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (typeof value.value !== \"undefined\" || pair.alwaysSet) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nconst INVALID = Object.freeze({\n status: \"aborted\",\n});\nconst DIRTY = (value) => ({ status: \"dirty\", value });\nconst OK = (value) => ({ status: \"valid\", value });\nconst isAborted = (x) => x.status === \"aborted\";\nconst isDirty = (x) => x.status === \"dirty\";\nconst isValid = (x) => x.status === \"valid\";\nconst isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n\nvar errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message === null || message === void 0 ? void 0 : message.message;\n})(errorUtil || (errorUtil = {}));\n\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (this._key instanceof Array) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n if (typeof ctx.data === \"undefined\") {\n return { message: required_error !== null && required_error !== void 0 ? required_error : ctx.defaultError };\n }\n return { message: invalid_type_error !== null && invalid_type_error !== void 0 ? invalid_type_error : ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nclass ZodType {\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n }\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n var _a;\n const ctx = {\n common: {\n issues: [],\n async: (_a = params === null || params === void 0 ? void 0 : params.async) !== null && _a !== void 0 ? _a : false,\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params === null || params === void 0 ? void 0 : params.errorMap,\n async: true,\n },\n path: (params === null || params === void 0 ? void 0 : params.path) || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult)\n ? maybeAsyncResult\n : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\"\n ? refinementData(val, ctx)\n : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this, this._def);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[a-z][a-z0-9]*$/;\nconst ulidRegex = /[0-9A-HJKMNP-TV-Z]{26}/;\nconst uuidRegex = /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\nconst emailRegex = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst emojiRegex = /^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$/u;\nconst ipv4Regex = /^(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))$/;\nconst ipv6Regex = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\n// Adapted from https://stackoverflow.com/a/3143231\nconst datetimeRegex = (args) => {\n if (args.precision) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}\\\\.\\\\d{${args.precision}}Z$`);\n }\n }\n else if (args.precision === 0) {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}Z$`);\n }\n }\n else {\n if (args.offset) {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?(([+-]\\\\d{2}(:?\\\\d{2})?)|Z)$`);\n }\n else {\n return new RegExp(`^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(\\\\.\\\\d+)?Z$`);\n }\n }\n};\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nclass ZodString extends ZodType {\n constructor() {\n super(...arguments);\n this._regex = (regex, validation, message) => this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n /**\n * @deprecated Use z.string().min(1) instead.\n * @see {@link ZodString.min}\n */\n this.nonempty = (message) => this.min(1, errorUtil.errToObj(message));\n this.trim = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n this.toLowerCase = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n this.toUpperCase = () => new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n }\n //\n );\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch (_a) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n var _a;\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof (options === null || options === void 0 ? void 0 : options.precision) === \"undefined\" ? null : options === null || options === void 0 ? void 0 : options.precision,\n offset: (_a = options === null || options === void 0 ? void 0 : options.offset) !== null && _a !== void 0 ? _a : false,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options === null || options === void 0 ? void 0 : options.position,\n ...errorUtil.errToObj(options === null || options === void 0 ? void 0 : options.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n var _a;\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / Math.pow(10, decCount);\n}\nclass ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" ||\n (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null, min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" ||\n ch.kind === \"int\" ||\n ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = BigInt(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive\n ? input.data < check.value\n : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive\n ? input.data > check.value\n : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n var _a;\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: (_a = params === null || params === void 0 ? void 0 : params.coerce) !== null && _a !== void 0 ? _a : false,\n ...processCreateParams(params),\n });\n};\nclass ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n ...processCreateParams(params),\n });\n};\nclass ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: (params === null || params === void 0 ? void 0 : params.coerce) || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nclass ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nclass ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nclass ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nclass ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nclass ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nclass ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nclass ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nclass ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nclass ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n return (this._cached = { shape, keys });\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever &&\n this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") ;\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n syncPairs.push({\n key,\n value: await pair.value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n var _a, _b, _c, _d;\n const defaultError = (_c = (_b = (_a = this._def).errorMap) === null || _b === void 0 ? void 0 : _b.call(_a, issue, ctx).message) !== null && _c !== void 0 ? _c : ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: (_d = errorUtil.errToObj(message).message) !== null && _d !== void 0 ? _d : defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n util.objectKeys(mask).forEach((key) => {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n util.objectKeys(this.shape).forEach((key) => {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n });\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nclass ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return Object.keys(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else {\n return null;\n }\n};\nclass ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util\n .objectKeys(a)\n .filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date &&\n bType === ZodParsedType.date &&\n +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nclass ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\nclass ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nclass ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nclass ZodMap extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nclass ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nclass ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap,\n ctx.schemaErrorMap,\n getErrorMap(),\n errorMap,\n ].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n return OK(async (...args) => {\n const error = new ZodError([]);\n const parsedArgs = await this._def.args\n .parseAsync(args, params)\n .catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await fn(...parsedArgs);\n const parsedReturns = await this._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n return OK((...args) => {\n const parsedArgs = this._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = fn(...parsedArgs.data);\n const parsedReturns = this._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args\n ? args\n : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nclass ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nclass ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nclass ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (this._def.values.indexOf(input.data) === -1) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values) {\n return ZodEnum.create(values);\n }\n exclude(values) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)));\n }\n}\nZodEnum.create = createZodEnum;\nclass ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string &&\n ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (nativeEnumValues.indexOf(input.data) === -1) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nclass ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise &&\n ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise\n ? ctx.data\n : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nclass ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data);\n if (ctx.common.async) {\n return Promise.resolve(processed).then((processed) => {\n return this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n });\n }\n else {\n return this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc\n // effect: RefinementEffect<any>\n ) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return base;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema\n ._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx })\n .then((base) => {\n if (!isValid(base))\n return base;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({ status: status.value, value: result }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nclass ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nclass ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nclass ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\"\n ? params.default\n : () => params.default,\n ...processCreateParams(params),\n });\n};\nclass ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nclass ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nconst BRAND = Symbol(\"zod_brand\");\nclass ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nclass ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nconst custom = (check, params = {}, \n/*\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) => {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n var _a, _b;\n if (!check(data)) {\n const p = typeof params === \"function\"\n ? params(data)\n : typeof params === \"string\"\n ? { message: params }\n : params;\n const _fatal = (_b = (_a = p.fatal) !== null && _a !== void 0 ? _a : fatal) !== null && _b !== void 0 ? _b : true;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n ctx.addIssue({ code: \"custom\", ...p2, fatal: _fatal });\n }\n });\n return ZodAny.create();\n};\nconst late = {\n object: ZodObject.lazycreate,\n};\nvar ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nconst coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nconst NEVER = INVALID;\n\nvar z = /*#__PURE__*/Object.freeze({\n __proto__: null,\n defaultErrorMap: errorMap,\n setErrorMap: setErrorMap,\n getErrorMap: getErrorMap,\n makeIssue: makeIssue,\n EMPTY_PATH: EMPTY_PATH,\n addIssueToContext: addIssueToContext,\n ParseStatus: ParseStatus,\n INVALID: INVALID,\n DIRTY: DIRTY,\n OK: OK,\n isAborted: isAborted,\n isDirty: isDirty,\n isValid: isValid,\n isAsync: isAsync,\n get util () { return util; },\n get objectUtil () { return objectUtil; },\n ZodParsedType: ZodParsedType,\n getParsedType: getParsedType,\n ZodType: ZodType,\n ZodString: ZodString,\n ZodNumber: ZodNumber,\n ZodBigInt: ZodBigInt,\n ZodBoolean: ZodBoolean,\n ZodDate: ZodDate,\n ZodSymbol: ZodSymbol,\n ZodUndefined: ZodUndefined,\n ZodNull: ZodNull,\n ZodAny: ZodAny,\n ZodUnknown: ZodUnknown,\n ZodNever: ZodNever,\n ZodVoid: ZodVoid,\n ZodArray: ZodArray,\n ZodObject: ZodObject,\n ZodUnion: ZodUnion,\n ZodDiscriminatedUnion: ZodDiscriminatedUnion,\n ZodIntersection: ZodIntersection,\n ZodTuple: ZodTuple,\n ZodRecord: ZodRecord,\n ZodMap: ZodMap,\n ZodSet: ZodSet,\n ZodFunction: ZodFunction,\n ZodLazy: ZodLazy,\n ZodLiteral: ZodLiteral,\n ZodEnum: ZodEnum,\n ZodNativeEnum: ZodNativeEnum,\n ZodPromise: ZodPromise,\n ZodEffects: ZodEffects,\n ZodTransformer: ZodEffects,\n ZodOptional: ZodOptional,\n ZodNullable: ZodNullable,\n ZodDefault: ZodDefault,\n ZodCatch: ZodCatch,\n ZodNaN: ZodNaN,\n BRAND: BRAND,\n ZodBranded: ZodBranded,\n ZodPipeline: ZodPipeline,\n custom: custom,\n Schema: ZodType,\n ZodSchema: ZodType,\n late: late,\n get ZodFirstPartyTypeKind () { return ZodFirstPartyTypeKind; },\n coerce: coerce,\n any: anyType,\n array: arrayType,\n bigint: bigIntType,\n boolean: booleanType,\n date: dateType,\n discriminatedUnion: discriminatedUnionType,\n effect: effectsType,\n 'enum': enumType,\n 'function': functionType,\n 'instanceof': instanceOfType,\n intersection: intersectionType,\n lazy: lazyType,\n literal: literalType,\n map: mapType,\n nan: nanType,\n nativeEnum: nativeEnumType,\n never: neverType,\n 'null': nullType,\n nullable: nullableType,\n number: numberType,\n object: objectType,\n oboolean: oboolean,\n onumber: onumber,\n optional: optionalType,\n ostring: ostring,\n pipeline: pipelineType,\n preprocess: preprocessType,\n promise: promiseType,\n record: recordType,\n set: setType,\n strictObject: strictObjectType,\n string: stringType,\n symbol: symbolType,\n transformer: effectsType,\n tuple: tupleType,\n 'undefined': undefinedType,\n union: unionType,\n unknown: unknownType,\n 'void': voidType,\n NEVER: NEVER,\n ZodIssueCode: ZodIssueCode,\n quotelessJson: quotelessJson,\n ZodError: ZodError\n});\n\nexport { BRAND, DIRTY, EMPTY_PATH, INVALID, NEVER, OK, ParseStatus, ZodType as Schema, ZodAny, ZodArray, ZodBigInt, ZodBoolean, ZodBranded, ZodCatch, ZodDate, ZodDefault, ZodDiscriminatedUnion, ZodEffects, ZodEnum, ZodError, ZodFirstPartyTypeKind, ZodFunction, ZodIntersection, ZodIssueCode, ZodLazy, ZodLiteral, ZodMap, ZodNaN, ZodNativeEnum, ZodNever, ZodNull, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodParsedType, ZodPipeline, ZodPromise, ZodRecord, ZodType as ZodSchema, ZodSet, ZodString, ZodSymbol, ZodEffects as ZodTransformer, ZodTuple, ZodType, ZodUndefined, ZodUnion, ZodUnknown, ZodVoid, addIssueToContext, anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, coerce, custom, dateType as date, z as default, errorMap as defaultErrorMap, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, getErrorMap, getParsedType, instanceOfType as instanceof, intersectionType as intersection, isAborted, isAsync, isDirty, isValid, late, lazyType as lazy, literalType as literal, makeIssue, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, objectUtil, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, quotelessJson, recordType as record, setType as set, setErrorMap, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, util, voidType as void, z };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\tif (cachedModule.error !== undefined) throw cachedModule.error;\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"\" + {\"130\":\"790af22101938bf9218e\",\"183\":\"3cae9abc00c2f7da3804\",\"327\":\"c14b7919e4890997044d\",\"588\":\"25678fdec6763c0f1504\",\"675\":\"c3b925b94ecb41c48f1b\",\"697\":\"dc7d7e2887b08e0f7955\",\"707\":\"3c06af8c20cb17002ac6\",\"788\":\"d5c2e03a78ddcebcfef9\",\"1001\":\"f812be614430aaa0d303\",\"1041\":\"98d94737e49a7dd1bf48\",\"1058\":\"ad13eda9ed77ed804863\",\"1084\":\"ab6ddb38e11db6834d2c\",\"1087\":\"f94b6e7bf4b0273846f0\",\"1173\":\"2597508a4100c0903545\",\"1185\":\"bc8ee55f5e57164e2624\",\"1197\":\"1e734e8253b5c5b623ab\",\"1222\":\"66f62aa847726eddddb7\",\"1228\":\"14669c53f03265dc611e\",\"1301\":\"f9e7e3c081d443e75ab6\",\"1371\":\"3bac000fe61741172a78\",\"1378\":\"cad99ae53350227ed755\",\"1470\":\"51eb34b8cfa26c9504ba\",\"1490\":\"6aec52f32f1e61a496e8\",\"1492\":\"a40609b1042ff886413d\",\"1551\":\"3af10948a1bc31d5c370\",\"1585\":\"df99e136a6d780b8627e\",\"1640\":\"ba860ae72eb0a46c18ed\",\"1756\":\"0486c7c10ada7e2ddbc2\",\"1833\":\"5adf6b7fd1c2ea892fcb\",\"1911\":\"72c3be45ba3816c501c9\",\"2269\":\"8ceab9f601911b6a4496\",\"2277\":\"ff5b99cfd3175a0de311\",\"2356\":\"956e02f5d148c59d4838\",\"2365\":\"c33da7815887f09a5d15\",\"2406\":\"894a92a13ac6558e0a08\",\"2478\":\"756296139fada7f66a0d\",\"2747\":\"2d8a34c45cca0b05f455\",\"2749\":\"1f0b5c3c408add59c5de\",\"2846\":\"9aae56da34131b016186\",\"2864\":\"f61130793828025a1671\",\"2963\":\"5e2e94683e27a37d76ea\",\"2970\":\"d83cf0dff4f0d2be62ac\",\"3015\":\"424dd0750019dd2ba2bc\",\"3056\":\"2f8552259017a5746990\",\"3122\":\"c892a889cdac3db9bbd4\",\"3132\":\"62f2153c4047767f6806\",\"3157\":\"4eb254834a207f799b9b\",\"3197\":\"9c1c6097977f9236db5f\",\"3228\":\"a7b32df807c2e1da5d68\",\"3319\":\"08db064c575d92954627\",\"3339\":\"76774d8287744d8b8b53\",\"3386\":\"3d75405bfdf98136b18f\",\"3411\":\"395f6f0ffe140494ace4\",\"3438\":\"ec51eb9069f64888dcf7\",\"3455\":\"1782e69d9c0e4c48c0d0\",\"3653\":\"5f3399cdb0e629365c51\",\"3682\":\"a9423a76547442e1fcce\",\"3838\":\"d2f37686c155d70dd972\",\"3892\":\"daa9a171a37ff975eada\",\"3943\":\"64a6efca8203cca08553\",\"4001\":\"f09efb672036968fb512\",\"4078\":\"04b37da67a9c29da9a5f\",\"4098\":\"71cee083f377889db92b\",\"4122\":\"77446bef3195b015f040\",\"4147\":\"f6137c76e603addc0adb\",\"4422\":\"a3b67f4360ded6c0feeb\",\"4551\":\"70fcb2ccd2e5b2a34be8\",\"4590\":\"f307d68b4f37598a2d52\",\"4594\":\"fdaa83083cac55af267e\",\"4608\":\"6a62b68416e1365e89bd\",\"4649\":\"8681420f85fbce248063\",\"4703\":\"293147a7e6c87eeb2f57\",\"5064\":\"6061f83df8cb4ba5bacb\",\"5272\":\"65e8a60714abcc85d972\",\"5351\":\"8c0ac2c10891a8af63e4\",\"5542\":\"ffb57f05ff3a2086f5ca\",\"5552\":\"4a56db18562fccdfa614\",\"5645\":\"73677c5c9eae1e4c0ed9\",\"5753\":\"2aa2f35e3e64cedf6aa1\",\"5883\":\"61d2226f6fcf30b4380c\",\"5909\":\"3a8f726fd089b4433709\",\"5927\":\"c071803d7bb13c590a69\",\"6013\":\"e38416f9842638bb6e0b\",\"6064\":\"85c6f48d9505d31f9ceb\",\"6232\":\"ce70e711e872e1dc668a\",\"6296\":\"5da483b93b2e4a07676c\",\"6311\":\"a659f31c8f40948aeebb\",\"6335\":\"1ac5526514c4666c5bbb\",\"6357\":\"5c290872f68773ca4e15\",\"6379\":\"6d415d5594bfa297301e\",\"6440\":\"4ccb0a3fff3320ad96da\",\"6446\":\"ec64ab5f03fb89b5d6bb\",\"6507\":\"00be7802038170c847af\",\"6540\":\"3579edf5d669ff877ea8\",\"6598\":\"6d53d1eac2fbca3c15dd\",\"6621\":\"56cf0dcd4b81f20d9b72\",\"6724\":\"38da1f2c85b8c4cbd2d2\",\"6809\":\"f798773693c4a3e8ef00\",\"6820\":\"3407c4f61b3c978d3d86\",\"6841\":\"94a67b9e58eef0f855a6\",\"6978\":\"c01b282b977b9ca8592a\",\"7004\":\"fd9daa39bd79cab84ffa\",\"7029\":\"76b6b13bf400daef6cfc\",\"7202\":\"29de75d991aee26ecf03\",\"7243\":\"44ddf07749151ff0c6e1\",\"7428\":\"0b066aefe46ac632f1e5\",\"7435\":\"75a15add0d6f94af4fec\",\"7487\":\"63e7a1a90c1f9f96e371\",\"7562\":\"9bd7a8b2d61cfa5760a4\",\"7622\":\"c8e2b84d31f426fd70be\",\"7629\":\"29631133b679bcacb0f5\",\"7648\":\"42dfe312e254c4b9d41e\",\"7688\":\"3f7ddd7379d2f5ba59f8\",\"7725\":\"a60731024fdb140ac4b6\",\"7926\":\"44b9f4302ac6566085d1\",\"7939\":\"34381c44e1ebaea7a290\",\"7943\":\"d088f3d7985bb985c474\",\"7974\":\"0c95bd29de8ffc0313c2\",\"8109\":\"3421d098618d0e02e101\",\"8187\":\"58ae7a9f52109db96d4c\",\"8315\":\"e7cd7dfd8d0cbb050af7\",\"8395\":\"b2a4dc862eebb5f60622\",\"8417\":\"5a09b8bffd43647283ee\",\"8479\":\"9f13c7b0debe315216a2\",\"8497\":\"9c3ab3ff2576744a98f8\",\"8527\":\"8f9d950e04e6432fb7a3\",\"8533\":\"8d96c060788df2741a89\",\"8582\":\"aa5c83a6b000d5c1fda0\",\"8691\":\"f29e3fc6f1e4e903a5f8\",\"8781\":\"17645efa36c3841c20a2\",\"8842\":\"dbfa213131cc2f9d0ff0\",\"8931\":\"08beb2f7c3bfafc6b93f\",\"9050\":\"63e4acc752b44166583a\",\"9114\":\"325fc7ce04ab2b2b8ff8\",\"9206\":\"677d79332e2bd0598b39\",\"9335\":\"bfddee762bb21e378229\",\"9452\":\"6a862143381d48cb3f04\",\"9477\":\"6f1db71fac56a1d4c0c9\",\"9537\":\"e18356eeb99e3ee58bfa\",\"9644\":\"c8c959232228123fa4ac\",\"9651\":\"644e5d90d4f6ec2c2ca6\",\"9666\":\"27ccca701d48c4e0bdf9\",\"9846\":\"9d7958e7529d13681285\",\"9925\":\"6b69c5a0a3782d551e75\"}[chunkId] + \".js?3.11.5.0f839ec2e.1741817639695\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".\" + {\"697\":\"36dfac4c6f9bdc7f7359\",\"1911\":\"14fd216641372b9a7c30\",\"2749\":\"9c37ad50402b217f25d9\",\"3015\":\"e7f6c6ca1935946e86dc\",\"3132\":\"915082154c70880354f9\",\"3386\":\"cc32830e5871ed0d977d\",\"3411\":\"dc2714d26256656bbb0f\",\"4649\":\"a8a4f1d644890dc34036\",\"5753\":\"b0c58f5182b688423fcd\",\"5883\":\"dcdd217df1f8846e4a93\",\"7004\":\"a43ca6674e8da8402922\",\"7243\":\"2eb322e59d3ecd6fb158\",\"8691\":\"f7f06cf89c8c34e4751f\",\"9050\":\"87304a197c09b7a99bed\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"mono-repo:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"./assets/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"697\":1,\"1911\":1,\"2749\":1,\"3015\":1,\"3132\":1,\"3386\":1,\"3411\":1,\"4649\":1,\"5753\":1,\"5883\":1,\"7004\":1,\"7243\":1,\"8691\":1,\"9050\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t3524: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^((27|46)49|3132|697|9050)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmono_repo\"] = self[\"webpackChunkmono_repo\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// Setup everything needed (Globals - 3rd party or otherwise to get the app ready to initialize)\nimport {getPrefixedLogger} from '@netx/core-next/instance/logger';\nimport {initializeI18n} from '@netx/core-next/locales';\nimport './bootstrap';\nimport css from './css';\n\nconst logger = getPrefixedLogger('init');\n\n// After i18n (success or fail) and custom css properties we will load the app\nfunction loadApp() {\n\t// Initialize core\n\timport(/* webpackChunkName: \"@netx/core\" */ '@netx/core').then((Core) => {\n\t\tCore.default.initialize();\n\t});\n}\n\nlogger.debug('initializing css and i18n');\n\nPromise.all([\n\t// Load custom CSS before loading in core\n\tcss(),\n\t// Load i18n and base locales before loading in core\n\tinitializeI18n(),\n])\n\t.then(\n\t\t() => {},\n\t\t(err) => {\n\t\t\tlogger.error('failed to initialize css or i18n', err.message);\n\t\t},\n\t)\n\t.finally(() => {\n\t\tlogger.debug('initialized');\n\t\tloadApp();\n\t});\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","protoProps","staticProps","_defineProperty","value","_objectSpread","arguments","source","ownKeys","keys","getOwnPropertySymbols","concat","filter","sym","getOwnPropertyDescriptor","forEach","_slicedToArray","arr","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arrayWithoutHoles","Array","isArray","arr2","_iterableToArray","iter","toString","call","from","_arr","_n","_d","_e","undefined","_s","_i","next","done","push","err","_nonIterableSpread","asyncTimer","noop","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","mark","measure","window","document","MutationObserver","performance","e","_ref$userAgent","_ref","navigator","userAgent","WINDOW","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","documentElement","head","addEventListener","createElement","IS_IE","indexOf","NAMESPACE_IDENTIFIER","UNITS_IN_GRID","DEFAULT_FAMILY_PREFIX","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_FA_PSEUDO_ELEMENT_PENDING","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","MUTATION_APPROACH_ASYNC","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","PREFIX_TO_STYLE","fas","far","fal","fad","fab","fa","STYLE_TO_PREFIX","solid","regular","light","duotone","brands","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","normal","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","GROUP","SWAP_OPACITY","PRIMARY","SECONDARY","RESERVED_CLASSES","map","n","initial","FontAwesomeConfig","getAttrConfig","attr","element","querySelector","getAttribute","coerce","val","attrs","_ref2","_config","familyPrefix","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","config","w","styles","hooks","shims","namespace","functions","listener","removeEventListener","loaded","fn","domready","setTimeout","doScroll","test","readyState","PENDING","SETTLED","FULFILLED","REJECTED","NOOP","isNode","g","process","emit","asyncSetTimer","setImmediate","asyncQueue","asyncFlush","asyncCall","callback","arg","invokeResolver","resolver","promise","resolvePromise","resolve","rejectPromise","reason","reject","invokeCallback","subscriber","owner","settled","_state","_data","then","handleThenable","resolved","fulfill","publishFulfillment","publishRejection","publish","_then","_handled","notifyRejectionHandled","P","onFulfillment","onRejection","fulfilled","rejected","catch","all","promises","results","remaining","index","race","picked","Promise","d","meaninglessTransform","size","x","y","rotate","flipX","flipY","isReserved","name","insertCss","css","style","setAttribute","innerHTML","headChildren","childNodes","beforeChild","child","tagName","toUpperCase","insertBefore","idPool","nextUniqueId","id","Math","random","toArray","array","classArray","node","classList","split","getIconName","cls","parts","prefix","iconName","slice","join","htmlEscape","str","replace","joinAttributes","attributes","reduce","acc","attributeName","trim","joinStyles","styleName","transformIsMeaningful","transform","transformForSvg","containerWidth","iconWidth","outer","innerTranslate","innerScale","innerRotate","inner","path","transformForCss","_ref2$width","width","_ref2$height","height","_ref2$startCentered","startCentered","ALL_SPACE","fillBlack","abstract","force","fill","deGroup","tag","children","makeIconMasking","main","mask","mainWidth","mainPath","icon","maskWidth","maskPath","trans","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","maskId","clipId","maskTag","maskUnits","maskContentUnits","defs","makeIconStandard","styleString","asIcon","found","offset","asSymbol","symbol","makeInlineSvgAbstract","params","_params$icons","icons","title","extra","_params$watchable","watchable","widthClass","ceil","attrClass","c","classes","content","class","role","xmlns","viewBox","args","makeLayersTextAbstract","_params$watchable2","noop$1","p","preamble","end","perf","begin","bindInternal4","func","thisContext","a","b","subject","initialValue","result","toHex","unicode","charCodeAt","defineIcons","_params$skipHooks","skipHooks","normalized","addPack","_byUnicode","_byLigature","_byOldName","build","lookup","reducer","o","ligatures","ligature","hasRegular","shim","oldName","byUnicode","byLigature","byOldName","styles$1","emptyCanonicalIcon","rest","getCanonicalIcon","values","autoFetchSvg","iconFromMapping","mapping","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","noop$2","isWatched","getMutator","mutators","mutator","mutation","newOuterHTML","parentNode","outerHTML","toLowerCase","newNode","replaceChild","nest","forSvg","RegExp","splitClasses","match","toSvg","toNode","newInnerHTML","performOperationSync","op","perform","mutations","callbackFunction","frame","requestAnimationFrame","disabled","disableObservation","enableObservation","mo","observe","options","treeCallback","nodeCallback","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","objects","mutationRecord","type","addedNodes","_getCanonicalIcon","childList","characterData","subtree","styleParser","prop","classParser","existingPrefix","existingIconName","innerText","parseTransformString","transformString","first","isNaN","parseFloat","transformParser","symbolParser","attributesParser","extraAttributes","maskParser","blankMeta","parseMeta","_classParser","extraClasses","extraStyles","MissingIcon","error","message","stack","create","Error","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","RING","OPACITY_ANIMATE","missing","cx","cy","r","opacity","styles$2","asFoundIcon","vectorData","_icon$slice2","findIcon","styles$3","generateSvgReplacementMutation","nodeMeta","generateLayersText","computedFontSize","parseInt","getComputedStyle","fontSize","boundingClientRect","getBoundingClientRect","generateMutation","onTree","root","htmlClassList","hclAdd","suffix","add","hclRemove","remove","prefixes","prefixesDomQuery","candidates","querySelectorAll","console","resolvedMutations","onNode","replaceForPosition","position","pendingAttribute","alreadyProcessedPseudoElement","fontFamily","getPropertyValue","fontWeight","removeChild","substr","iconIdentifier","meta","firstChild","appendChild","removeAttribute","processable","operations","baseStyles","dfp","drc","fp","rc","s","dPatt","customPropPatt","rPatt","ensureCss","_cssInserted","apiObject","abstractCreator","get","container","html","findIconDefinition","iconLookup","_iconLookup$prefix","library","definitions","resolveIcons","maybeIconDefinition","iconDefinition","Library","_this","_len","_key","additions","_pullDefinitions","definition","_normalized$key","dom","i2svg","_params$node","_params$callback","watch","autoReplaceSvgRoot","autoReplace","parse","_params$transform","_params$symbol","_params$mask","_params$title","_params$classes","_params$attributes","_params$styles","api","_params$autoReplaceSv","faAdjust","faAngleDown","faAngleLeft","faAngleRight","faAngleUp","faArchive","faArrowAltCircleDown","faArrowAltCircleUp","faArrowCircleDown","faArrowCircleLeft","faArrowDown","faArrowRight","faArrowToBottom","faArrowsAlt","faBars","faBolt","faBook","faBookMedical","faCalendar","faCalendarAlt","faCalendarMinus","faCalendarPlus","faCalendarTimes","faCaretDown","faCaretLeft","faCaretRight","faCaretUp","faChartPie","faCheck","faCheckCircle","faCheckSquare","faChevronLeft","faChevronRight","faClipboard","faClipboardCheck","faClipboardList","faClock","faClone","faClosedCaptioning","faCloud","faCloudDownload","faCloudDownloadAlt","faCloudUpload","faCloudUploadAlt","faCode","faCog","faCogs","faCompress","faCopy","faCube","faDownload","faEllipsisH","faEllipsisV","faEmptySet","faEnvelope","faEquals","faExclamationCircle","faExclamationTriangle","faExpand","faExpandArrows","faExpandArrowsAlt","faExternalLink","faExternalLinkAlt","faEye","faEyeSlash","faFile","faFileAlt","faFileCsv","faFileExclamation","faFileExport","faFilePdf","faFileSearch","faFilm","faFolder","faFolderOpen","faFolderPlus","faGlobe","faHammer","faHistory","faHome","faICursor","faImage","faImages","faInbox","faInboxIn","faInboxOut","faKey","faLifeRing","faLink","faList","faListUl","faLock","faLongArrowAltDown","faLongArrowAltLeft","faLongArrowAltRight","faMinus","faMinusCircle","faMousePointer","faPalette","faPaperPlane","faPause","faPencil","faPencilAlt","faPlay","faPlayCircle","faPlus","faPlusCircle","faPowerOff","faQuestion","faQuestionCircle","faRecycle","faRedo","faRedoAlt","faSave","faSearch","faSearchMinus","faSearchPlus","faShare","faSignIn","faSignInAlt","faSignOut","faSignOutAlt","faSlidersH","faStar","faStop","faSyncAlt","faTable","faTablet","faTh","faThLarge","faThList","faTimes","faTimesCircle","faTrash","faTrashAlt","faUndo","faUndoAlt","faUnlock","faUpload","faUser","faUserCircle","faUserPlus","faUserShield","faUserTimes","faUsers","faUsersCog","faUsersMedical","faVolumeDown","faVolumeUp","faWandMagic","compileSchema","Cache","SchemaObject","stableStringify","formats","rules","$dataMetaSchema","util","module","exports","Ajv","validate","compile","addSchema","addMetaSchema","validateSchema","getSchema","removeSchema","addFormat","errorsText","_addSchema","_compile","compileAsync","customKeyword","addKeyword","getKeyword","removeKeyword","validateKeyword","errorClasses","ValidationError","Validation","MissingRefError","MissingRef","META_SCHEMA_ID","META_IGNORE_OPTIONS","META_SUPPORT_DATA","opts","_opts","copy","setLogger","_schemas","_refs","_fragments","_formats","format","_cache","cache","_loadingSchemas","_compilations","RULES","_getId","chooseGetId","loopRequired","Infinity","errorDataPath","_errorDataPathProperty","serialize","_metaOpts","getMetaSchemaOptions","addInitialFormats","keywords","addInitialKeywords","addDefaultMetaSchema","nullable","metaSchema","addInitialSchemas","schemaKeyRef","data","v","schemaObj","valid","$async","errors","schema","_meta","_skipValidation","checkUnique","normalizeId","skipValidation","throwOrLogError","$schema","defaultMeta","logger","warn","self","keyRef","_getSchemaObj","_getSchemaFragment","ref","res","baseId","fragment","_removeAllSchemas","clear","del","cacheKey","schemas","regex","shouldAddSchema","recursiveMeta","cached","addUsedSchema","willValidate","localRefs","ids","put","currentOpts","compiling","callValidate","refs","refVal","_validate","apply","schemaId","_get$IdOrId","_get$Id","$id","separator","dataVar","text","dataPath","$data","$dataSchema","optsSchemas","keyword","metaOpts","log","loadSchema","loadMetaSchemaOf","_compileAsync","sch","$ref","loadMissingSchema","missingSchema","added","missingRef","schemaPromise","removePromise","ajv","validation","url","fullPath","errorSubclass","Subclass","DATE","DAYS","TIME","HOSTNAME","URI","URIREF","URITEMPLATE","URL","UUID","JSON_POINTER","JSON_POINTER_URI_FRAGMENT","RELATIVE_JSON_POINTER","mode","isLeapYear","year","date","matches","month","day","time","full","hour","minute","second","timeZone","fast","uri","email","hostname","ipv4","ipv6","uuid","date_time","DATE_TIME_SEPARATOR","dateTime","NOT_URI_FRAGMENT","Z_ANCHOR","validateGenerator","ucs2length","equal","patterns","patternsHash","defaults","defaultsHash","customRules","checkCompiling","compilation","localCompile","cv","sourceCode","endCompiling","_schema","_root","isRoot","isTop","schemaPath","errSchemaPath","errorPath","resolveRef","usePattern","useDefault","useCustomRule","vars","refValCode","patternCode","defaultCode","customRuleCode","processCode","makeValidate","code","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","localSchema","inlineRef","inlineRefs","replaceLocalRef","removeLocalRef","refId","inline","regexStr","toQuotedString","valueStr","rule","parentSchema","it","deps","dependencies","every","hasOwnProperty","macro","compIndex","splice","statement","traverse","resolveSchema","refPath","_getFullPath","getFullPath","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","resolveIds","PREVENT_SCOPE_CHANGE","toHash","part","unescapeFragment","SIMPLE_INLINED","limit","checkNoRef","countKeys","item","count","normalize","TRAILING_SLASH_HASH","baseIds","fullPaths","allKeys","jsonPtr","rootSchema","parentJsonPtr","parentKeyword","keyIndex","escapeFragment","ruleModules","ALL","KEYWORDS","TYPES","types","group","implKeywords","k","implements","$comment","custom","len","pos","to","checkDataType","dataType","strictNumbers","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","t","object","null","number","integer","coerceToTypes","getProperty","escapeQuotes","varOccurences","varReplace","schemaHasRules","schemaHasRulesExcept","schemaUnknownRules","getPathExpr","getPath","getData","unescapeJsonPointer","escapeJsonPointer","COERCE_TO_TYPES","optionCoerceTypes","hash","IDENTIFIER","SINGLE_QUOTE","expr","exceptKeyword","currentPath","jsonPointers","isNumber","joinPaths","lvl","paths","jsonPointer","up","segments","segment","decodeURIComponent","encodeURIComponent","keywordsJsonPointers","JSON","stringify","j","anyOf","simpleTypes","statements","not","required","properties","items","modifying","async","const","$keyword","$ruleType","$errorKeyword","$schemaValue","out","$lvl","level","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","$breakOnError","allErrors","$isData","dataPathArr","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opExpr","$opStr","$$outStack","createErrors","messages","verbose","__err","pop","compositeRule","$it","$closingBraces","$nextValid","$currentBaseId","$allSchemasEmpty","arr1","$sch","$i","l1","strictKeywords","$valid","$errs","$wasComposite","$idx","$dataNxt","$nextData","$nonEmptySchema","$passData","$code","$compile","$inline","$macro","$ruleValidate","$validateCode","$rule","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","passContext","$parentData","$parentDataProperty","def_callRuleValidate","def_customError","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$propertyKey","$prop","$useData","$propertyPath","$missingProperty","i2","l2","$vSchema","$unknownFormats","unknownFormats","$allowUnknown","$format","$isObject","$formatType","$formatRef","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","allOf","contains","maximum","minimum","maxItems","minItems","maxLength","minLength","maxProperties","minProperties","multipleOf","oneOf","pattern","propertyNames","uniqueItems","$additionalItems","additionalItems","$currErrSchemaPath","multipleOfPrecision","$allErrorsOption","$prevValid","$passingSchemas","$regexp","$key","$dataProperties","$schemaKeys","notProto","$pProperties","patternProperties","$pPropertyKeys","$aProperties","additionalProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","i1","$pProperty","$additionalProperty","$useDefaults","useDefaults","arr3","i3","l3","$hasDefault","default","arr4","i4","l4","$invalidName","$refCode","$refVal","$message","missingRefs","__callValidate","$propertySch","$loopRequired","$itemType","$typeIsArray","$method","$refKeywords","$unknownKwd","$keywordsMsg","$top","rootId","strictDefaults","$defaultMsg","$closingBraces1","$closingBraces2","$typeSchema","extendRefs","coerceTypes","$coerceToTypes","$rulesGroup","$shouldUseGroup","$dataType","$coerced","$type","arr5","i5","l5","$shouldUseRule","$ruleImplementsSomeKeyword","impl","definitionSchema","_addRule","ruleGroup","rg","throwError","_validateKeyword","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","Cancel","onCanceled","requestData","requestHeaders","headers","responseType","cancelToken","unsubscribe","signal","isFormData","request","XMLHttpRequest","auth","username","password","unescape","Authorization","btoa","baseURL","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","open","method","paramsSerializer","timeout","onreadystatechange","responseURL","onabort","onerror","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","xsrfHeaderName","setRequestHeader","isUndefined","onDownloadProgress","onUploadProgress","upload","cancel","abort","subscribe","aborted","send","bind","Axios","mergeConfig","createInstance","defaultConfig","context","extend","instanceConfig","axios","CancelToken","isCancel","VERSION","spread","isAxiosError","__CANCEL__","executor","token","_listeners","l","onfulfilled","_resolve","throwIfRequested","InterceptorManager","dispatchRequest","validator","validators","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","responseInterceptorChain","chain","shift","newConfig","onFulfilled","onRejected","getUri","handlers","use","eject","h","isAbsoluteURL","combineURLs","requestedURL","enhanceError","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","toJSON","description","fileName","lineNumber","columnNumber","config1","config2","getMergedValue","isPlainObject","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","stringifySafely","rawValue","parser","encoder","isString","getDefaultAdapter","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","encode","serializedParams","isDate","toISOString","hashmarkIndex","relativeURL","write","expires","domain","secure","cookie","Date","toGMTString","now","payload","originURL","msie","urlParsingNode","resolveURL","href","protocol","host","search","port","pathname","charAt","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","line","thing","deprecatedWarnings","allowUnknown","opt","version","formatMessage","desc","ArrayBuffer","isView","getPrototypeOf","isFunction","pipe","product","assignValue","stripBOM","dateLongFormatter","formatLong","timeLongFormatter","dateTimeLongFormatter","dateTimeFormat","matchResult","datePattern","timePattern","MILLISECONDS_IN_MINUTE","getDateMillisecondsPart","getTime","getTimezoneOffsetInMilliseconds","dirtyDate","baseTimezoneOffset","getTimezoneOffset","setSeconds","millisecondsPartOfTimezoneOffset","hasNegativeUTCOffset","startOfUTCISOWeekYear","requiredArgs","getUTCISOWeekYear","fourthOfJanuary","setUTCFullYear","setUTCHours","startOfUTCISOWeek","MILLISECONDS_IN_WEEK","getUTCISOWeek","toDate","round","diff","getUTCFullYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCWeekYear","dirtyOptions","locale","localeFirstWeekContainsDate","firstWeekContainsDate","defaultFirstWeekContainsDate","toInteger","getUTCWeekYear","firstWeek","startOfUTCWeek","getUTCWeek","firstWeekOfNextYear","firstWeekOfThisYear","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","input","weekStartsOn","getUTCDay","setUTCDate","getUTCDate","localeWeekStartsOn","defaultWeekStartsOn","dirtyNumber","NaN","Number","floor","isValid","addLeadingZeros","targetLength","sign","output","abs","signedYear","M","getUTCMonth","String","getUTCHours","H","m","getUTCMinutes","getUTCSeconds","S","numberOfDigits","milliseconds","getUTCMilliseconds","pow","MILLISECONDS_IN_DAY","getUTCDayOfYear","timestamp","setUTCMonth","difference","dayPeriodEnum","midnight","noon","morning","afternoon","evening","night","formatTimezoneShort","dirtyDelimiter","absOffset","hours","minutes","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","G","localize","era","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","weekYear","R","u","Q","quarter","q","L","week","I","isoWeek","D","dayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","B","K","X","_localize","timezoneOffset","originalDate","_originalDate","O","z","T","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","utcDate","subMilliseconds","formatterOptions","substring","firstCharacter","longFormatter","longFormatters","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isBefore","dirtyDateToCompare","dateToCompare","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","formatDistance","addSuffix","comparison","buildFormatLongFn","defaultWidth","timeFormats","long","medium","short","dateTimeFormats","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","formatRelative","_date","_baseDate","_options","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","quarterValues","narrow","abbreviated","wide","monthValues","dayValues","dayPeriodValues","am","pm","formattingDayPeriodValues","_dirtyOptions","rem100","buildMatchFn","dirtyString","string","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","findIndex","findKey","valueCallback","predicate","matchEraPatterns","parseEraPatterns","any","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","buildMatchPatternFn","parseResult","parsePattern","dirtyObject","property","setUTCDay","dirtyDay","dayIndex","remainder","setUTCISODay","setUTCISOWeek","dirtyISOWeek","setUTCWeek","dirtyWeek","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_SECOND","numericPatterns","hour23h","hour24h","hour11h","hour12h","singleDigit","twoDigits","threeDigits","fourDigits","anyDigitsSigned","singleDigitSigned","twoDigitsSigned","threeDigitsSigned","fourDigitsSigned","timezonePatterns","basicOptionalMinutes","basic","basicOptionalSeconds","extended","extendedOptionalSeconds","parseNumericPattern","parseTimezonePattern","seconds","parseAnyDigitsSigned","parseNDigits","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","priority","set","flags","incompatibleTokens","isTwoDigitYear","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","subPriority","wholeWeekDays","isPM","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","timestampIsSet","_token","TIMEZONE_UNIT_PRIORITY","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","dateString","formatString","subFnOptions","setters","dateToSystemTimezone","tokens","usedTokens","incompatibleToken","usedToken","fullToken","uniquePrioritySetters","setter","sort","setterArray","convertedDate","setFullYear","setHours","DEFAULT_ADDITIONAL_DIGITS","dateTimeDelimiter","timeZoneDelimiter","timezone","dateRegex","timeRegex","timezoneRegex","parseISO","argument","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","parseDate","restDateString","parseTime","parseTimezone","timeString","exec","captures","century","isWeekDate","parseDateUnit","dayOfISOWeekYear","validateDayOfYearDate","max","parseTimeUnit","timezoneString","isoWeekYear","daysInMonths","validateDate","validateWeekDate","_year","validateTime","validateTimezone","_hours","addMilliseconds","dirtyAmount","argStr","___EXPOSE_LOADER_IMPORT___","___EXPOSE_LOADER_GLOBAL_THIS___","globalThis","valueOf","cmp","cycles","f","seen","isFinite","seenIndex","doccy","topLevel","minDoc","win","exportName","assign","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","setTimeoutContext","bindFn","invokeArrayArg","each","deprecate","deprecationMessage","nextKey","dest","src","inherit","base","childP","baseP","_super","boolOrFn","ifUndefined","val1","val2","addEventListeners","handler","splitStr","removeEventListeners","hasParent","parent","inStr","find","inArray","findByKey","uniqueArray","prefixed","camelProp","_uniqueId","uniqueId","getWindowForElement","doc","ownerDocument","defaultView","parentWindow","MOBILE_REGEX","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_PEN","INPUT_TYPE_MOUSE","INPUT_TYPE_KINECT","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","Input","manager","inputTarget","domHandler","ev","enable","init","createInputInstance","Type","inputClass","PointerEventInput","TouchInput","TouchMouseInput","MouseInput","inputHandler","eventType","pointersLen","pointers","changedPointersLen","changedPointers","isFirst","isFinal","session","computeInputData","recognize","prevInput","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","center","getCenter","timeStamp","deltaTime","angle","getAngle","distance","getDistance","computeDeltaXY","offsetDirection","getDirection","deltaX","deltaY","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","scale","getScale","rotation","getRotation","maxPointers","computeIntervalInputData","srcEvent","offsetDelta","prevDelta","velocity","velocityX","velocityY","direction","last","lastInterval","clientX","clientY","p1","p2","sqrt","atan2","PI","start","evEl","evTarget","evWin","destroy","MOUSE_INPUT_MAP","mousedown","mousemove","mouseup","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","pressed","button","which","pointerType","POINTER_INPUT_MAP","pointerdown","pointermove","pointerup","pointercancel","pointerout","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","store","pointerEvents","MSPointerEvent","PointerEvent","removePointer","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchstart","touchmove","touchend","touchcancel","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","started","normalizeSingleTouches","touches","changed","changedTouches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","targetIds","getTouches","allTouches","identifier","targetTouches","changedTargetTouches","touch","DEDUP_TIMEOUT","DEDUP_DISTANCE","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","dx","dy","inputEvent","inputData","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","getTouchActionProps","TouchAction","cleanTouchActions","actions","hasPanX","hasPanY","touchMap","cssSupports","CSS","supports","compute","update","touchAction","recognizers","recognizer","getTouchAction","preventDefaults","prevented","preventDefault","hasNone","isTapPointer","isTapMovement","isTapTouchTime","preventSrc","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","STATE_FAILED","Recognizer","state","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","_input","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","preset","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","event","additionalEvent","tryEmit","canEmit","inputDataClone","reset","attrTest","optionPointers","isRecognized","threshold","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","clearTimeout","taps","interval","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","domEvents","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","STOP","FORCED_STOP","oldCssProps","toggleCssProps","triggerDomEvent","gestureEvent","createEvent","initEvent","gesture","dispatchEvent","stop","stopped","curRecognizer","existing","on","events","off","Tap","Pan","Swipe","Pinch","Rotate","Press","freeGlobal","_extends","tName","i18nName","handleName","selectorAttr","targetAttr","optionsAttr","useOptionsAttr","parseDefaultValueFromContent","i18next","$","ele","extendDefault","prepend","append","dataAttr","translated","defaultValue","targetSelector","clone","lng","handle","elements","global","factory","noGlobal","getProto","flat","class2type","hasOwn","fnToString","ObjectFunctionString","support","nodeType","isWindow","preservedScriptAttributes","nonce","noModule","DOMEval","script","toType","jQuery","selector","isArrayLike","jquery","num","pushStack","elems","ret","prevObject","elem","eq","even","grep","_elem","odd","copyIsArray","deep","expando","isReady","msg","proto","Ctor","isEmptyObject","globalEval","makeArray","invert","callbackExpect","guid","Sizzle","Expr","getText","isXML","tokenize","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","list","booleans","whitespace","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","nodeName","dir","els","seed","nid","groups","newSelector","newContext","getElementById","getElementsByTagName","getElementsByClassName","qsa","testContext","scope","toSelector","qsaError","cacheLength","markFunction","assert","el","addHandle","attrHandle","siblingCheck","cur","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","matchIndexes","namespaceURI","hasCompare","subWindow","top","attachEvent","className","createComment","getById","getElementsByName","attrId","getAttributeNode","tmp","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","operator","check","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","activeElement","hasFocus","tabIndex","checked","selected","selectedIndex","_matchIndexes","radio","checkbox","file","image","submit","combinator","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","filters","parseOnly","soFar","preFilters","compiled","_name","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","prev","sibling","has","targets","closest","prevAll","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","createOptions","_","flag","Identity","Thrower","ex","adoptValue","noValue","fail","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","empty","disable","lock","fireWith","Deferred","tuples","always","deferred","newDefer","tuple","returned","progress","notify","onProgress","maxDepth","depth","special","that","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","master","updateFunc","rerrorNames","readyException","readyList","completed","readyWait","wait","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","camelCase","acceptData","Data","uid","hasData","dataPriv","dataUser","rbrace","rmultiDash","removeData","_removeData","dequeue","startLength","_queueHooks","clearQueue","defer","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","display","adjustCSS","valueParts","tween","adjusted","maxIterations","currentValue","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","hide","toggle","rcheckableType","rtagName","rscriptType","div","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","nodes","htmlPrefilter","createTextNode","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","trigger","Event","handleObjIn","eventHandle","handleObj","namespaces","origType","elemData","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","load","noBubble","click","beforeunload","returnValue","isDefaultPrevented","defaultPrevented","relatedTarget","isSimulated","altKey","bubbles","cancelable","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","offsetX","offsetY","screenX","screenY","toElement","focus","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","udataOld","udataCur","pdataOld","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","before","after","replaceWith","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","swap","old","rboxStyle","curCSS","computed","minWidth","maxWidth","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","offsetWidth","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","computedVal","delta","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","origName","isCustomProp","setProperty","scrollboxSizeBuggy","left","margin","padding","border","expand","expanded","propHooks","run","percent","eased","duration","step","fx","scrollTop","scrollLeft","linear","swing","cos","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","prefilters","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","complete","timer","tweener","prefilter","speed","speeds","fadeTo","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","delay","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","addClass","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","isSuccess","conv2","current","conv","responseFields","dataFilter","throws","active","lastModified","etag","isLocal","processData","contentType","accepts","json","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeadersNames","strAbort","overrideMimeType","finalText","crossDomain","hasContent","ifModified","beforeSend","success","nativeStatusText","modified","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","xhrSuccessStatus","xhrSupported","cors","errorCallback","xhrFields","onload","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","animated","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","cb","pre","_traverse","post","arrayKeywords","propsKeywords","escapeJsonPtr","skipKeywords","enum","exclusiveMaximum","exclusiveMinimum","ls","localStorage","ms","lzstring","setItem","getItem","removeItem","this_data","_keys","_compressAll","iteratee","newArr","_timeouts","Locally","compress","deconfig","decompressFromUTF16","_rebuildConfig","_saveConfig","_remove","compressToUTF16","_get","ttl","eval","_getType","_setTimeout","_clearTimeout","scan","returnString","persist","expire","Store","LZString","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","character","compressToBase64","_compress","decompressFromBase64","_decompress","compressed","compressToUint8Array","uncompressed","buf","Uint8Array","TotalLen","current_value","decompressFromUint8Array","decompress","compressToEncodedURIComponent","decompressFromEncodedURIComponent","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","resetValue","getNextValue","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","entry","moment","processRelativeTime","withoutSuffix","isFuture","dd","MM","yy","defineLocale","months","monthsShort","monthsParseExact","weekdays","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","LL","LLL","LLLL","calendar","sameDay","sameElse","nextDay","lastDay","relativeTime","future","past","ss","mm","hh","ww","dayOfMonthOrdinalParse","ordinal","dow","doy","monthsShortDot","monthsParse","monthsRegex","monthsShortRegex","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","invalidDate","period","standalone","isFormat","llll","meridiemParse","meridiemHour","meridiem","isLower","eras","since","abbr","eraYearOrdinalRegex","eraYearOrdinalParse","ll","lll","webpackContext","req","__webpack_require__","webpackContextResolve","hookCallback","setHookCallback","hasOwnProp","isObjectEmpty","getOwnPropertyNames","arrLen","createUTC","strict","createLocalOrUTC","utc","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","parsedParts","some","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","getSetMillisecond","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","Function","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","mom","_calendar","zeroFill","forceSign","absNumber","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","lastIndex","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","aliases","addUnitAlias","shorthand","lowerCase","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p3","p4","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","mod","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","min","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","getFullYear","createUTCDate","UTC","firstWeekOffset","fwd","dayOfYearFromWeeks","weekday","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","baseConfig","locales","localeFamilies","commonPrefix","minl","normalizeLocale","chooseLocale","names","loadLocale","isLocaleNameSane","aliasedRequire","oldLocale","_abbr","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekdayOverflow","curWeek","GG","W","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","weeks","days","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","offsetFromString","chunkOffset","chunk","cloneWithOffset","model","setTime","local","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","createAdder","isAdding","invalid","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","anchor2","adjust","wholeMonthDiff","anchor","keepOffset","datetime","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","_eras","localeErasParse","eraName","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","toFixed","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME_SECONDS","TIME_MS","fmtShort","msAbs","fmtLong","plural","isPlural","A","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","C","updater","F","isReactComponent","setState","forceUpdate","isPureReactComponent","J","__self","__source","defaultProps","$$typeof","_owner","N","_status","_result","U","V","transition","ReactCurrentDispatcher","ReactCurrentBatchConfig","ReactCurrentOwner","Children","only","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","act","cloneElement","createContext","_currentValue","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","render","isValidElement","lazy","_payload","_init","memo","startTransition","unstable_act","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useSyncExternalStore","useTransition","CSS_CUSTOM_PROPERTY_PREFIX","CSS_CUSTOM_PROPERTIES","DEFAULT_THEME_MODE","DATE_FORMAT","CONTAINER_ID","LOGIN_CONTAINER_ID","ALERT_CONTAINER_ID","GALLERY_CONTAINER_ID","TACK_CONTAINER_ID","HEADER_CONTAINER_ID","MODAL_CONTAINER_ID","POLL_INTERVAL","PASSIVE_ALERT_DELAY","Config","getPrefixedLogger","Assets","Base","rpc","fetchSpecificMethod","methods","setStartPosition","pager","itemTotal","createSearchObject","_startPosition","refetch","startPosition","_maxItems","chunkSize","useFacetedSearch","_filterMode","searchFacets","filterMode","elementTypes","sortField","matchCriteria","elementSubType1s","elementSubType2s","elementValue1s","elementValue2s","elementValue3s","selectedValues","saveSearch","notifyType","ignoreStat","fetchSpecificAssets","assetIds","fetchAssetCount","fetchingAssetCount","getAssetIds","getAssetObjects","getMostViewedAssets","customConfig","MOST_VIEWED_SIZE","getRecentlyUploadedAssets","RECENTLY_UPLOADED_SIZE","createPDF","pdf","templateName","titleStr","hiRes","pdfExportPreset","createPDFWithOptions","cpwo","portrait","cols","rows","attrLines","highRes","categorize","categorizeArgs","targetCat","action","moveToCategory","move","_addToCategory","targetCategory","removeFromCategory","_moveToCategory","reserve","parsers","facetedResult","assets","assetId","lastChunk","systemFacetLabels","systemFacets","facets","facet","label","asset","Model","inCurrentCart","assetCount","destroyAll","dispatcher","aID","at","isSortable","customSearchType","findWhere","elementType","reFetch","hasChunkSize","oldChunkSize","oldMaxItems","fetch","setSort","curPage","pageSize","toAssetSet","AssetSetModel","assetSetTypes","i18n","models","addToCategory","catId","cat","CategoryModel","addChunk","syncing","lengthBefore","loadingChunk","checkValidFacetSearchType","facetSupports","facetSelected","gotoPage","duplicateQueryPolicy","validSearchType","stopListening","listenTo","hasRouteContext","_usingFacetedSearch","turnOff","unescapeURI","routeContext","escapeURI","__name__","CHUNK_SIZE","PAGE_SIZE","reserveCount","SearchRulesCollection","addSubCollection","sortableChange","PagerModel","pagesToDisplay","routesToPage","pagerRoutes","addSubModel","useFS","USE_FACETED_SEARCH","fsOpts","facetedSearchOptions","searchProperties","origFetch","getAssetObjectIds","invalidate","silent","cacheSelection","trailing","newCat","categoryId","isSyncing","_rpc","portalAttrIds","Netx","includes","facetOb","unescapedHash","isMobile","EQUAL_GRID","LIST_TYPE","LIST_TYPES_ENABLED","LIST_TYPE_DEFAULT","ASSETS_CONTAINER_ID","DETAILS_CONTAINER_ID","VERSIONS_CONTAINER_ID","ZOOM_CONTAINER_ID","ZOOM_CANVAS_ID","ZOOM_SCALE","ZOOM_TOLERANCE","DOCVIEW_CONTAINER_ID","CHECKIN_CONTAINER_ID","CHECKIN_BROWSE_BUTTON_ID","EXPIRATION_ASSET_LIST_ID","EXPIRATION_HEADER_ID","TAGPANEL_CONTAINER_ID","VIEW_UPLOAD_BUTTON_ID","REPURPOSE_CONTAINER_ID","DETAIL_TABS","DETAIL_TABS_DEFAULT","REIMPORT_ENABLE","CHECKIN_ENABLE","REPURPOSE_ENABLE","DOWNLOAD_ON_CHECKOUT","CART_ASSETS_MINI","SEARCH_ASSETS_MINI","DRAGGABLE","FETCH_ON_SAVE","CATEGORY_ASSETS_MINI","POST_LOGIN_HASH_NAME","CUSTOM_LOGIN_TRIGGERED_NAME","TICKLE_SESSION","CartAssets","xhrTrackProgress","xhrLoadingMessages","facetedSearch","searchAssetBeanObjects","xhrLoadedMessages","addAssetsToCart","tidyAssetList","addFacetedSearchToCart","archiveCartAssets","createObjectPackage","deleteCartAssets","expireCartAssets","fetchAll","removeAssetsFromCart","setAssetsInCart","unarchiveCartAssets","listenToOnce","cartResultParser","clearPages","inspection","archive","locationId","app","storageLocations","archiveArgs","setAssetCount","expireAssets","dateStr","expirationTime","userInputToExpirationTime","expirationArgs","fetchCurrentCart","page","fetchSavedCart","allSavedCarts","getCart","savedCart","setCartId","findCartModel","pollRemoveAssets","assetsList","checkPolling","_polling","pollUntil","pluck","intersection","removeAssets","setAssets","elementValue1","batch","unarchive","unarchiveTypes","unarchiveArgs","unexpireAssets","Load","cartId","lastCartRoute","addAsset","savedCarts","updatedSavedCart","SAVED_CARTS_ID","CART_GALLERY_ID","CART_ACTIONS_BAR","CART_HEADER_ID","SAVED_CART_HEADER_ID","SAVED_CART_GALLERY_ID","SHARE_SHOW_OWNER","SHARE_SYNC_IMMEDIATE","ROUTE_SAVED_CART","Categories","getCategories","getCategoryObjects","getDashboardRecentCategories","currentCat","parentid","fetchChildren","where","searchString","_getCategoriesById","_getDashboardRecentCategories","categories","category","recentCategories","parentId","getCategoriesById","activeParent","previous","newCatId","_getCategoriesByName","ACTIVE_CLASS","ASSETS_MINI","TREE_NODE_OPEN_CLASS","TREE_NODE_CLOSED_CLASS","TREE_ID","CATEGORY_HEADER_ID","CATEGORY_LIST_ID","ASSET_LIST_ID","ASSET_LIST_FACETED","BREADCRUMB_ID","CATEGORY_DETAIL_ID","CATEGORY_EDIT_ID","MODAL","categoryid","displayCategoriesAsAssets","repositorydirectory","tree","TREE_MAX_DEPTH","CategoryDetailsData","idAttribute","byteCount","fileCount","subCategoryCount","AttributeProfileAttribute","attributeid","cleared","AttributeProfileAttributes","comparator","AttributeProfile","setAttributeProfileForFolder","folderId","removeAttributeProfileFromFolder","parseAndSave","attrIds","assetAttributes","templateId","ATTRIBUTE_MULTIPLE_VALUE_TYPES","csvToArray","appendable","attrObj","save","populateSelectedAttributes","attributeModels","_attrModel","attrModel","orderby","isEmptyValue","attributesSelected","attributeProfile","profileId","UserLevel","ADMIN","Locales","ROUTE","PROFILE_ACTION","ADD","EDIT","iconOpts","BASE_EVENT","ATTRIBUTE_PROFILE_EVENT","AttributeProfiles","getAttributeProfiles","filterStr","sorter","getSortDTO","getPageDTO","getAttributeProfileForFolder","SorterModel","order","sortableFields","Category","assetLabel","categoryAttributes","creationDate","hasContents","moduserlabel","parentCategoryName","permissionMatrix","userId","breadcrumb","clientAttrs","setCategoryObject","getCategoryData","assetsToTransfer","getCategoryBreadcrumbs","cid","getCategoryByPath","getCategoryDetailsData","catData","pick","attributeProfileId","selectedAttributeProfile","omit","Backbone","ES6Model","garbageCollect","getAttributeProfile","attributeProfiles","assetsAddedToCategory","allows","AssetModel","childAdded","childRemoved","catid","without","childrenChanged","isOpen","childCategories","CategoryTreeNodesCollection","close","recursive","childId","parentCat","getDetails","detailsData","getDirectLink","origin","isChildOf","isParentOf","moved","childrenUpdated","searchRules_listAll","AssetSearhRulesCollection","elementSubType1","updated","compact","debounce","addCollectionReference","isNew","newParent","oldParentId","newParentId","crumb","allCrumbs","useCrumbs","overflowCrumbs","crumbWidth","adj","rootCrumb","rootIdx","$c","crumbOverflow","something","analytics","google","enabled","trackingId","collections","maxNumberDisplay","copyright","tagline","CMSAction","portalId","modDate","userLevel","link","contentLabel","gooAttrs","unpackAttrs","parseLink","linkType","contentId","edit","isURL","register","RegisterLegacyAction","isUniqueLink","makeLink","MakeLink","linkTypes","cmsLinks","pageId","currentPortalPages","slug","CMSBlock","buttonDownload","buttonCart","linkUrl","linkTitle","displayAssetName","imageSize","itemImageSize","listTitle","listButtonDownload","listButtonCart","displayListItemName","contentIds","contentLabels","_parse","assetModel","cartCollection","categoryCollection","cId","CategoriesCollection","CategoryAssetsCollection","getCategoryAssets","block","CartAssetsCollection","setType","newType","CMSPage","blocks","CMSBlocksCollection","template","displayTitle","getPageForId","getPageForPortal","makeSlug","fetchById","fetchByPortalSlug","setModDate","setBlocks","me","blocksCollection","debouncedSave","suggestion","isUniqueSlug","cms","portal","pages","blockCollection","toCollection","parseBlocks","CMSBlockModel","HOME_ROUTE","REQUIRE_LOGIN","coreConfig","currentPortal","requireLogin","canEmail","assetSet","mediaServicesEnabled","mediaServicesAvailable","mediaServices","share","brightCove","youTube","collectionNotEmpty","getViewCollection","canUseGridEditor","allowsDelete","collectionl","categoryAndAssetCanEdit","helpUrl","getPreference","checkIsMobile","notMobile","readOnly","getViewModel","reviewEnabled","assetProjectEnabled","getPublicProperty","asBoolean","publicProperties","isTrue","BatchJobs","batchJobs","BatchJobsCollection","setGlobal","LabelValues","lvb","isFalse","PublicProperties","Socket","autoConnect","autoReconnect","clientDisconnected","connected","connectionDurations","connectionRetries","disconnectEvents","lastConnectTime","lastDisconnectTime","maxConnectionRetries","reconnectCount","subscriptions","connect","whenConnected","disconnected","socket","WebSocket","onclose","onmessage","onopen","resetMaxConnectRetries","disconnect","getConnectionLifetime","reconnect","roomName","overrideSubscriptionCheck","inSubscriptions","simulateFail","throttle","websocketProtocol","legacyWebsocket","SocketModel","websocket","BatchJob","completeUrl","details","estimatedTime","increment","jobTitle","percentComplete","runningTime","runningTimeLabel","secondsToReload","shareData","appendMetadata","errorCatastrophe","errorMessage","fileSize","hoursToLive","realPath","sizeUncompressed","warningMessage","hasResult","getShare","addEventStr","eventStr","eventStrs","trackJob","triggerProgress","pollInterval","triggerComplete","triggerError","eventArgs","additionalArgs","isRejected","messageCode","messageArr","LabelValue","Pager","currentPage","pageTotal","startIndex","adjustTotal","calculatePages","changedCurrentPage","firstPage","pageDTO","startId","lastPage","nextPage","prevPage","setStartIndex","firstIndex","Progress","GetDefaults","Sorter","sortableOrders","preferredFetchMethod","completions","attributeHistory","return","savedSearch","categoryName","user","sharedResource","permission","semanticObjects","semanticObjectTypes","cart","metadataLookup","vocabulary","vocabularyValue","MINIMUM_USER_LEVEL","MANAGER","assetExpirationEnabled","canExpireAsset","assetExpires","canModifyAssetExpiration","currentUserMeetsUserLevel","PermissionMatrixName","DELETE","canUnexpireAsset","assetExpirationToDateString","expirationDate","CONSUMER","ASSET_RESYNC_MINIMUM_USER_LEVEL","PRODUCER","AssetPref","assetDefaults","alphaChannel","attributeIds","attributeNames","attributeValues","attributePermissions","audioBitRate","audioChannelCount","audioChannelLayout","audioSampleRate","bitDepth","categoryPaths","checkout","checkoutUserLabel","colorProfile","commitAttributes","constituentType","constituentIds","creationdate","dpi","fileFormatFamily","fileheight","filesize","filetypelabel","filewidth","fileSize2","filetype","flvPreview","geoLocationLabel","iiifManifestUrl","importDate","importUserLabel","latitude","locationContext","locationid","longitude","md5sum","moduserid","metadataAvailable","moddate","proofAvailable","previewUrl","previewHeight","previewWidth","rating","relatedAvailable","repurposeAvailability","reviewAvailable","statDeliveries","statPreviews","templatable","templateCustomizable","thumb","thumbUrl","timeScale","versionIds","viewIds","viewNames","xmpPacketStatus","AssetXMPPacketStatus","NOT_STORED_NO_XMP","zoomAvailable","attribute1","attribute2","attribute3","attribute4","attribute5","attribute6","attribute7","attribute8","attribute9","attribute10","attribute11","attribute12","attribute13","attribute14","attribute15","attribute16","hasChildren","imageid","metadata","assetIsPresent","AssetStatus","ONLINE","TEMP","NEARLINE","canResyncAsset","MODIFY","canZoomAsset","assetNotCheckedOut","CHECKOUT","canCheckIn","checkedOutBy","userProfile","canCheckOut","canCreateShareLinkFromAsset","isAssetCheckedOut","DOWNLOAD","canCreateEmbedLinkFromAsset","canCreatePdfFromAsset","canDeleteAsset","canDownloadAsset","canLockAsset","canOrganizeAsset","canPublishAsset","mediaServiceName","mediaServiceIsAuthenticated","canReimportAsset","canUnlockAsset","checksumEnabled","CHECKSUM_ENABLED","int","positive","union","literal","importuserid","PermissionMatrixSchema","nativeEnum","LabelValueSchema","AssetTaskName","errorCode","tasks","AssetProjectPref","ENABLED","canManageAssetProject","ASSET_VERSION_BASE_EVENT","AssetVersionEvent","getViewObjectsForAssetEndpoint","getViewObjectsForAsset","client","NetxQueryClient","requestParams","getResponseResults","setViewDataEndpoint","setViewData","assetView","viewId","useGetViewObjectsForAssetReactQuery","queryKeyParams","useQuery","queryKey","queryFn","refetchOnWindowFocus","AssetViewName","AssetViewSchema","imageId","autoTaskId","fileTypeId","fileWidth","fileHeight","nonempty","or","fileTypeLabel","fileSizeLabel","viewMetadataLabels","viewMetadataValues","getViewPath","assetEndpoint","AttributeDatum","clearChanges","invoke","getChanges","hasValueChanged","getValue","attributeDataModel","getValues","attrData","getReadOnly","getWritable","metadataLookupComplete","setValue","autofilled","resetValues","AssetAttributeData","addAttribute","attribute","attributeDatum","getAttributeTemplate","getTemplate","changes","updateAttributeDatum","AttributeDatumCollection","newValue","AssetAttributeDatum","getAssetAttributes","setAssetAttributes","useDefaultValues","trackBatchJob","assetAttributeDataModel","attrDataModel","getWritableAttributes","getWrtiable","getReadOnlyAttributes","hasAttributeValues","foundValue","_values","hasWritableAttributes","unescapeAttributeName","isValueWritable","parseOutValue","batchJob","Attribute_Date","attributeTypeIds","truncateAt","parseInValue","dateToHTML","padStart","getDecimalCount","whatDecimalSeparator","decimals","parseNumber","language","example","Intl","NumberFormat","cleanPattern","cleaned","toLocaleString","digits","useGrouping","dp","Attribute_Number","noLocale","maxDecimal","numberType","numberTypes","maximumFractionDigits","minimumFractionDigits","bytes","decimalPlaces","spec2","isNull","decimalIndex","decimalCount","Attribute_Select","Attribute_Tag","isCSV","Attribute_Semantic","semantic","Attribute_Text","parsedInValue","parseURL","truncatedValue","urls","cutoffUrl","valLength","lastIndexOf","parseURLS","isAppendable","isTrueMultivalue","Attribute_Textarea","textarea","Models","BaseModel","DateModel","NumberModel","SelectModel","SemanticModel","TagModel","TextModel","TextareaModel","getPortal","isBrandPortal","Attributes","getAttributeTemplates","modelId","omitSystem","attrA","attrB","attributeTemplateId","indexA","indexB","ATTRIBUTE_SYSTEM_ID","keepAlphabetical","aName","bName","aOrderby","bOrderby","categoryIds","getAttributeTemplatesForCategoryContext","getAllAttributeIds","getAttributeObjects","writableOnly","getDataSetList","setAttributeTemplateOrder","parseAndCorrect","datasets","filteredAttrs","objectTypes","ENFORCE_ATTRIBUTE_IDS","attrName","mandatory","getToken","system","attributeAdded","attributeChanged","attributeRemoved","deleteAttributes","deleteMultiple","filterByObjectType","objectType","isForObjectType","filterByTypes","editableOnly","editableSystemAttributes","typeIds","filterByHistory","trackHistory","getAttributeDatum","defaultValues","AssetAttributeDatumCollection","record","multivalue","typeName","getTypeName","getIdByName","getMandatory","withoutDefaultValues","withoutSystem","isMandatory","hasDefaultValue","getSystemAttributes","hasMandatory","updatedVocabulary","vocabularyId","vocabularyAttributes","PendingAsset","PendingAssets","assetImporting","plupload","cancelled","uploaded","setupDoneListener","newId","oldId","assetEnteringCategory","task","assetLeavingCategory","findByAsset","filterByAsset","findByCategory","filterByCategory","pendingAssets","PendingAssetsCollection","AudioFormatFamilyType","AUDIO","DocumentFormatFamilies","LAYOUT","ImageFormatFamilies","CAMERA_RAW","IMAGE","RAW","VECTOR","VideoFormatFamilyType","VIDEO","VideoFormatFamilies","MediaFormatFamilies","AssetConstituents_","ucfirst","AssetConstituents_Clips","AssetConstituent_Keyframe","AssetConstituents_Keyframes","AssetConstituent_Layer","AssetConstituents_Layers","AssetConstituent_Page","pageNumber","AssetConstituents_Pages","searchPDFPages","filtered","originalPages","clearSearch","ConsituentCollections","clips","Clips","keyframes","Keyframes","layers","Layers","Pages","AssetConstituents","subCollection","displayed","constituentProps","things","resp","Asset","titleAttribute","xhrExcludeProgress","activatingTemplate","deactivatingTemplate","audioUrl","videoUrl","zoomUrl","expireAsset","importAsset","addCategory","setAssetCategoryLink","removeCategory","linkCategory","setCategory","setCategories","repurpose","manualRepurpose","repurposeOtherIds","repurposeMethods","repurposeValues","resync","assetInCurrentCart","_getCarts","cancelCheckout","checkPendingTasks","checkStatus","getConstituents","getProcessListForUser","recordViewed","makeZoomTiles","activateAdBuilderTemplate","deactivateAdBuilderTemplate","cats","linkCategories","hasAudio","hasVideo","hasZoom","canZoom","fetchConstituents","constituents","getSystemAttribute","getAttributeId","getAttributeValue","getTokenString","getWaveformJSON","tokenStr","hasFormatFamily","hasMultimedia","arrayToCsv","setupAssetCheckinListeners","UPLOAD","progressMessage","newVersion","setupAssetTaskListeners","oldAssetId","tempIconPattern","previewNow","patienceExhausted","timesPolled","realProgress","importTasks","setupCustomThumbnailListeners","eventPrefix","updating","pluploader","setMediaUrls","setChecksum","unexpire","setCombo","vals","getCombo","moveCategory","isDocument","isPDF","isImage","isLocked","unlock","cacheBuster","dateFromAsset","bumpModdate","dateToAsset","perm","matrixIndex","matrixNames","cacheInMediaRich","mediarichCacheUrl","responseJSON","deleteWait","importAttributes","collisionStrategy","rename","messageType","objectContext","repurposeId","repurposeDownloadOverride","AssetVersionModel","ProgressModel","AssetConstituentsCollection","versions","userLabel","_previousAttributes","clip","AssetConstituent","lowresUrl","rebuildType","rebuildCount","setDisplay","currentAsset","canCreateLink","clipAttributes","AssetConstituent_Clip","endTime","keyframeReady","_prepareDownload","constituent","progressUuid","getDuration","pretty","pad","getManualRepurposeOptions","getPrettyRange","prettyRange","downloadOptions","AssetSet","getAssetIdsInSets","getDownloadWarnings","getDownloadOptions","prepareDownload","archiveName","justification","DownloadOptionsCollection","Rpc","displayedDownloadOptionTypes","downloadOption","warnings","messageCount","assetsUnavailableCount","progressMessages","objectId","getCurrentCart","getTotal","allSavedSearches","hasOption","toShareable","sType","ShareableModel","downloadOptionTypes","AssetVersion","memoId","memoText","shortMemoText","reactivateAssetVersion","assetVersion","Attribute","groupIds","hasPermissions","keyDatasets","permissioned","pulldownOptions","restrictedUserLevel","semanticTypeId","spec1","targetDatasets","templateid","userid","attributeOptions","getAttributeVocabulary","metadataDatasetLookup","addObjectType","getAttributeOptions","attrOptions","placeholder","getLabel","dontEscape","getOptions","getSafeName","toCamelCase","getSortFieldName","escapeAttributeName","getTypeLabel","historyEnabled","attributeHistoryEnabled","isFlexible","isNativeMultivalue","nativeMultivalueTypes","ATTRIBUTE_MULTIPLE_VALUE_DEPRECATED_TYPES","ATTRIBUTE_EDITABLE_TYPES","supportsFacets","AttributeType","TEXT","TEXTAREA","SELECT","NUMBER","SEMANTIC","TAG","updatableFields","permissionsEnabled","removeObjectType","ATTRIBUTE_FACET_TYPES","toggleMandatory","toggleFacet","trackingHistory","resourceName","multivalueTypes","resource","AttributeData","addValue","createValueModelAttributes","valuesCollection","canManage","canEdit","originalValue","hasValue","attrTemplate","populateValuesCollection","useOriginalValues","dontMerge","removeValue","valueModel","CreateFromTemplate","AttributesCollection","metadataLookupEnabled","lastModel","typeNames","AudioTask","FFFViewTask","INDDPageTask","IWorkPageTask","KeyframesTask","MetadataTask","OfficePageTask","PDFPageTask","PostImportTask","PreviewTask","RelatedAssetTask","SWFTask","ThumbnailTask","VideoPreviewTask","WatermarkTask","ZoomTask","renderableChanges","UNKNOWN","OFFLINE","IMPORT_IN_PROGRESS","enableTest","constituents_keyframes","constituents_layers","constituents_pages","matrix","fileinfo","links","overview","permissions","preview","projects","publicLinks","reviews","usage","views","attributeSet","multiselect","hierarchical","defaultAttributeColumns","systemAttributes","editable","facetAttributeSupport","warning","textTypes","consituentClipsEnabled","assetHasAudio","isMediaFileTypeAsset","assetHasPdf","PDF","assetHasVideo","PRESENT_STATUSES","getAssetFileSizeLabel","createAssetObject","overrides","isDocumentFileTypeAsset","isImageFileTypeAsset","isVideoFileTypeAsset","getGeneralAssetFileType","specific","getDocumentFileTypeAssetInfoLabel","pageCount","getMediaFileTypeAssetInfoLabel","secondsToHms","getImageFileTypeAssetInfoLabel","getAssetFileTypeInfoLabel","ASSET_DEFAULT_ICON_TEST","isDefaultIcon","routeToAsset","appRouter","navigate","ATTRIBUTE_HISTROY_MINIMUM_LEVEL","AttributeHistoryPref","canViewAttributeHistory","supportsAsset","assetData","emptyValueSymbol","AttributePref","ATTRIBUTE_TYPE_NAME","ATTRIBUTE_ACTION","APPEND","CLEAR","OVERWRITE","REMOVE","SET_IF_BLANK","ATTRIBUTE_APPENDABLE_TYPES","enumToValues","ATTRIBUTE_NUMBER_SPEC_2_TYPE","WHOLE","ONE_DECIMAL","TWO_DECIMALS","THREE_DECIMALS","UNLIMITED","SORTABLE","ATTRIBUTE_NUMBER_MAX_DECIMAL","ATTRIBUTE_OBJECT_TYPE","ASSET","CLIP","ATTRIBUTE_SYSTEM","ASSET_ID","CATEGORY_PATHS","CHECKSUM","CREATION_DATE","DIMENSIONS","EXPIRE_DATE","FILE","FILE_FORMAT_FAMILY","FILE_SIZE_2","FILE_TYPE_LABEL","HEIGHT","IMPORT_DATE","MOD_DATE","MOD_USER","NAME","PATH","SMART_LABELS","THUMB_PATH","WIDTH","TYPE_LABELS","HIERARCHICAL","SYSTEM_ATTRIBUTE_LABELS","SHARE","NEW","attributeTemplates","attributeHistoryCompletion","autocompletions","attributesChanged","SAMLService","idAttributes","SAMLServices","Session","getAdvertisedSamlServices","getPublicMethods","browserInfo","browserLimits","chrome","crios","firefox","phantomjs","safari","trident","browserOk","loginMsg","loginMsgClass","publicMethods","sessionKey","loggedInAsOtherUser","samlServices","SAMLServicesCollection","getSamlServices","testAuthentication","testSession","testToken","_tickle","triggerAnAPIError","authenticated","requiresLogin","isAuthenticatedAsPublicUser","isPublicUser","canAuthenticateAsPublicUser","getCurrentPortalProp","localStore","getSessionDuration","defaultMinutes","UserPref","SESSION_DURATION","getSessionTickleInterval","testAjax","dataContext","jsonrpc","parseData","browserTestOk","tem","ua","appName","appVersion","limits","getCookie","Cookies","setCookie","cname","cvalue","exdays","toUTCString","deleteCookie","getKey","setKey","deleteKey","deleteToken","setToken","userSource","INTERNAL","login","shouldBeTickling","authConfig","sessionTicklers","resetTickler","tickler","stopTickling","startTickling","noInitialTickle","setInterval","tickle","clearInterval","beTickling","lastTickled","resetLogoutTimer","inactivityStartTime","timeoutMinutes","visibilityState","postponeSessionTimeout","expireSession","sessionExpired","updatePortalContext","visibilityStateChanged","sessionDuration","unset","configured","jqX","getUserLevel","SavedCarts","getSharedResourcesForUser","isFiltered","getAllCarts","getUserCarts","fetchBeans","modeFilters","fetchBeansForUser","addAssets","getCarts","addCurrentCart","addSearch","createNewCarts","carts","newCarts","getEditableCarts","hasEditableCarts","matchesFilters","SavedCart","setCart","download","duplicateCart","cartName","fetchBean","newCount","contentCount","sharedResourceRoute","AssetSearchRulesCollection","getCartAssets","cartAssets","getRoute","fullUrl","Create","sc","assetsArg","unarchiveTypeIds","temporary","permanent","unarchiveTypeLabels","SavedCartsCollection","favoriteSavedCarts","isFavorite","CategoryAssets","checkPendingImportEvent","checkPendingImportList","checkCancelledImportEvent","_pendingAssets","pendingAsset","addPendingAsset","pending","checkPendingCategoryComingEvent","checkPendingCategoryGoingEvent","setCategoryId","fetchArgs","lastCategoryRoute","CategoryTreeNodes","setCategoryOrder","_fetchChildren","_fetchCategory","_searchCategoryName","_getCategoryObjects","_setCategoryOrder","sortBy","orderType","parseCats","resetCategories","cloneFrom","disabledCategories","selectedCategory","closeAll","fetchCategory","getSelectedCategoryModel","filteredCategories","parseSearchCats","toAdd","neededCats","_listenId","searchCategoryName","_response","orderObj","setCategoryOrderType","updateTopLevelCategories","topLevelCategories","topLevelId","debouncedFetchTopLevel","changedParent","ancestors","portalDefaults","carousel","color1","color2","contactMessage","disableWebfonts","displayCatDescriptions","enableSignIn","favicon","font","googleAnalyticsEnabled","googleAnalyticsId","headerLinks","homeRoute","logo","logoutUrl","menus","templates","template1","template2","template3","template4","template5","template6","template7","template8","template9","template10","template11","searchPlaceholder","singleSignOnURL","ssoLoginEnabled","ssoLoginLabel","termsAndConditions","theme","NO_ACCESS","watermark","watermarkPos","BrandPortalWatermarkPosition","BOTTOM_LEFT","BrandPortalActionType","BRAND_PORTAL_ACTION_GOO_KEYS","BrandPortalActionSchema","goo","stringToJSONSchema","assetName","BrandPortalAttributeContext","BrandPortalAttributeSchema","brandPortalId","gt","BrandPortalSchema","SchemaValidationErrorLabel","REQUIRED","gte","refineUrl","defaultItems","BrandPortalSchemaCheck","ctx","addIssue","fatal","ZodIssueCode","superRefine","BrandPortalField","keyof","SYSTEM_BRAND_PORTALS_SORTABLE_FIELDS","SortSchema","SystemBrandPortalsSortableField","SYSTEM_BRAND_PORTALS_DEFAULT_SORT_ORDER","SortOrder","ASCENDING","BRAND_PORTAL_MENU_GOO_KEYS","BrandPortalFilterSchema","makeOptionalPropsNullable","partial","BrandPortalMenuSchema","BrandPortalPageBlockDisplayAssetName","BrandPortalPageBlockImageSize","BrandPortalPageBlockType","BRAND_PORTAL_PAGE_BLOCK_GOO_KEYS","BrandPortalPageBlockSchema","BrandPortalPageBlockRawSchema","BRAND_PORTAL_PAGE_GOO_KEYS","BrandPortalPageSchema","getCurrentPortal","getPortalNameFromUrl","_url","CMSBlocks","getBlocks","fetchBlocks","blockIds","updateOrder","CMSMenu","fetchMenuForPortal","removeAction","removed","categoryAssetList","divider","ATTRIBUTE_CONTEXT","DETAIL","SORT","trimLeft","trimRight","tinycolor","color","rgb","inputToRGB","_originalInput","_r","_g","_b","_roundA","_format","_gradientType","gradientType","_ok","ok","stringInputToObject","isValidCSSUnit","rgbToRgb","convertToPercentage","hsvToRgb","hslToRgb","boundAlpha","bound01","rgbToHsl","hue2rgb","rgbToHsv","rgbToHex","allow3Char","hex","pad2","rgbaToHex","allow4Char","convertDecimalToHex","rgbaToArgbHex","_desaturate","amount","hsl","toHsl","clamp01","_saturate","_greyscale","desaturate","_lighten","_brighten","toRgb","_darken","_spin","hue","_complement","polyad","_splitcomplement","_analogous","slices","_monochromatic","hsv","toHsv","modification","isDark","getBrightness","isLight","getOriginalInput","getFormat","getAlpha","getLuminance","RsRGB","GsRGB","BsRGB","setAlpha","toHsvString","toHslString","toHexString","toHex8","toHex8String","toRgbString","toPercentageRgb","toPercentageRgbString","toName","hexNames","toFilter","secondColor","hex8String","secondHex8String","formatSet","formattedString","hasAlpha","_applyModification","lighten","brighten","darken","saturate","greyscale","spin","_applyCombination","analogous","complement","monochromatic","splitcomplement","triad","tetrad","fromRatio","newColor","equals","mix","rgb1","rgb2","readability","c1","c2","isReadable","wcag2","wcag2Parms","validateWCAG2Parms","mostReadable","baseColor","colorList","includeFallbackColors","bestColor","bestScore","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","burntsienna","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","flip","flipped","isOnePointZero","processPercent","isPercentage","parseIntFromHex","convertHexToDecimal","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","rgba","hsla","hsva","hex3","hex6","hex4","hex8","named","parms","CMSPortal","categoryModel","fontModel","groupModel","logoModel","faviconModel","watermarkModel","setStyleProperty","cmsConfig","gooeyObj","clientGoo","serverGoo","subModelThings","modelClass","fetchPortalByName","fetchSubModels","updateSubModel","subId","parseAltColor","primeAlt","tinyPrime","primeBrightness","CMSPortalModel","CMSActions","getActionsForPortal","manageActionFromPageSave","form","pageModel","createActionForPage","typePage","newAction","randomChars","destroyAction","actionOb","fetchPortal","unpacked","currentPortalActions","CMSActionCollection","CMSMenus","getMenusForPortal","deleteActionSuccess","removeActionFromMenu","currentPortalMenus","CMSMenuCollection","CMSPages","getPagesForKeyword","getPagesForPortal","settingCurrent","currentId","setCurrentPage","getPageForAction","getPageIdFromAction","actionIdToDelete","isInteger","destroyPageFromAction","setFromCurrentPage","currentPageModel","parseInPages","pageAutocomplete","searchPageContent","searchStr","searchTerm","CMSPageCollection","currentPortalPage","CMSPageModel","NetxThemeMode","NETX_THEME_MODES","NetxThemePref","Severity","SEVERITIES","getBrowserPreferedThemeMode","matchMedia","DARK","LIGHT","THEME_MODES","netxThemeModeToThemeMode","appAuthenticated","tokenAccess","DEFAULT","ConstituentsPref","ConstituentType","CLIPS_ENABLED","enhancedDispatcher","eventName","prettyLogStyles","bold","dim","italic","underline","overline","inverse","strikethrough","blackBright","redBright","greenBright","yellowBright","blueBright","magentaBright","cyanBright","whiteBright","bgBlack","bgRed","bgGreen","bgYellow","bgBlue","bgMagenta","bgCyan","bgWhite","bgBlackBright","bgRedBright","bgGreenBright","bgYellowBright","bgBlueBright","bgMagentaBright","bgCyanBright","bgWhiteBright","formatTemplate","hideUnsetPlaceholder","templateString","ansiColorWrap","placeholderValue","styleWrap","prevValue","thisStyle","defaultStyle","stylePrettyLogs","formatNumberAddZeros","addNumber","urlToObject","searchParams","jsonStringifyRecursive","Set","stylize","stylizeNoColor","_extend","showHidden","colors","customInspect","stylizeWithColor","formatValue","isBoolean","styleType","isRegExp","re","objectToString","isError","arrayToHash","formatArray","recurseTimes","visibleKeys","formatProperty","formatError","primitive","formatPrimitive","braces","reduceToSingleString","clonedOrigin","clonedAdd","formatWithOptions","inspectOptions","tempStr","lastPos","nextChar","tempArg","tempNum","showProxy","tempInteger","tempFloat","regexp","getCallerStackFrame","getErrorTrace","getMeta","transportJSON","transportFormatted","prettyFormatLogObj","prettyFormatErrorObj","runtime","browser","pathRegex","logLevelId","logLevelName","stackDepthLevel","hideLogPositionForPerformance","parentNames","stackLineToStackFrame","pathResult","fullFilePath","fileNameWithLine","fileColumn","fileLine","filePath","filePathWithLine","pathParts","maskedArgs","errorStackStr","prettyErrorStackTemplate","stackFrame","placeholderValuesError","errorName","errorStack","prettyErrorTemplate","logMetaMarkup","logArgs","logErrors","logErrorsStr","prettyInspectOptions","BaseLogger","logArgsAndErrorsMarkup","minLevel","overwrite","maskValuesOfKeys","_mask","thisLogObj","logObj","_recursiveCloneAndExecuteFunctions","toLogObj","_toLogObj","logObjWithMeta","addMeta","_addMetaToLogObj","formatMeta","metaProperty","formatLogObj","_prettyFormatLogObjMeta","attachedTransports","transportLogger","attachTransport","getSubLogger","subLoggerSettings","maskValuesOfKeysCaseInsensitive","_recursiveCloneAndMaskValuesOfKeys","Map","baseObject","_cloneError","maskPlaceholder","modifiedSource","regEx","maskValuesRegEx","isObjectOrArray","shallowCopy","clonedLogObj","_toErrorObject","argumentsArrayName","cloned","nativeError","hideLogPositionForProduction","logObjMeta","prettyLogTemplate","placeholderValues","prettyLogTimeZone","getHours","getMinutes","getSeconds","getMilliseconds","dateInSettingsTimeZone","parentNamesString","prettyErrorParentNamesSeparator","prettyErrorLoggerNameDelimiter","addPlaceholders","Runtime","SILLY","TRACE","DEBUG","INFO","WARN","ERROR","FATAL","dateIsoStr","nameWithDelimiterPrefix","nameWithDelimiterSuffix","Logger","silly","trace","debug","info","isBrowser","isBrowserBlinkEngine","isSafari","isFirefox","Router","routes","queryConfig","defaultOptions","queries","networkMode","refetchOnMount","retry","queryClient","QueryClient","QueryError","sessionErrors","_post","I18nLanguage","I18nSupportedLocale","I18N_LANGUAGE_ALIASES","I18N_SUPPORTED_LANGUAGES","rejector","consoleLogger","concreteLogger","_len2","_key2","_len3","_key3","_len4","_key4","debugOnly","moduleName","baseLogger","EventEmitter","observers","observer","rej","makeString","getLastOfPath","Empty","cleanKey","canNotTraverseDeeper","setPath","pushPath","getPathWithDefaults","defaultData","deepExtend","_entityMap","chars","looksLikeObjectPath","nsSeparator","keySeparator","possibleChars","ki","deepFind","endsWith","joinedPath","getCleanedCode","ResourceStore","ns","defaultNS","ignoreJSONStructure","addNamespaces","removeNamespaces","getResource","addResource","addResources","resources","addResourceBundle","pack","removeResourceBundle","hasResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","hasLanguageSomeTranslations","postProcessor","processors","addPostProcessor","translator","processor","checkedLoadedFor","Translator","services","changeLanguage","exists","interpolation","extractFromKey","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","interpolator","nestingRegexp","translate","lastKey","overloadTranslationOptionHandler","returnDetails","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","appendNamespaceToMissingKey","parseMissingKeyHandler","defaultVariables","skipInterpolation","nestBef","skipOnVariables","nb","interpolate","na","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","extracted","fallbackNS","needsZeroSuffixLookup","shouldUseIntlApi","needsContextHandling","codes","hasLoadedNamespace","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","ordinalPrefix","contextKey","contextSeparator","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","capitalize","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","cleanCode","isSupportedCode","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","nonIntlVersions","intlVersions","suffixesOrder","zero","two","few","many","createRules","numbers","plurals","PluralResolver","compatibilityJSON","PluralRules","addRule","getRule","needsPlural","resolvedOptions","pluralCategories","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","getSuffixRetroCompatible","noAbs","simplifyPluralSuffix","returnSuffix","deepFindWithDefaults","Interpolator","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","handleFormat","interpolationkey","missingInterpolationHandler","todos","safeValue","todo","matchedVar","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","parseFormatStr","formatName","formatOptions","optStr","currency","range","createCachedFormatter","Formatter","DateTimeFormat","relativetime","RelativeTimeFormat","ListFormat","addCached","mem","formatted","valOptions","formatParams","removePending","pendingCount","Connector","backend","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queueLoad","languages","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","loadedKeys","fcName","tried","prepareLoading","loadOne","fallbackValue","isUpdate","clb","initImmediate","preload","partialBundledLanguages","tDescription","transformOptions","bindMemberFunctions","inst","mems","I18n","modules","external","isInitialized","isClone","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","storeApi","storeApiChained","initializedStoreOnce","loadResources","usedCallback","resolvedLanguage","setResolvedLanguage","reloadResources","li","lngInLngs","_this2","isLanguageChangingTo","setLngProps","setLng","cacheUserLanguage","detect","getFixedT","keyPrefix","_this3","fixedT","resultKey","setDefaultNamespace","lastLng","loadNotPending","loadState","precheck","preResult","loadNamespaces","loadLanguages","preloaded","newLngs","rtlLngs","cloneInstance","forkResourceStore","mergedOptions","membersToCopy","addQueryString","queryString","paramName","queryStringParams","ActiveXObject","customHeaders","getDefaults","loadPath","addPath","allowMultiLoading","parsePayload","Backend","loadUrl","fieldContentRegExp","serializeCookie","maxAge","httpOnly","sameSite","cookieOptions","nameEQ","ca","cookie$1","lookupCookie","cookieMinutes","cookieDomain","querystring","query","lookupQuerystring","hasLocalStorageSupport","localStorageAvailable","testKey","lookupLocalStorage","hasSessionStorageSupport","sessionStorageAvailable","sessionStorage","lookupSessionStorage","navigator$1","userLanguage","htmlTag","lookupFromPathIndex","subdomain","lookupFromSubdomainIndex","caches","excludeCacheFor","convertDetectedLanguage","Browser","detectors","i18nOptions","lookupFromUrlIndex","addDetector","detector","detectionOrder","detected","detectorName","cacheName","backendOptions","i18nReady","i18nInitialized","initializeI18n","i18nextXHRBackend","i18nextBrowserLanguageDetector","jqueryI18next","I18nSupportedLocaleLabel","ENGLISH","FRENCH","GERMAN","JAPANESE","getAvailableLocales","localesPref","localesFilter","i18nLocaleCompare","Collator","currentLanguage","_i18n","listen","handleLoaded","ProgressReportWarningObjectSchema","percentLastLogged","notifyOnComplete","progressMessageCount","warningObject","DATE_INVALID","DATE_MUST_BE_IN_THE_FUTURE","INVALID_VALUE","URL_REGEX","refine","createZodLiterals","literals","editEffectsSortOrder","originalData","updatedData","caseInsensitiveStringIncludes","editRemovesFromFilter","shape","ZodString","getDefaultFilters","filterableFields","accum","getSortField","defaultSortField","geSortOrder","defaultSortOrder","DESCENDING","newProps","entries","ZodOptional","literalSchema","jsonSchema","NEVER","apiVersion","apiEndpoint","baseDir","themeName","proxyApiEndpoint","proxyApi","uploadEndpoint","uploads3Endpoint","assetFileApiEndpoint","loginBackgroundEndpoint","loginBackground","watermarkEndpoint","customCssPropertiesEndpoint","customCssProperties","logoLightEndpoint","logoDarkEndpoint","logoLight","logoDark","themeLogo","actionsToOrderedActions","disableSort","actionGroup","Boolean","ordered","unordered","performLegacyAction","actionStr","actionArgs","FindLegacyAction","fake","wrapper","route","spawnNewWindow","spaces","csv","tl","foo","silenceEvent","simulateClickBody","MouseEvent","testTocuh","threshhold","innerWidth","openDownloadLink","enumToObject","enumObject","typedEntries","isDateInThePast","totalSeconds","totalHours","hms","remainderSeconds","timeToPTFormat","Participants","resourceId","participants","participant","addParticipant","filterByType","getParticipant","removeParticipant","PERMISSION_MATRIX_NAMES","PermissionMode","Participant","Permission","attributeScope","userSelector","emails","none","userIds","categoryScope","resourceScopes","addSelectorItems","existingIds","newIds","getResourceType","hasSelectors","removeSelectorItems","removedIds","toggleSelectAll","selectAll","PermissionParticipant","PermissionsParticipants","addByPermission","toSet","permissionId","getByIds","permissionsCollection","addPermission","groupsSynced","labelsUpdated","removeByPermission","userSelectorAllToggled","allSelected","userSelectorAddedGroups","userSelectorAddedUsers","users","usersSynced","getLexicographicName","GroupsCollection","UsersCollection","Permissions","uniquePerms","toRemove","toSave","existingSelectors","newGroupIds","newUserIds","removePromises","addPromises","savePromises","allPromises","PermissionResource","getPermissions","getResourceLabel","resourceLabels","getTitle","hasParticipants","permissionsUpdated","PermissionsCollection","AssetPermissionTypeLabel","READ","permissionTypes","AssetPermissionPrincipalLabel","ANY","USER","principalTypes","AssetPermissionTargetLabel","targetTypes","AssetPermissionPermitTypeLabel","PERMIT","DENY","permissionIds","permissionLabels","principalIds","principalLabels","targetLabels","typeLabels","typeTypes","obj2","modes","delete","specialModes","PermissionMatrixEntrySchema","SearchRules","fetchFileTypes","fetchFormatFamilies","rxElement","searchRules","elIdx","elPart","ft","fileTypes","ff","fileFormatFamilies","changeOption","oldValue","ignoreQuirks","searchObject","getSearchObject","elementSubType2","elementValue2","elementValue3","fetchSearchCriteria","initProperties","userPrefKeys","preferredSortOrder","loadFromStr","small","base64","sALOstrMap","realName","smallName","savedSearchId","SearchRule_Asset","attributeTemplate","searchTargetIsMetadata","isRange","isRangeCompatible","searchApi","elementValue1Label","dateSubTypes1_default","SearchFacetOption","facetId","facetLabel","newstate","systemValue","systemFacetOptions","SearchFacetOptions","getSelected","localeCompare","SearchFacet","parseOptions","facetTitle","isCollection","SearchFacetOptionsCollection","selectedOptions","SearchFacetsSelected","facetOption","selectedFacets","facetsCollection","SearchFacets","hasSelection","sOpts","SearchFacetsSelectedCollection","SearchRules_Assets","strTosALO","toStr","useThisSort","searchObj","files","assetCustomConfig","SearchFacetsCollection","SavedSearches","getSearchesForUser","savedSearches","SavedSearchesCollection","favoriteSavedSearches","savedSearchBean","SavedSearch","criteria","setSearch","duplicateSearch","searchName","SearchRule","searchProps","sortFields","dimensions","relevance","fileType","folder","modificationDate","notificationTypes","smartLabelsEnabled","ShareMediaServicesPref","mediaService","DownloadOption","family","requiresApproval","requiresJustification","organizeContentsBy","engine","exportOptions","Collection","getPDFTemplateOptions","lvbsToObject","setOptions","objectToLvbs","addOptions","addObject","contactSheet","DownloadOptions","filterTypes","originalOption","proxyOptions","viewOptions","processOptions","presetProcess","metadataOptions","contactSheetOptions","vppOptions","getOption","hasManualRepurposeOptions","parseSelectedDownloadOptions","selectedDownloadOptions","proxyDownloadOption","viewDownloadOption","selectedDownloadOptionModels","manualRepurposeOpts","proxies","proxyName","viewName","processes","processId","sheetOption","toPick","assetListSortField","assetListSortOrder","metadataOption","setId","historical","historicalOption","setUserSelectedDownloadOptions","SharedResources","fetchForUser","hasModeFilter","selectedMode","resetModeFilter","setModeFilter","Shareable","aType","SharedResource","participantCount","sendMessageBySharedResource","setFavorite","favorite","fullBean","getParticipants","sendMessage","toggleFavorite","ParticipantsCollection","templateCustomization","EmailFrequency","UserSource","UserPermission","UserGroupItemType","UserImportOption","userPrefs","getUserId","publicUserLogin","PUBLIC_USER_LOGIN","setPreference","setUserPreference","Group","memberIds","getGroupObjects","ignoreUsers","getUsers","groupId","autolist","downloadUserData","getByName","getUserIds","setUserIds","fetchUsers","getAutocompleteLabel","Groups","getGroups","getUsersForGroup","addedGroup","createNewGroups","existingPromises","newGroups","_group","deleteGroups","deepObjectExtend","UserPrefs","getUserPreferences","attributeDisplay","saveUserPreferences","setUserPreferenceValues","_setUserPreference","pref","setPreferenceLocally","prefs","lvbsToDeepObject","prefObj","prefToSet","setUserPreferences","queueDeferred","getDotPath","dotPath","availableLocales","localeFilter","getListPreference","prefType","defaultType","_pref","_rememberChanged","_allChangedAttributes","setUserPreferenceValue","isEmpty","UserProfile","Users","searchUsers","getUserObjectsForGroup","_getUsersForCart","getUsersLength","password1","password2","defaultSearchParams","isEqual","getUsersForCart","exportGroupId","exportGroup","USER_LEVEL","BROWSER","IMPORTER","DIRECTOR","resetUrl","address1","address2","city","country","groupNames","name1","name2","name3","name4","organization","phone1","phone2","phone3","phone4","propertyValues","zip","minimumPasswordLength","passwordChange","passwordRequest","registration","strictPasswordInstructions","isMe","getSelf","_canCreateAPITokens","canCreateAPITokens","authenticate","getGroupsForUser","getSessionKeyForUser","getUserUploadCategory","logout","logoutUser","passwordReset","requestPasswordReset","setUserGroups","userSelfRegistration","resultBool","profile","isType","userTypes","isTypeOrGreater","userLogin","loginObj","autogeneratePassword","passObj","newPassword","registerNewUser","userObj","loginAs","decodeUserToken","loginTokenOb","decodedTokenArr","atob","strictMsg","pat","leadIn","i18nString","fullName","getPropertyObject","formData","propName","setPropertyArrays","modelAttrs","isOurAttr","LDAP","SAML","PING_ONE","LIVE_CONNECT","NETX","sync","retrigger","_show","_val","destroyed","dataName","selectpicker","nxVal","boxesToVal","enableIf","hasActiveTypeahead","tt","$menu","menu","$node","hasCollision","aTop","aLeft","bTop","bLeft","outerHeight","outerWidth","isBound","isHidden","isModal","nxIgnores","dep","change","nxData","nxIgnore","uniq","nxUnignore","newVal","nxRemoveData","valToBoxes","zIndex","purge","allowed","tapToClick","$elem","router","Collections","Routers","ShareableTypes","NetxURL","Views","initializedModules","initializingModules","initializeModule","newModules","routesToAdd","finished","initialize","addRoutes","history","initialized","customPropertyPrefix","currentProperties","currentThemeMode","fetchedCSS","_setStyleProperty","removeProperty","getThemeMode","USER_SELECTED","getStyleProperty","getLoginBackgroundUrl","setMetaThemeColor","simpleKey","setThemeMode","themeChanged","navigation","ExtendLegacyAction","existingAction","actionKey","BBCollection","filtering","removeCollectionReference","modelRemoved","modelAdded","ES6Collection","_isModel","__isCollection__","callsByName","templateProps","_byId","addToLocalStorage","localStorageKey","checkMaxStore","keyName","storeOptions","parseLocalStorageModelOut","stored","maxStore","removeFromLocalStorage","clearLocalStorage","deepClone","getModelIdFromEvent","getLocalStorageSize","myTotal","loadLocalStorage","parseLocalStorageModelIn","modelChanged","makeUniqueName","setFilterStr","subscriptionMessage","dto","toSelectedItemFromAutocomplete","additionalAttrs","modelProto","batchJobComplete","batchJobError","batchJobProgress","getRestLoadedMessage","getRestLoadingMessage","pausePolling","resumePolling","checkReachedBeginning","reachedBeginning","checkReachedEnd","reachedEnd","initializeLazyLoad","lazyStartIndex","lowestIndex","highestIndex","startIndexUpdated","lazyLoadItems","lazyLoadedForward","removeSubCollection","removeSubModel","subModels","subCollections","garbageCollected","syncedOnce","deferLocalStorage","Menu","isMenu","__isMenu__","flatten","toActions","actionName","protectObjectProxy","Proxy","wrapError","getDefaultsFromSchema","BBModel","Schema","ValidateSchema","primary","isModel","__isModel__","permitted","packAttrs","clientSide","ungooeyObj","validationError","serverAttrs","patch","getIndex","doneTest","pollMethod","pollMethodOptions","_stopPolling","_pausedPolling","loop","stopPolling","arg0","retVal","isPromise","TitleAttribute","idAttr","SetSchema","_unsavedChanges","changedAttributes","BASE64_ROUTES_BASES","routeIsBase64","correctBase64RouteIfNeeded","routeInterceptors","History","_isRouting","isRouting","ES6Router","AppRouter","addRouteInterceptor","removeRouteInterceptor","back","home","defaultRoute","routeChanged","validUnauthenticatedRoutes","oldRoute","_routeToRegExp","_extractParameters","_route","execute","executeRoute","reroute","frag","replaceState","routePattern","inCategory","exitRoute","targetRoute","sendOpts","pageRoute","oldHash","newHash","maxScale","byteUnits","getFunctionBody","fstring","getInlineWorker","blob","Blob","Worker","createObjectURL","Modernizr","resizeToFit","fitDimensions","newDimensions","aspectRatio","maxHeight","crumbs","currentIndex","itemsToDisplay","ellipsis","crumbArray","totalItems","firstItem","firstAdjacentItem","lastAdjacentItem","adjacentCount","matchURL","toBoolean","lv","_dotExpand","levels","_dotCollapse","rk","dateToDAM","dateToLocalTimezone","omitTime","dateToAssetUTC","dateFromString","getMonthString","getDayString","formatNumber","fromIndex","toIndex","millisecondsToDateStr","millisecondsToFullDateStr","millisecondsToTimeStr","lcfirst","newWordCharacters","stripCharacters","capitalizedArray","newStr","$1","camelCaseToUnderscore","camelCaseToDash","camelCaseToTitle","_str","targetClass","classOptions","toJQ","jqObj","tidyAssets","getMenuPosition","mouseX","mouseY","boundsX","boundsY","menuWidth","menuHeight","tp","selectorPosition","shadeColor","hexToRgb","parseQuery","decodeURI","mapKeys","newKey","viewData","isAppView","viewModel","performAction","normalizeFileType","fileTypePieces","getGenericIconUrl","getIsoLongDateFromIsoShortDate","getIsoShortDateFromIsoLongDate","getNormalizedHexColor","registerBackboneEvent","purgeEls","purgeCount","xl","subexp","typeOf","buildExps","isIRI","ALPHA$$","DIGIT$$","HEXDIG$$","PCT_ENCODED$","SUB_DELIMS$$","RESERVED$$","UCSCHAR$$","IPRIVATE$$","UNRESERVED$$","SCHEME$","USERINFO$","DEC_OCTET_RELAXED$","IPV4ADDRESS$","H16$","LS32$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","IPV6ADDRESS$","ZONEID$","IPV6ADDRZ_RELAXED$","IPVFUTURE$","IP_LITERAL$","REG_NAME$","HOST$","PORT$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","PATH_NOSCHEME$","PATH_ROOTLESS$","PATH_EMPTY$","QUERY$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","NOT_SCHEME","NOT_USERINFO","NOT_HOST","NOT_PATH","NOT_PATH_NOSCHEME","NOT_QUERY","NOT_FRAGMENT","ESCAPE","UNRESERVED","OTHER_CHARS","PCT_ENCODED","IPV4ADDRESS","IPV6ADDRESS","URI_PROTOCOL","IRI_PROTOCOL","slicedToArray","sliceIterator","maxInt","tMin","tMax","skew","damp","initialBias","initialN","regexPunycode","regexNonASCII","regexSeparators","baseMinusTMin","stringFromCharCode","error$1","mapDomain","ucs2decode","counter","basicToDigit","codePoint","digitToBasic","digit","adapt","numPoints","decode","inputLength","bias","oldi","baseMinusT","fromCodePoint","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","basicLength","handledCPCount","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","handledCPCountPlusOne","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","qMinusT","punycode","SCHEMES","pctEncChar","chr","pctDecChars","il","_c","c3","_normalizeComponentEncoding","components","decodeUnreserved","decStr","scheme","userinfo","_stripLeadingZeros","_normalizeIPv4","address","_matches","_normalizeIPv6","_matches2","_address$toLowerCase$2","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","fields","longestZeroFields","allZeroFields","lastLongest","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","iri","reference","schemeHandler","unicodeSupport","domainHost","toASCII","_recomposeAuthority","uriTokens","$2","RDS1","RDS2","RDS3","RDS5","removeDotSegments","im","toUnicode","authority","absolutePath","resolveComponents","skipNormalization","tolerant","baseURI","relativeURI","schemelessOptions","uriA","uriB","escapeComponent","unescapeComponent","handler$1","isSecure","wsComponents","handler$2","_wsComponents$resourc2","handler$3","ATEXT$$","VCHAR$$","SOME_DELIMS$$","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","handler$4","mailtoComponents","unknownHeaders","hfields","hfield","toAddrs","_x","_xl","_x2","_xl2","addr","toAddr","atIdx","localPart","URN_PARSE","handler$5","urnComponents","nss","uriComponents","handler$6","uuidComponents","getSnapshot","previousBackbone","emulateHTTP","emulateJSON","addMethod","defaultVal","addUnderscoreMethods","Class","modelMatcher","Events","eventSplitter","eventsApi","internalOn","listening","_events","onApi","listeners","listeningTo","_listeningTo","thisId","objId","offApi","_callback","onceMap","offer","triggerApi","objEvents","allEvents","triggerEvents","a1","a2","a3","cidPrefix","changing","_changing","_pending","hasChanged","previousAttributes","urlError","pairs","_reset","tail","singular","_removeModels","merged","toMerge","modelMap","sortable","sortAttr","_prepareModel","_addReference","orderChanged","_removeReference","previousModels","callbackOpts","_onModelEvent","prevId","collect","foldl","inject","reduceRight","foldr","include","take","drop","shuffle","sample","partition","groupBy","countBy","indexBy","findLastIndex","View","_ensureElement","delegateEventSplitter","$el","_removeElement","setElement","undelegateEvents","_setElement","delegateEvents","_createElement","_setAttributes","methodMap","_method","textStatus","errorThrown","_bindRoutes","optionalParam","namedParam","splatParam","escapeRegExp","optional","checkUrl","routeStripper","rootStripper","pathStripper","atRoot","getSearch","matchRoot","rootPath","decodeFragment","getHash","getFragment","_usePushState","_wantsHashChange","hashChange","_hasHashChange","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","iframe","iWindow","contentWindow","_checkUrlInterval","detachEvent","_updateHash","__super__","define","require","undef","amd","returnExportsGlobal","namespaceDelimiter","bindAll","oldModelConst","oldCollectionConst","newConst","my_ctxt","signature","argsExpected","invokedArguments","defaultExceptionHandler","oldSync","RpcError","ParseError","ProtocolError","MethodError","ServerValidationError","Http404Error","Http500Error","DefinitionError","parseReply","reply","replyParsed","callsById","validationData","rpcMethod","decodeArguments","onError","unregisterCall","handleExceptions","triggerQuery","parsedParameters","_query","isAjax","otherXhr","authParam","xhrCompletedProgress","trackProgress","_xhrComplete","ajaxArgs","jXhr","fixtures","registerCall","checkParameters","wasFunction","parsedParams","checkParameter","checkMethods","deeperNested","hadArguments","decodedArguments","localdef","exception","exceptionHandler","function","Base64","_keyStr","chr1","chr2","chr3","enc1","enc2","enc3","enc4","_utf8_encode","_utf8_decode","utftext","featureName","enableClasses","docElement","modElem","mStyle","inputElem","smile","omPrefixes","cssomPrefixes","domPrefixes","tests","inputs","injectElementWithStyles","testnames","docOverflow","fakeBody","background","testMediaQuery","mq","msMatchMedia","currentStyle","isEventSupported","TAGNAMES","isSupported","_hasOwnProperty","setCss","setCssAll","str1","str2","testProps","testDOMProps","testPropsAll","ucProp","webforms","HTMLDataListElement","inputElemType","WebkitAppearance","checkValidity","feature","bound","WebGLRenderingContext","DocumentTouch","offsetTop","postMessage","openDatabase","backgroundColor","textShadow","str3","backgroundImage","offsetLeft","sheet","styleSheet","cssRules","canPlayType","ogg","h264","webm","mp3","wav","m4a","applicationCache","createElementNS","svg","createSVGRect","addTest","supportsHtml5Styles","supportsUnknownElements","html5","reSkip","saveClones","expanID","expandoData","addStyleSheet","getElements","getExpandoData","createElem","canHaveChildren","tagUrn","shivMethods","createFrag","shivDocument","shivCSS","hasCSS","_version","_prefixes","_domPrefixes","_cssomPrefixes","hasEvent","testProp","testAllProps","testStyles","ipad","ipod","iphone","webkitAudioContext","mozAudioContext","oAudioContext","msAudioContext","AudioContext","Element","parentElement","NodeList","HTMLCollection","flattened","ArrayProto","ObjProto","SymbolProto","supportsArrayBuffer","supportsDataView","DataView","nativeIsArray","nativeKeys","nativeCreate","nativeIsView","_isNaN","_isFinite","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","MAX_ARRAY_INDEX","restArguments","isElement","tagTester","isSymbol","nodelist","Int8Array","isFunction$1","hasObjectTag","hasStringTagBug","isIE11","isDataView","ie10IsDataView","getInt8","isDataView$1","has$1","isArguments","isArguments$1","isFinite$1","isNaN$1","constant","createSizePropertyCheck","getSizeProperty","sizeProperty","shallowProperty","getByteLength","isBufferLike","typedArrayPattern","isTypedArray","isTypedArray$1","getLength","emulatedSet","collectNonEnumProps","nonEnumIdx","isMatch","_$1","_wrapped","toBufferView","bufferSource","byteOffset","tagDataView","aStack","bStack","deepEq","areArrays","byteLength","aCtor","bCtor","ie11fingerprint","weakMapMethods","forEachName","hasName","commonInit","mapTail","mapMethods","setMethods","isMap","isWeakMap","isSet","isWeakSet","createAssigner","keysFunc","extendOwn","ctor","baseCreate","tap","toPath$1","toPath","deepGet","identity","optimizeCb","argCount","accumulator","baseIteratee","mapObject","currentKey","propertyOf","times","createEscaper","escaper","testRegexp","replaceRegexp","escapeMap","_escape","_unescape","templateSettings","evaluate","noMatch","escapes","escapeChar","bareIdentifier","oldSettings","variable","fallback","idCounter","_chain","executeBound","sourceFunc","boundFunc","callingContext","boundArgs","callArgs","flatten$1","memoize","hasher","later","leading","throttled","_now","immediate","passed","debounced","_args","compose","createPredicateIndexFinder","sortedIndex","low","mid","createIndexFinder","predicateFind","keyFinder","createReduce","guard","contextPath","lastComputed","rand","behavior","pass","reStrSymbol","keyInObj","otherArrays","isSorted","arrays","argsLength","unzip","chainResult","mixin","allExports","__proto__","transpose","toPrimitive","toPropertyKey","FocusManager","onFocus","onSubscribe","cleanup","setEventListener","onUnsubscribe","hasListeners","_this$cleanup","_this$cleanup2","focused","setFocused","isFocused","focusManager","infiniteQueryBehavior","onFetch","fetchFn","_context$fetchOptions","_context$fetchOptions2","_context$fetchOptions3","_context$fetchOptions4","_context$state$data","_context$state$data2","refetchPage","fetchOptions","fetchMore","pageParam","isFetchingNextPage","isFetchingPreviousPage","oldPages","oldPageParams","pageParams","newPageParams","addSignalProperty","_context$signal","_context$signal2","queryHash","buildNewPages","fetchPage","manual","queryFnContext","getNextPageParam","getPreviousPageParam","shouldFetchFirstPage","hasNextPage","nextPageParam","hasPreviousPage","previousPageParam","defaultLogger","Mutation","mutationId","mutationCache","getDefaultState","scheduleGc","updateCacheTime","cacheTime","addObserver","clearGcTimeout","removeObserver","optionalRemove","continue","_this$retryer$continu","_this$retryer","retryer","_this$mutationCache$c3","_this$mutationCache$c4","_this$options$onSucce","_this$options2","_this$mutationCache$c5","_this$mutationCache$c6","_this$options$onSettl","_this$options3","_this$mutationCache$c","_this$mutationCache$c2","_this$options$onMutat","_this$options","_this$mutationCache$c7","_this$mutationCache$c8","_this$options$onError","_this$options4","_this$mutationCache$c9","_this$mutationCache$c10","_this$options$onSettl2","_this$options5","executeMutation","_this$options$retry","mutationFn","variables","onFail","failureCount","onPause","onContinue","retryDelay","restored","onMutate","onSuccess","onSettled","failureReason","isPaused","onMutationUpdate","notifyManager","createNotifyManager","transactions","notifyFn","batchNotifyFn","flush","originalQueue","batchCalls","setNotifyFunction","setBatchNotifyFunction","onlineEvents","OnlineManager","onOnline","online","setOnline","isOnline","onLine","onlineManager","Query","abortSignalConsumed","initialState","fetchStatus","setData","newData","dataUpdatedAt","updatedAt","setStateOptions","isActive","getObserversCount","isStale","isInvalidated","getCurrentResult","isStaleByTime","staleTime","_this$retryer2","shouldFetchOnWindowFocus","cancelRefetch","_this$retryer3","shouldFetchOnReconnect","revert","cancelRetry","_this$options$behavio","_this$retryer4","continueRetry","abortController","revertState","fetchMeta","_this$cache$config$on","_this$cache$config","_this$cache$config$on2","_this$cache$config2","isFetchingOptimistic","_this$cache$config$on3","_this$cache$config3","_this$cache$config$on4","_this$cache$config4","_action$meta","_action$dataUpdatedAt","fetchFailureCount","fetchFailureReason","dataUpdateCount","errorUpdateCount","errorUpdatedAt","onQueryUpdate","initialData","initialDataUpdatedAt","QueryCache","queriesMap","_options$queryHash","getLogger","defaultQueryOptions","getQueryDefaults","queryInMap","arg1","arg2","exact","findAll","MutationCache","defaultMutationOptions","mutationKey","getMutationDefaults","resumePausedMutations","_this$resuming","resuming","pausedMutations","queryCache","queryDefaults","mutationDefaults","mountCount","mount","unsubscribeFocus","unsubscribeOnline","unmount","_this$unsubscribeFocu","_this$unsubscribeOnli","isFetching","isMutating","fetching","getQueryData","_this$queryCache$find","ensureQueryData","arg3","parsedOptions","cachedData","fetchQuery","getQueriesData","queryKeyOrFilters","getQueryCache","setQueryData","prevData","defaultedOptions","setQueriesData","getQueryState","_this$queryCache$find2","removeQueries","resetQueries","refetchFilters","refetchQueries","cancelQueries","cancelOptions","invalidateQueries","_filters$refetchType","refetchType","_options$cancelRefetc","throwOnError","prefetchQuery","fetchInfiniteQuery","prefetchInfiniteQuery","getMutationCache","getDefaultOptions","setDefaultOptions","setQueryDefaults","firstMatchingDefaults","setMutationDefaults","_defaulted","refetchOnReconnect","useErrorBoundary","suspense","QueryObserver","trackedProps","selectError","bindMethods","currentQuery","shouldFetchOnMount","executeFetch","updateTimers","shouldFetchOn","clearStaleTimeout","clearRefetchInterval","notifyOptions","prevOptions","prevQuery","updateQuery","mounted","shouldFetchOptionally","updateResult","updateStaleTimeout","nextRefetchInterval","computeRefetchInterval","currentRefetchInterval","updateRefetchInterval","getOptimisticResult","createResult","shouldAssignObserverCurrentProperties","currentResult","currentResultOptions","currentResultState","trackResult","trackedResult","getCurrentQuery","fetchOptimistic","_fetchOptions$cancelR","staleTimeoutId","_this$options$refetch","refetchInterval","nextInterval","refetchIntervalId","refetchIntervalInBackground","prevResult","prevResultState","prevResultOptions","queryChange","queryInitialState","currentQueryInitialState","prevQueryResult","previousQueryResult","isPreviousData","isPlaceholderData","_optimisticResults","fetchOnMount","fetchOptionally","keepPreviousData","selectFn","selectResult","placeholderData","isLoading","isInitialLoading","isFetched","isFetchedAfterMount","isRefetching","isLoadingError","isRefetchError","nextResult","defaultNotifyOptions","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","shouldLoadOnMount","retryOnMount","optimisticResult","Removable","gcTimeout","newCacheTime","defaultRetryDelay","canFetch","CancelledError","isCancelledError","createRetryer","continueFn","promiseResolve","promiseReject","isRetryCancelled","isResolved","outerResolve","outerReject","shouldPause","pause","continueResolve","canContinue","promiseOrValue","_config$retry","_config$retryDelay","shouldRetry","didContinue","Subscribable","isServer","functionalUpdate","isValidTimeout","timeUntilStale","parseQueryArgs","parseMutationArgs","parseFilterArgs","isQueryKey","matchQuery","stale","hashQueryKeyByOptions","partialMatchKey","matchMutation","hashQueryKey","hashFn","queryKeyHashFn","partialDeepEqual","replaceEqualDeep","isPlainArray","aSize","bItems","bSize","equalItems","shallowEqualObjects","hasObjectPrototype","prot","sleep","scheduleMicrotask","getAbortController","AbortController","replaceData","isDataEqual","structuralSharing","defaultContext","QueryClientSharingContext","getQueryClientContext","contextSharing","ReactQueryClientContext","useQueryClient","QueryClientProvider","Context","createValue","isReset","clearReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","IsRestoringContext","useIsRestoring","ensurePreventErrorBoundaryRetry","errorResetBoundary","useClearResetErrorBoundary","getHasError","ensureStaleTime","willFetch","isRestoring","shouldSuspend","useBaseQuery","Observer","onStoreChange","shouldThrowError","_useErrorBoundary","assertIs","_arg","assertNever","joinValues","assertEqual","arrayToEnum","getValidEnumValues","validKeys","objectKeys","objectValues","checker","jsonStringifyReplacer","objectUtil","mergeShapes","ZodParsedType","getParsedType","nan","bigint","unknown","quotelessJson","ZodError","issues","sub","addIssues","subs","actualProto","setPrototypeOf","_mapper","mapper","issue","fieldErrors","_errors","processError","unionErrors","returnTypeError","argumentsError","curr","formErrors","errorMap","_ctx","invalid_type","received","expected","invalid_literal","unrecognized_keys","invalid_union","invalid_union_discriminator","invalid_enum_value","invalid_arguments","invalid_return_type","invalid_date","invalid_string","startsWith","too_small","inclusive","too_big","invalid_intersection_types","not_multiple_of","not_finite","defaultError","overrideErrorMap","setErrorMap","getErrorMap","makeIssue","errorMaps","issueData","fullIssue","EMPTY_PATH","addIssueToContext","contextualErrorMap","schemaErrorMap","ParseStatus","dirty","mergeArray","arrayValue","INVALID","mergeObjectAsync","syncPairs","pair","mergeObjectSync","finalObject","alwaysSet","freeze","DIRTY","isAborted","isDirty","isAsync","errorUtil","errToObj","ParseInputLazyPath","_cachedPath","_path","handleResult","_error","processCreateParams","invalid_type_error","required_error","iss","ZodType","def","spa","safeParseAsync","_def","safeParse","parseAsync","refinement","nullish","and","brand","describe","isNullable","isOptional","_getOrReturnCtx","parsedType","_processInputParams","_parseSync","_parseAsync","maybeAsyncResult","getIssueProperties","_refinement","setError","refinementData","ZodEffects","ZodFirstPartyTypeKind","effect","ZodNullable","ZodArray","ZodPromise","ZodUnion","incoming","ZodIntersection","defaultValueFunc","ZodDefault","innerType","ZodBranded","catchValueFunc","ZodCatch","catchValue","ZodPipeline","cuidRegex","cuid2Regex","ulidRegex","uuidRegex","emailRegex","emojiRegex","ipv4Regex","ipv6Regex","datetimeRegex","precision","isValidIP","ip","_regex","checks","kind","tooBig","tooSmall","_addCheck","emoji","cuid","cuid2","ulid","isDatetime","isEmail","isEmoji","isUUID","isCUID","isCUID2","isULID","isIP","floatSafeRemainder","valDecCount","stepDecCount","decCount","ZodNumber","lte","setLimit","lt","negative","nonpositive","nonnegative","finite","safe","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","minValue","maxValue","isInt","ZodBigInt","BigInt","ZodBoolean","ZodDate","minDate","maxDate","ZodSymbol","ZodUndefined","ZodNull","ZodAny","_any","ZodUnknown","_unknown","ZodNever","never","ZodVoid","void","exactLength","deepPartialify","ZodObject","newShape","fieldSchema","ZodTuple","_cached","nonstrict","passthrough","augment","_getCached","shapeKeys","extraKeys","catchall","unknownKeys","keyValidator","strip","augmentation","merging","deepPartial","newField","createZodEnum","strictCreate","lazycreate","handleResults","childCtx","getDiscriminator","ZodLazy","ZodLiteral","ZodEnum","ZodNativeEnum","ZodDiscriminatedUnion","discriminator","discriminatorValue","optionsMap","discriminatorValues","mergeValues","bType","bKeys","sharedKeys","newObj","sharedValue","newArray","handleParsed","parsedLeft","parsedRight","itemIndex","ZodRecord","keySchema","keyType","valueSchema","valueType","third","ZodMap","finalMap","ZodSet","minSize","maxSize","finalizeSet","parsedSet","ZodFunction","implement","makeArgsIssue","makeReturnsIssue","returns","parsedArgs","parsedReturns","parameters","returnType","strictImplement","lazySchema","expectedValues","enumValues","Values","Enum","extract","exclude","nativeEnumValues","promisified","sourceType","processed","checkCtx","executeRefinement","createWithPreprocess","preprocess","removeDefault","newCtx","removeCatch","ZodNaN","BRAND","handleAsync","inResult","in","_fatal","late","instanceOfType","stringType","nanType","bigIntType","booleanType","dateType","symbolType","undefinedType","nullType","anyType","unknownType","neverType","voidType","arrayType","strictObjectType","unionType","discriminatedUnionType","intersectionType","tupleType","recordType","mapType","functionType","lazyType","literalType","enumType","nativeEnumType","promiseType","effectsType","optionalType","nullableType","preprocessType","pipelineType","onumber","oboolean","defaultErrorMap","ZodTransformer","ZodSchema","discriminatedUnion","ostring","pipeline","strictObject","transformer","__webpack_module_cache__","moduleId","cachedModule","threw","__webpack_modules__","amdO","__esModule","leafPrototypes","chunkId","miniCssF","hmd","dataWebpackPrefix","needAttach","nc","onScriptComplete","doneFns","toStringTag","nmd","createStylesheet","fullhref","oldTag","linkTag","rel","onLinkComplete","errorType","realHref","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","loadApp","Core","finally"],"sourceRoot":""}